@@ -216,6 +216,25 @@ read_backup(time_t timestamp)
216216 return readBackupControlFile (conf_path );
217217}
218218
219+ /*
220+ * Save the backup status into BACKUP_CONTROL_FILE.
221+ *
222+ * We need to reread the backup using its ID and save it changing only its
223+ * status.
224+ */
225+ void
226+ write_backup_status (pgBackup * backup )
227+ {
228+ pgBackup * tmp ;
229+
230+ tmp = read_backup (backup -> start_time );
231+
232+ tmp -> status = backup -> status ;
233+ write_backup (tmp );
234+
235+ pgBackupFree (tmp );
236+ }
237+
219238/*
220239 * Get backup_mode in string representation.
221240 */
@@ -426,7 +445,8 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
426445 fprintf (out , "block-size = %u\n" , backup -> block_size );
427446 fprintf (out , "xlog-block-size = %u\n" , backup -> wal_block_size );
428447 fprintf (out , "checksum-version = %u\n" , backup -> checksum_version );
429- fprintf (out , "program-version = %s\n" , PROGRAM_VERSION );
448+ if (backup -> program_version [0 ] != '\0' )
449+ fprintf (out , "program-version = %s\n" , backup -> program_version );
430450 if (backup -> server_version [0 ] != '\0' )
431451 fprintf (out , "server-version = %s\n" , backup -> server_version );
432452
@@ -476,17 +496,19 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
476496 fprintf (out , "primary_conninfo = '%s'\n" , backup -> primary_conninfo );
477497}
478498
479- /* create BACKUP_CONTROL_FILE */
499+ /*
500+ * Save the backup content into BACKUP_CONTROL_FILE.
501+ */
480502void
481- pgBackupWriteBackupControlFile (pgBackup * backup )
503+ write_backup (pgBackup * backup )
482504{
483505 FILE * fp = NULL ;
484- char ini_path [MAXPGPATH ];
506+ char conf_path [MAXPGPATH ];
485507
486- pgBackupGetPath (backup , ini_path , lengthof (ini_path ), BACKUP_CONTROL_FILE );
487- fp = fopen (ini_path , "wt" );
508+ pgBackupGetPath (backup , conf_path , lengthof (conf_path ), BACKUP_CONTROL_FILE );
509+ fp = fopen (conf_path , "wt" );
488510 if (fp == NULL )
489- elog (ERROR , "cannot open configuration file \"%s\": %s" , ini_path ,
511+ elog (ERROR , "Cannot open configuration file \"%s\": %s" , conf_path ,
490512 strerror (errno ));
491513
492514 pgBackupWriteControl (fp , backup );
0 commit comments