Return to tar.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / phar |
1.1 ! misho 1: #ifndef __PHAR_TAR_H ! 2: #define __PHAR_TAR_H ! 3: /* ! 4: +----------------------------------------------------------------------+ ! 5: | TAR archive support for Phar | ! 6: +----------------------------------------------------------------------+ ! 7: | Copyright (c) 2005-2012 The PHP Group | ! 8: +----------------------------------------------------------------------+ ! 9: | This source file is subject to version 3.01 of the PHP license, | ! 10: | that is bundled with this package in the file LICENSE, and is | ! 11: | available through the world-wide-web at the following url: | ! 12: | http://www.php.net/license/3_01.txt. | ! 13: | If you did not receive a copy of the PHP license and are unable to | ! 14: | obtain it through the world-wide-web, please send a note to | ! 15: | license@php.net so we can mail you a copy immediately. | ! 16: +----------------------------------------------------------------------+ ! 17: | Authors: Dmitry Stogov <dmitry@zend.com> | ! 18: | Gregory Beaver <cellog@php.net> | ! 19: +----------------------------------------------------------------------+ ! 20: */ ! 21: ! 22: #ifdef PHP_WIN32 ! 23: #pragma pack(1) ! 24: # define PHAR_TAR_PACK ! 25: #elif defined(__sgi) ! 26: # define PHAR_TAR_PACK ! 27: #elif defined(__GNUC__) ! 28: # define PHAR_TAR_PACK __attribute__((__packed__)) ! 29: #else ! 30: # define PHAR_TAR_PACK ! 31: #endif ! 32: ! 33: #if defined(__sgi) ! 34: # pragma pack 0 ! 35: #endif ! 36: /** ! 37: * the format of the header block for a file, in the older UNIX-compatible ! 38: * TAR format ! 39: */ ! 40: typedef struct _old_tar_header { /* {{{ */ ! 41: char name[100]; /* name of file; ! 42: directory is indicated by a trailing slash (/) */ ! 43: char mode[8]; /* file mode */ ! 44: char uid[8]; /* owner user ID */ ! 45: char gid[8]; /* owner group ID */ ! 46: char size[12]; /* length of file in bytes */ ! 47: char mtime[12]; /* modify time of file */ ! 48: char checksum[8]; /* checksum for header */ ! 49: char link; /* indicator for links; ! 50: 1 for a linked file, ! 51: 2 for a symbolic link, ! 52: 0 otherwise */ ! 53: char linkname[100]; /* name of linked file */ ! 54: } PHAR_TAR_PACK old_tar_header; ! 55: /* }}} */ ! 56: ! 57: #if defined(__sgi) ! 58: # pragma pack 0 ! 59: #endif ! 60: /** ! 61: * the new USTAR header format. ! 62: * Note that tar can determine that the USTAR format is being used by the ! 63: * presence of the null-terminated string "ustar" in the magic field. ! 64: */ ! 65: typedef struct _tar_header { /* {{{ */ ! 66: char name[100]; /* name of file */ ! 67: char mode[8]; /* file mode */ ! 68: char uid[8]; /* owner user ID */ ! 69: char gid[8]; /* owner group ID */ ! 70: char size[12]; /* length of file in bytes */ ! 71: char mtime[12]; /* modify time of file */ ! 72: char checksum[8]; /* checksum for header */ ! 73: char typeflag; /* type of file ! 74: 0 Regular file ! 75: 1 Link to another file already archived ! 76: 2 Symbolic link ! 77: 3 Character special device ! 78: 4 Block special device ! 79: 5 Directory ! 80: 6 FIFO special file ! 81: 7 Reserved */ ! 82: char linkname[100]; /* name of linked file */ ! 83: char magic[6]; /* USTAR indicator */ ! 84: char version[2]; /* USTAR version */ ! 85: char uname[32]; /* owner user name */ ! 86: char gname[32]; /* owner group name */ ! 87: char devmajor[8]; /* device major number */ ! 88: char devminor[8]; /* device minor number */ ! 89: char prefix[155]; /* prefix for file name; ! 90: the value of the prefix field, if non-null, ! 91: is prefixed to the name field to allow names ! 92: longer then 100 characters */ ! 93: char padding[12]; /* unused zeroed bytes */ ! 94: } PHAR_TAR_PACK tar_header; ! 95: /* }}} */ ! 96: ! 97: #ifdef PHP_WIN32 ! 98: #pragma pack() ! 99: #endif ! 100: ! 101: #endif /* __PHAR_TAR_H */