36 const char *(*link_map) (
const char *);
90 streamer->
file = file;
96 pg_fatal(
"could not create file \"%s\": %m", pathname);
100 return &streamer->
base;
124 pg_fatal(
"could not write to file \"%s\": %m",
141 pg_fatal(
"could not close file \"%s\": %m",
187 const char *(*link_map) (
const char *),
188 void (*report_output_file) (
const char *))
199 return &streamer->
base;
238 linktarget =
mystreamer->link_map(linktarget);
261 pg_fatal(
"could not write to file \"%s\": %m",
278 pg_fatal(
"unexpected state while extracting archive");
324 pg_fatal(
"could not create directory \"%s\": %m",
329 pg_fatal(
"could not set permissions on directory \"%s\": %m",
348 pg_fatal(
"could not create symbolic link from \"%s\" to \"%s\": %m",
368 pg_fatal(
"could not set permissions on file \"%s\": %m",
astreamer_archive_context
@ ASTREAMER_MEMBER_HEADER
@ ASTREAMER_MEMBER_CONTENTS
@ ASTREAMER_MEMBER_TRAILER
@ ASTREAMER_ARCHIVE_TRAILER
astreamer * astreamer_plain_writer_new(char *pathname, FILE *file)
static void astreamer_plain_writer_content(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)
static void astreamer_extractor_finalize(astreamer *streamer)
static void extract_directory(const char *filename, mode_t mode)
static FILE * create_file_for_extract(const char *filename, mode_t mode)
static const astreamer_ops astreamer_extractor_ops
astreamer * astreamer_extractor_new(const char *basepath, const char *(*link_map)(const char *), void(*report_output_file)(const char *))
static void astreamer_plain_writer_finalize(astreamer *streamer)
static void astreamer_extractor_free(astreamer *streamer)
static void astreamer_extractor_content(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)
static const astreamer_ops astreamer_plain_writer_ops
static bool should_allow_existing_directory(const char *pathname)
static void extract_link(const char *filename, const char *linktarget)
static void astreamer_plain_writer_free(astreamer *streamer)
#define PG_USED_FOR_ASSERTS_ONLY
#define Assert(condition)
#define palloc0_object(type)
char * pstrdup(const char *in)
void pfree(void *pointer)
static PgChecksumMode mode
char * last_dir_separator(const char *filename)
char linktarget[MAXPGPATH]
void(* content)(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)
const astreamer_ops * bbs_ops
#define symlink(oldpath, newpath)