codekingpro/portable-devtools
115k
1/*-------------------------------------------------------------------------2 *3 * pgtar.h4 * Functions for manipulating tarfile datastructures (src/port/tar.c)5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/pgtar.h11 *12 *-------------------------------------------------------------------------13 */14#ifndef PG_TAR_H15#define PG_TAR_H16 17#define TAR_BLOCK_SIZE 51218 19enum tarError20{21 TAR_OK = 0,22 TAR_NAME_TOO_LONG,23 TAR_SYMLINK_TOO_LONG24};25 26extern enum tarError tarCreateHeader(char *h, const char *filename,27 const char *linktarget, pgoff_t size,28 mode_t mode, uid_t uid, gid_t gid,29 time_t mtime);30extern uint64 read_tar_number(const char *s, int len);31extern void print_tar_number(char *s, int len, uint64 val);32extern int tarChecksum(char *header);33 34/*35 * Compute the number of padding bytes required for an entry in a tar36 * archive. We must pad out to a multiple of TAR_BLOCK_SIZE. Since that's37 * a power of 2, we can use TYPEALIGN().38 */39static inline size_t40tarPaddingBytesRequired(size_t len)41{42 return TYPEALIGN(TAR_BLOCK_SIZE, len) - len;43}44 45#endif46 