TLA Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * pgtar.h
4 : * Functions for manipulating tarfile datastructures (src/port/tar.c)
5 : *
6 : *
7 : * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8 : * Portions Copyright (c) 1994, Regents of the University of California
9 : *
10 : * src/include/pgtar.h
11 : *
12 : *-------------------------------------------------------------------------
13 : */
14 : #ifndef PG_TAR_H
15 : #define PG_TAR_H
16 :
17 : #define TAR_BLOCK_SIZE 512
18 :
19 : enum tarError
20 : {
21 : TAR_OK = 0,
22 : TAR_NAME_TOO_LONG,
23 : TAR_SYMLINK_TOO_LONG
24 : };
25 :
26 : extern 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);
30 : extern uint64 read_tar_number(const char *s, int len);
31 : extern void print_tar_number(char *s, int len, uint64 val);
32 : extern int tarChecksum(char *header);
33 :
34 : /*
35 : * Compute the number of padding bytes required for an entry in a tar
36 : * archive. We must pad out to a multiple of TAR_BLOCK_SIZE. Since that's
37 : * a power of 2, we can use TYPEALIGN().
38 : */
39 : static inline size_t
40 CBC 461376 : tarPaddingBytesRequired(size_t len)
41 : {
42 461376 : return TYPEALIGN(TAR_BLOCK_SIZE, len) - len;
43 : }
44 :
45 : #endif
|