24 if (val < (((uint64) 1) << ((len - 1) * 3)))
30 s[--len] = (val & 7) +
'0';
40 s[--len] = (val & 255);
68 result |= (
unsigned char) (*++s);
74 while (len-- && *s >=
'0' && *s <=
'7')
101 for (i = 0; i < 512; i++)
102 if (i < 148 || i >= 156)
103 sum += 0xFF & header[
i];
117 if (strlen(filename) > 99)
120 if (linktarget && strlen(linktarget) > 99)
127 if (linktarget != NULL ||
S_ISDIR(mode))
134 int flen = strlen(filename);
136 flen =
Min(flen, 99);
151 if (linktarget != NULL ||
S_ISDIR(mode))
162 if (linktarget != NULL)
167 strlcpy(&h[157], linktarget, 100);
181 strcpy(&h[257],
"ustar");
184 memcpy(&h[263],
"00", 2);
188 strlcpy(&h[265],
"postgres", 32);
192 strlcpy(&h[297],
"postgres", 32);
int tarChecksum(char *header)
static PgChecksumMode mode
uint64 read_tar_number(const char *s, int len)
void print_tar_number(char *s, int len, uint64 val)
enum tarError tarCreateHeader(char *h, const char *filename, const char *linktarget, pgoff_t size, mode_t mode, uid_t uid, gid_t gid, time_t mtime)
size_t strlcpy(char *dst, const char *src, size_t siz)
static void header(const char *fmt,...) pg_attribute_printf(1