diff options
author | Robert Haas | 2020-04-24 14:38:10 +0000 |
---|---|---|
committer | Robert Haas | 2020-06-15 19:28:49 +0000 |
commit | 2961c9711c17e5fe05fb1fbd72c3e47f3b601ee4 (patch) | |
tree | c80892435d6c8cb4b07a9c0e1343185ac30ed0c0 /src/include/pgtar.h | |
parent | e532b1d57df9b55557263303dba883e06521b0d2 (diff) |
Assorted cleanup of tar-related code.
Introduce TAR_BLOCK_SIZE and replace many instances of 512 with
the new constant. Introduce function tarPaddingBytesRequired
and use it to replace numerous repetitions of (x + 511) & ~511.
Add preprocessor guards against multiple inclusion to pgtar.h.
Reformat the prototype for tarCreateHeader so it doesn't extend
beyond 80 characters.
Discussion: http://postgr.es/m/CA+TgmobWbfReO9-XFk8urR1K4wTNwqoHx_v56t7=T8KaiEoKNw@mail.gmail.com
Diffstat (limited to 'src/include/pgtar.h')
-rw-r--r-- | src/include/pgtar.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/include/pgtar.h b/src/include/pgtar.h index 0a875903a7..0f08dc0c2c 100644 --- a/src/include/pgtar.h +++ b/src/include/pgtar.h @@ -11,6 +11,10 @@ * *------------------------------------------------------------------------- */ +#ifndef PG_TAR_H +#define PG_TAR_H + +#define TAR_BLOCK_SIZE 512 enum tarError { @@ -19,8 +23,23 @@ enum tarError TAR_SYMLINK_TOO_LONG }; -extern 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); +extern 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); extern uint64 read_tar_number(const char *s, int len); extern void print_tar_number(char *s, int len, uint64 val); extern int tarChecksum(char *header); + +/* + * Compute the number of padding bytes required for an entry in a tar + * archive. We must pad out to a multiple of TAR_BLOCK_SIZE. Since that's + * a power of 2, we can use TYPEALIGN(). + */ +static inline size_t +tarPaddingBytesRequired(size_t len) +{ + return TYPEALIGN(TAR_BLOCK_SIZE, len) - len; +} + +#endif |