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 fromBACKUP_CONF_FILE .
210
+ * Read backup meta information fromBACKUP_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 fromBACKUP_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 fromBACKUP_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
- /* createBACKUP_CONF_FILE */
424
+ /* createBACKUP_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
- * ReadBACKUP_CONF_FILE and create pgBackup.
443
+ * ReadBACKUP_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 }