#ifndef __PHAR_TAR_H #define __PHAR_TAR_H /* +----------------------------------------------------------------------+ | TAR archive support for Phar | +----------------------------------------------------------------------+ | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Dmitry Stogov | | Gregory Beaver | +----------------------------------------------------------------------+ */ #ifdef PHP_WIN32 #pragma pack(1) # define PHAR_TAR_PACK #elif defined(__sgi) # define PHAR_TAR_PACK #elif defined(__GNUC__) # define PHAR_TAR_PACK __attribute__((__packed__)) #else # define PHAR_TAR_PACK #endif #if defined(__sgi) # pragma pack 0 #endif /** * the format of the header block for a file, in the older UNIX-compatible * TAR format */ typedef struct _old_tar_header { /* {{{ */ char name[100]; /* name of file; directory is indicated by a trailing slash (/) */ char mode[8]; /* file mode */ char uid[8]; /* owner user ID */ char gid[8]; /* owner group ID */ char size[12]; /* length of file in bytes */ char mtime[12]; /* modify time of file */ char checksum[8]; /* checksum for header */ char link; /* indicator for links; 1 for a linked file, 2 for a symbolic link, 0 otherwise */ char linkname[100]; /* name of linked file */ } PHAR_TAR_PACK old_tar_header; /* }}} */ #if defined(__sgi) # pragma pack 0 #endif /** * the new USTAR header format. * Note that tar can determine that the USTAR format is being used by the * presence of the null-terminated string "ustar" in the magic field. */ typedef struct _tar_header { /* {{{ */ char name[100]; /* name of file */ char mode[8]; /* file mode */ char uid[8]; /* owner user ID */ char gid[8]; /* owner group ID */ char size[12]; /* length of file in bytes */ char mtime[12]; /* modify time of file */ char checksum[8]; /* checksum for header */ char typeflag; /* type of file 0 Regular file 1 Link to another file already archived 2 Symbolic link 3 Character special device 4 Block special device 5 Directory 6 FIFO special file 7 Reserved */ char linkname[100]; /* name of linked file */ char magic[6]; /* USTAR indicator */ char version[2]; /* USTAR version */ char uname[32]; /* owner user name */ char gname[32]; /* owner group name */ char devmajor[8]; /* device major number */ char devminor[8]; /* device minor number */ char prefix[155]; /* prefix for file name; the value of the prefix field, if non-null, is prefixed to the name field to allow names longer then 100 characters */ char padding[12]; /* unused zeroed bytes */ } PHAR_TAR_PACK tar_header; /* }}} */ #ifdef PHP_WIN32 #pragma pack() #endif #endif /* __PHAR_TAR_H */