#include "utils/builtins.h"
#include "utils/json.h"
+static void AppendStringToManifest(backup_manifest_info *manifest, char *s);
+
/*
* Does the user want a backup manifest?
*
* want a manifest, we set manifest->buffile to NULL.
*/
static inline bool
-IsManifestEnabled(manifest_info *manifest)
+IsManifestEnabled(backup_manifest_info *manifest)
{
return (manifest->buffile != NULL);
}
* SendBackupManifest.
*/
void
-InitializeManifest(manifest_info *manifest, manifest_option want_manifest,
- pg_checksum_type manifest_checksum_type)
+InitializeBackupManifest(backup_manifest_info *manifest,
+ backup_manifest_option want_manifest,
+ pg_checksum_type manifest_checksum_type)
{
if (want_manifest == MANIFEST_OPTION_NO)
manifest->buffile = NULL;
"\"Files\": [");
}
-/*
- * Append a cstring to the manifest.
- */
-void
-AppendStringToManifest(manifest_info *manifest, char *s)
-{
- int len = strlen(s);
- size_t written;
-
- Assert(manifest != NULL);
- if (manifest->still_checksumming)
- pg_sha256_update(&manifest->manifest_ctx, (uint8 *) s, len);
- written = BufFileWrite(manifest->buffile, s, len);
- if (written != len)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not write to temporary file: %m")));
- manifest->manifest_size += len;
-}
-
/*
* Add an entry to the backup manifest for a file.
*/
void
-AddFileToManifest(manifest_info *manifest, const char *spcoid,
- const char *pathname, size_t size, pg_time_t mtime,
- pg_checksum_context *checksum_ctx)
+AddFileToBackupManifest(backup_manifest_info *manifest, const char *spcoid,
+ const char *pathname, size_t size, pg_time_t mtime,
+ pg_checksum_context * checksum_ctx)
{
char pathbuf[MAXPGPATH];
int pathlen;
* this backup to the manifest.
*/
void
-AddWALInfoToManifest(manifest_info *manifest, XLogRecPtr startptr,
- TimeLineID starttli, XLogRecPtr endptr, TimeLineID endtli)
+AddWALInfoToBackupManifest(backup_manifest_info *manifest, XLogRecPtr startptr,
+ TimeLineID starttli, XLogRecPtr endptr,
+ TimeLineID endtli)
{
List *timelines;
ListCell *lc;
* Finalize the backup manifest, and send it to the client.
*/
void
-SendBackupManifest(manifest_info *manifest)
+SendBackupManifest(backup_manifest_info *manifest)
{
StringInfoData protobuf;
uint8 checksumbuf[PG_SHA256_DIGEST_LENGTH];
/* Release resources */
BufFileClose(manifest->buffile);
}
+
+/*
+ * Append a cstring to the manifest.
+ */
+static void
+AppendStringToManifest(backup_manifest_info *manifest, char *s)
+{
+ int len = strlen(s);
+ size_t written;
+
+ Assert(manifest != NULL);
+ if (manifest->still_checksumming)
+ pg_sha256_update(&manifest->manifest_ctx, (uint8 *) s, len);
+ written = BufFileWrite(manifest->buffile, s, len);
+ if (written != len)
+ ereport(ERROR,
+ (errcode_for_file_access(),
+ errmsg("could not write to temporary file: %m")));
+ manifest->manifest_size += len;
+}
bool includewal;
uint32 maxrate;
bool sendtblspcmapfile;
- manifest_option manifest;
+ backup_manifest_option manifest;
pg_checksum_type manifest_checksum_type;
} basebackup_options;
static int64 sendDir(const char *path, int basepathlen, bool sizeonly,
List *tablespaces, bool sendtblspclinks,
- manifest_info *manifest, const char *spcoid);
+ backup_manifest_info *manifest, const char *spcoid);
static bool sendFile(const char *readfilename, const char *tarfilename,
struct stat *statbuf, bool missing_ok, Oid dboid,
- manifest_info *manifest, const char *spcoid);
+ backup_manifest_info *manifest, const char *spcoid);
static void sendFileWithContent(const char *filename, const char *content,
- manifest_info *manifest);
+ backup_manifest_info *manifest);
static int64 _tarWriteHeader(const char *filename, const char *linktarget,
struct stat *statbuf, bool sizeonly);
static int64 _tarWriteDir(const char *pathbuf, int basepathlen, struct stat *statbuf,
TimeLineID endtli;
StringInfo labelfile;
StringInfo tblspc_map_file = NULL;
- manifest_info manifest;
+ backup_manifest_info manifest;
int datadirpathlen;
List *tablespaces = NIL;
labelfile = makeStringInfo();
tblspc_map_file = makeStringInfo();
- InitializeManifest(&manifest, opt->manifest, opt->manifest_checksum_type);
+ InitializeBackupManifest(&manifest, opt->manifest,
+ opt->manifest_checksum_type);
total_checksum_failures = 0;
pq_putemptymessage('c');
}
- AddWALInfoToManifest(&manifest, startptr, starttli, endptr, endtli);
+ AddWALInfoToBackupManifest(&manifest, startptr, starttli, endptr, endtli);
SendBackupManifest(&manifest);
*/
static void
sendFileWithContent(const char *filename, const char *content,
- manifest_info *manifest)
+ backup_manifest_info *manifest)
{
struct stat statbuf;
int pad,
}
pg_checksum_update(&checksum_ctx, (uint8 *) content, len);
- AddFileToManifest(manifest, NULL, filename, len,
- (pg_time_t) statbuf.st_mtime,
- &checksum_ctx);
+ AddFileToBackupManifest(manifest, NULL, filename, len,
+ (pg_time_t) statbuf.st_mtime, &checksum_ctx);
}
/*
*/
int64
sendTablespace(char *path, char *spcoid, bool sizeonly,
- manifest_info *manifest)
+ backup_manifest_info *manifest)
{
int64 size;
char pathbuf[MAXPGPATH];
*/
static int64
sendDir(const char *path, int basepathlen, bool sizeonly, List *tablespaces,
- bool sendtblspclinks, manifest_info *manifest, const char *spcoid)
+ bool sendtblspclinks, backup_manifest_info *manifest,
+ const char *spcoid)
{
DIR *dir;
struct dirent *de;
static bool
sendFile(const char *readfilename, const char *tarfilename,
struct stat *statbuf, bool missing_ok, Oid dboid,
- manifest_info *manifest, const char *spcoid)
+ backup_manifest_info *manifest, const char *spcoid)
{
FILE *fp;
BlockNumber blkno = 0;
total_checksum_failures += checksum_failures;
- AddFileToManifest(manifest, spcoid, tarfilename, statbuf->st_size,
- (pg_time_t) statbuf->st_mtime, &checksum_ctx);
+ AddFileToBackupManifest(manifest, spcoid, tarfilename, statbuf->st_size,
+ (pg_time_t) statbuf->st_mtime, &checksum_ctx);
return true;
}
MANIFEST_OPTION_YES,
MANIFEST_OPTION_NO,
MANIFEST_OPTION_FORCE_ENCODE
-} manifest_option;
+} backup_manifest_option;
typedef struct manifest_info
{
bool force_encode;
bool first_file;
bool still_checksumming;
-} manifest_info;
+} backup_manifest_info;
-extern void InitializeManifest(manifest_info *manifest,
- manifest_option want_manifest,
- pg_checksum_type manifest_checksum_type);
-extern void AppendStringToManifest(manifest_info *manifest, char *s);
-extern void AddFileToManifest(manifest_info *manifest, const char *spcoid,
- const char *pathname, size_t size,
- pg_time_t mtime,
- pg_checksum_context *checksum_ctx);
-extern void AddWALInfoToManifest(manifest_info *manifest, XLogRecPtr startptr,
- TimeLineID starttli, XLogRecPtr endptr,
- TimeLineID endtli);
-extern void SendBackupManifest(manifest_info *manifest);
+extern void InitializeBackupManifest(backup_manifest_info *manifest,
+ backup_manifest_option want_manifest,
+ pg_checksum_type manifest_checksum_type);
+extern void AddFileToBackupManifest(backup_manifest_info *manifest,
+ const char *spcoid,
+ const char *pathname, size_t size,
+ pg_time_t mtime,
+ pg_checksum_context * checksum_ctx);
+extern void AddWALInfoToBackupManifest(backup_manifest_info *manifest,
+ XLogRecPtr startptr,
+ TimeLineID starttli, XLogRecPtr endptr,
+ TimeLineID endtli);
+extern void SendBackupManifest(backup_manifest_info *manifest);
#endif