21
21
#include <time.h>
22
22
#include <unistd.h>
23
23
24
- static pgBackup * read_backup_from_file (const char * path );
25
-
26
- #define BOOL_TO_STR (val ) ((val) ? "true" : "false")
24
+ static const char * backupModes [] = {"" , "PAGE" , "PTRACK" , "FULL" };
25
+ static pgBackup * readBackupControlFile (const char * path );
27
26
28
27
static bool exit_hook_registered = false;
29
28
static char lock_file [MAXPGPATH ];
@@ -208,7 +207,7 @@ catalog_lock(void)
208
207
}
209
208
210
209
/*
211
- * Read backup meta information from BACKUP_CONF_FILE .
210
+ * Read backup meta information from BACKUP_CONTROL_FILE .
212
211
* If no backup matches, return NULL.
213
212
*/
214
213
pgBackup *
@@ -218,9 +217,9 @@ read_backup(time_t timestamp)
218
217
char conf_path [MAXPGPATH ];
219
218
220
219
tmp .start_time = timestamp ;
221
- pgBackupGetPath (& tmp , conf_path , lengthof (conf_path ), BACKUP_CONF_FILE );
220
+ pgBackupGetPath (& tmp , conf_path , lengthof (conf_path ), BACKUP_CONTROL_FILE );
222
221
223
- return read_backup_from_file (conf_path );
222
+ return readBackupControlFile (conf_path );
224
223
}
225
224
226
225
static bool
@@ -274,9 +273,9 @@ catalog_get_backup_list(time_t requested_backup_id)
274
273
/* open subdirectory of specific backup */
275
274
join_path_components (date_path , backups_path , date_ent -> d_name );
276
275
277
- /* read backup information from BACKUP_CONF_FILE */
278
- snprintf (backup_conf_path , MAXPGPATH , "%s/%s" , date_path , BACKUP_CONF_FILE );
279
- backup = read_backup_from_file (backup_conf_path );
276
+ /* read backup information from BACKUP_CONTROL_FILE */
277
+ snprintf (backup_conf_path , MAXPGPATH , "%s/%s" , date_path , BACKUP_CONTROL_FILE );
278
+ backup = readBackupControlFile (backup_conf_path );
280
279
281
280
/* ignore corrupted backups */
282
281
if (backup )
@@ -370,94 +369,83 @@ pgBackupCreateDir(pgBackup *backup)
370
369
}
371
370
372
371
/*
373
- * Write configuration section of backup.in to stream "out".
372
+ * Write information about backup.in to stream "out".
373
+ * TODO improve comments
374
374
*/
375
375
void
376
- pgBackupWriteConfigSection (FILE * out , pgBackup * backup )
377
- {
378
- static const char * modes [] = { "" , "PAGE" , "PTRACK" , "FULL" };
379
-
380
- fprintf (out , "# configuration\n" );
381
- fprintf (out , "BACKUP_MODE=%s\n" , modes [backup -> backup_mode ]);
382
- }
383
-
384
- /*
385
- * Write result section of backup.in to stream "out".
386
- */
387
- void
388
- pgBackupWriteResultSection (FILE * out , pgBackup * backup )
376
+ pgBackupWriteControl (FILE * out , pgBackup * backup )
389
377
{
390
378
char timestamp [20 ];
391
-
392
- fprintf (out , "# result\n" );
393
- fprintf (out , "TIMELINEID=%d\n" , backup -> tli );
394
- fprintf (out , "START_LSN=%x/%08x\n" ,
379
+ fprintf (out , "#Configuration\n" );
380
+ fprintf (out , "backup-mode = %s\n" , backupModes [backup -> backup_mode ]);
381
+ fprintf (out , "stream = %s\n" , backup -> stream ?"true" :"false" );
382
+
383
+ fprintf (out , "\n#Compatibility\n" );
384
+ fprintf (out , "block-size = %u\n" , backup -> block_size );
385
+ fprintf (out , "xlog-block-size = %u\n" , backup -> wal_block_size );
386
+ fprintf (out , "checksum-version = %u\n" , backup -> checksum_version );
387
+
388
+ fprintf (out , "\n#Result backup info\n" );
389
+ fprintf (out , "timelineid = %d\n" , backup -> tli );
390
+ fprintf (out , "start-lsn = %x/%08x\n" ,
395
391
(uint32 ) (backup -> start_lsn >> 32 ),
396
392
(uint32 ) backup -> start_lsn );
397
- fprintf (out , "STOP_LSN= %x/%08x\n" ,
393
+ fprintf (out , "stop-lsn = %x/%08x\n" ,
398
394
(uint32 ) (backup -> stop_lsn >> 32 ),
399
395
(uint32 ) backup -> stop_lsn );
400
396
401
397
time2iso (timestamp , lengthof (timestamp ), backup -> start_time );
402
- fprintf (out , "START_TIME= '%s'\n" , timestamp );
398
+ fprintf (out , "start-time = '%s'\n" , timestamp );
403
399
if (backup -> end_time > 0 )
404
400
{
405
401
time2iso (timestamp , lengthof (timestamp ), backup -> end_time );
406
- fprintf (out , "END_TIME= '%s'\n" , timestamp );
402
+ fprintf (out , "end-time = '%s'\n" , timestamp );
407
403
}
408
- fprintf (out , "RECOVERY_XID= " XID_FMT "\n" , backup -> recovery_xid );
404
+ fprintf (out , "recovery-xid = " XID_FMT "\n" , backup -> recovery_xid );
409
405
if (backup -> recovery_time > 0 )
410
406
{
411
407
time2iso (timestamp , lengthof (timestamp ), backup -> recovery_time );
412
- fprintf (out , "RECOVERY_TIME= '%s'\n" , timestamp );
408
+ fprintf (out , "recovery-time = '%s'\n" , timestamp );
413
409
}
414
410
411
+ /* TODO rename the field? */
415
412
if (backup -> data_bytes != BYTES_INVALID )
416
- fprintf (out , "DATA_BYTES=" INT64_FORMAT "\n" ,
417
- backup -> data_bytes );
418
- fprintf (out , "BLOCK_SIZE=%u\n" , backup -> block_size );
419
- fprintf (out , "XLOG_BLOCK_SIZE=%u\n" , backup -> wal_block_size );
420
- fprintf (out , "CHECKSUM_VERSION=%u\n" , backup -> checksum_version );
421
- fprintf (out , "STREAM=%u\n" , backup -> stream );
422
-
423
- fprintf (out , "STATUS=%s\n" , status2str (backup -> status ));
413
+ fprintf (out , "data-bytes = " INT64_FORMAT "\n" , backup -> data_bytes );
414
+
415
+ fprintf (out , "status = %s\n" , status2str (backup -> status ));
424
416
if (backup -> parent_backup != 0 )
425
417
{
426
418
char * parent_backup = base36enc (backup -> parent_backup );
427
- fprintf (out , "PARENT_BACKUP= '%s'\n" , parent_backup );
419
+ fprintf (out , "parent-backup-id = '%s'\n" , parent_backup );
428
420
free (parent_backup );
429
421
}
430
422
}
431
423
432
- /* create BACKUP_CONF_FILE */
424
+ /* create BACKUP_CONTROL_FILE */
433
425
void
434
- pgBackupWriteConf (pgBackup * backup )
426
+ pgBackupWriteBackupControlFile (pgBackup * backup )
435
427
{
436
428
FILE * fp = NULL ;
437
429
char ini_path [MAXPGPATH ];
438
430
439
- pgBackupGetPath (backup , ini_path , lengthof (ini_path ), BACKUP_CONF_FILE );
431
+ pgBackupGetPath (backup , ini_path , lengthof (ini_path ), BACKUP_CONTROL_FILE );
440
432
fp = fopen (ini_path , "wt" );
441
433
if (fp == NULL )
442
434
elog (ERROR , "cannot open configuration file \"%s\": %s" , ini_path ,
443
435
strerror (errno ));
444
436
445
- /* configuration section */
446
- pgBackupWriteConfigSection (fp , backup );
447
-
448
- /* result section */
449
- pgBackupWriteResultSection (fp , backup );
437
+ pgBackupWriteControl (fp , backup );
450
438
451
439
fclose (fp );
452
440
}
453
441
454
442
/*
455
- * Read BACKUP_CONF_FILE and create pgBackup.
443
+ * Read BACKUP_CONTROL_FILE and create pgBackup.
456
444
* - Comment starts with ';'.
457
445
* - Do not care section.
458
446
*/
459
447
static pgBackup *
460
- read_backup_from_file (const char * path )
448
+ readBackupControlFile (const char * path )
461
449
{
462
450
pgBackup * backup = pgut_new (pgBackup );
463
451
char * backup_mode = NULL ;
@@ -480,7 +468,7 @@ read_backup_from_file(const char *path)
480
468
{'u' , 0 , "block-size" , & backup -> block_size , SOURCE_FILE_STRICT },
481
469
{'u' , 0 , "xlog-block-size" , & backup -> wal_block_size , SOURCE_FILE_STRICT },
482
470
{'u' , 0 , "checksum_version" , & backup -> checksum_version , SOURCE_FILE_STRICT },
483
- {'u ' , 0 , "stream" , & backup -> stream , SOURCE_FILE_STRICT },
471
+ {'b ' , 0 , "stream" , & backup -> stream , SOURCE_FILE_STRICT },
484
472
{'s' , 0 , "status" , & status , SOURCE_FILE_STRICT },
485
473
{'s' , 0 , "parent_backup" , & parent_backup , SOURCE_FILE_STRICT },
486
474
{0 }
0 commit comments