LCOV - differential code coverage report
Current view: top level - src/include - pgtar.h (source / functions) Coverage Total Hit CBC
Current: Differential Code Coverage 16@8cea358b128 vs 17@8cea358b128 Lines: 100.0 % 2 2 2
Current Date: 2024-04-14 14:21:10 Functions: 100.0 % 1 1 1
Baseline: 16@8cea358b128 Branches: - 0 0
Baseline Date: 2024-04-14 14:21:09 Line coverage date bins:
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed (240..) days: 100.0 % 2 2 2
Function coverage date bins:
(240..) days: 100.0 % 1 1 1

 Age         Owner                    Branch data    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-2024, 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                 :                : /*
                                 27                 :                :  * Offsets of fields within a 512-byte tar header.
                                 28                 :                :  *
                                 29                 :                :  * "tar number" values should be generated using print_tar_number() and can be
                                 30                 :                :  * read using read_tar_number(). Fields that contain strings are generally
                                 31                 :                :  * both filled and read using strlcpy().
                                 32                 :                :  *
                                 33                 :                :  * The value for the checksum field can be computed using tarChecksum().
                                 34                 :                :  *
                                 35                 :                :  * Some fields are not used by PostgreSQL; see tarCreateHeader().
                                 36                 :                :  */
                                 37                 :                : enum tarHeaderOffset
                                 38                 :                : {
                                 39                 :                :     TAR_OFFSET_NAME = 0,        /* 100 byte string */
                                 40                 :                :     TAR_OFFSET_MODE = 100,      /* 8 byte tar number, excludes S_IFMT */
                                 41                 :                :     TAR_OFFSET_UID = 108,       /* 8 byte tar number */
                                 42                 :                :     TAR_OFFSET_GID = 116,       /* 8 byte tar number */
                                 43                 :                :     TAR_OFFSET_SIZE = 124,      /* 8 byte tar number */
                                 44                 :                :     TAR_OFFSET_MTIME = 136,     /* 12 byte tar number */
                                 45                 :                :     TAR_OFFSET_CHECKSUM = 148,  /* 8 byte tar number */
                                 46                 :                :     TAR_OFFSET_TYPEFLAG = 156,  /* 1 byte file type, see TAR_FILETYPE_* */
                                 47                 :                :     TAR_OFFSET_LINKNAME = 157,  /* 100 byte string */
                                 48                 :                :     TAR_OFFSET_MAGIC = 257,     /* "ustar" with terminating zero byte */
                                 49                 :                :     TAR_OFFSET_VERSION = 263,   /* "00" */
                                 50                 :                :     TAR_OFFSET_UNAME = 265,     /* 32 byte string */
                                 51                 :                :     TAR_OFFSET_GNAME = 297,     /* 32 byte string */
                                 52                 :                :     TAR_OFFSET_DEVMAJOR = 329,  /* 8 byte tar number */
                                 53                 :                :     TAR_OFFSET_DEVMINOR = 337,  /* 8 byte tar number */
                                 54                 :                :     TAR_OFFSET_PREFIX = 345,    /* 155 byte string */
                                 55                 :                :     /* last 12 bytes of the 512-byte block are unassigned */
                                 56                 :                : };
                                 57                 :                : 
                                 58                 :                : enum tarFileType
                                 59                 :                : {
                                 60                 :                :     TAR_FILETYPE_PLAIN = '0',
                                 61                 :                :     TAR_FILETYPE_SYMLINK = '2',
                                 62                 :                :     TAR_FILETYPE_DIRECTORY = '5',
                                 63                 :                : };
                                 64                 :                : 
                                 65                 :                : extern enum tarError tarCreateHeader(char *h, const char *filename,
                                 66                 :                :                                      const char *linktarget, pgoff_t size,
                                 67                 :                :                                      mode_t mode, uid_t uid, gid_t gid,
                                 68                 :                :                                      time_t mtime);
                                 69                 :                : extern uint64 read_tar_number(const char *s, int len);
                                 70                 :                : extern void print_tar_number(char *s, int len, uint64 val);
                                 71                 :                : extern int  tarChecksum(char *header);
                                 72                 :                : 
                                 73                 :                : /*
                                 74                 :                :  * Compute the number of padding bytes required for an entry in a tar
                                 75                 :                :  * archive. We must pad out to a multiple of TAR_BLOCK_SIZE. Since that's
                                 76                 :                :  * a power of 2, we can use TYPEALIGN().
                                 77                 :                :  */
                                 78                 :                : static inline size_t
 1451 rhaas@postgresql.org       79                 :CBC      562286 : tarPaddingBytesRequired(size_t len)
                                 80                 :                : {
                                 81                 :         562286 :     return TYPEALIGN(TAR_BLOCK_SIZE, len) - len;
                                 82                 :                : }
                                 83                 :                : 
                                 84                 :                : #endif
        

Generated by: LCOV version 2.1-beta2-3-g6141622