67 char *archive_name,
Oid tblspc_oid)
83 return &streamer->
base;
129 pg_fatal(
"unexpected state while parsing tar file");
197 "\"%s\" is present in \"%s\" but not in the manifest",
201 mystreamer->
mfile = m;
210 "\"%s\" has size %llu in \"%s\" but size %llu in the manifest",
212 (
unsigned long long) member->
size,
214 (
unsigned long long) m->
size);
228 !m->
bad && strcmp(m->
pathname,
"global/pg_control") == 0;
235 "%s: could not initialize checksum of file \"%s\"",
273 "could not update checksum of file \"%s\"",
299 "file \"%s\" in \"%s\" should contain %llu bytes, but read %llu bytes",
301 (
unsigned long long) m->
size,
311 "could not finalize checksum of file \"%s\"",
319 "file \"%s\" in \"%s\" has checksum of length %d, but expected %d",
324 "checksum mismatch for file \"%s\" in \"%s\"",
411 report_fatal_error(
"%s: %s: manifest system identifier is %llu, but control file has %llu",
414 (
unsigned long long)
manifest->system_identifier,
426 mystreamer->
mfile = NULL;
astreamer_archive_context
@ ASTREAMER_MEMBER_HEADER
@ ASTREAMER_MEMBER_CONTENTS
@ ASTREAMER_MEMBER_TRAILER
@ ASTREAMER_ARCHIVE_TRAILER
static void member_copy_control_data(astreamer *streamer, astreamer_member *member, const char *data, int len)
static void member_verify_header(astreamer *streamer, astreamer_member *member)
static void astreamer_verify_finalize(astreamer *streamer)
static void member_compute_checksum(astreamer *streamer, astreamer_member *member, const char *data, int len)
static void astreamer_verify_content(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)
astreamer * astreamer_verify_content_new(astreamer *next, verifier_context *context, char *archive_name, Oid tblspc_oid)
static void member_reset_info(astreamer *streamer)
struct astreamer_verify astreamer_verify
static void member_verify_control_data(astreamer *streamer)
static const astreamer_ops astreamer_verify_ops
static void astreamer_verify_free(astreamer *streamer)
static void member_verify_checksum(astreamer *streamer)
#define Assert(condition)
#define OidIsValid(objectId)
int pg_checksum_final(pg_checksum_context *context, uint8 *output)
int pg_checksum_update(pg_checksum_context *context, const uint8 *input, size_t len)
int pg_checksum_init(pg_checksum_context *context, pg_checksum_type type)
#define PG_CHECKSUM_MAX_LENGTH
void * pg_malloc(size_t size)
void pfree(void *pointer)
void * palloc0(Size size)
struct ControlFileData ControlFileData
#define PG_CONTROL_VERSION
#define PG_CONTROL_FILE_SIZE
#define COMP_CRC32C(crc, data, len)
#define EQ_CRC32C(c1, c2)
void report_fatal_error(const char *pg_restrict fmt,...)
bool should_ignore_relpath(verifier_context *context, const char *relpath)
void report_backup_error(verifier_context *context, const char *pg_restrict fmt,...)
#define should_verify_checksum(m)
void canonicalize_path(char *path)
uint32 pg_control_version
void(* content)(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)
verifier_context * context
ControlFileData control_file
uint64 control_file_bytes
pg_checksum_context * checksum_ctx
const astreamer_ops * bbs_ops
manifest_files_hash * files
pg_checksum_type checksum_type