bigbiff bigbiff | 9c75405 | 2013-01-09 09:09:08 -0500 | [diff] [blame] | 1 | /* Extended tar format from POSIX.1. |
| 2 | Copyright (C) 1992, 1996 Free Software Foundation, Inc. |
| 3 | This file is part of the GNU C Library. |
| 4 | Written by David J. MacKenzie. |
| 5 | |
| 6 | The GNU C Library is free software; you can redistribute it and/or |
| 7 | modify it under the terms of the GNU Lesser General Public |
| 8 | License as published by the Free Software Foundation; either |
| 9 | version 2.1 of the License, or (at your option) any later version. |
| 10 | |
| 11 | The GNU C Library is distributed in the hope that it will be useful, |
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 | Lesser General Public License for more details. |
| 15 | |
| 16 | You should have received a copy of the GNU Lesser General Public |
| 17 | License along with the GNU C Library; if not, write to the Free |
| 18 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 19 | 02111-1307 USA. */ |
| 20 | |
| 21 | #ifndef _TAR_H |
| 22 | #define _TAR_H 1 |
| 23 | |
| 24 | /* A tar archive consists of 512-byte blocks. |
| 25 | Each file in the archive has a header block followed by 0+ data blocks. |
| 26 | Two blocks of NUL bytes indicate the end of the archive. */ |
| 27 | |
| 28 | /* The fields of header blocks: |
| 29 | All strings are stored as ISO 646 (approximately ASCII) strings. |
| 30 | |
| 31 | Fields are numeric unless otherwise noted below; numbers are ISO 646 |
| 32 | representations of octal numbers, with leading zeros as needed. |
| 33 | |
| 34 | linkname is only valid when typeflag==LNKTYPE. It doesn't use prefix; |
| 35 | files that are links to pathnames >100 chars long can not be stored |
| 36 | in a tar archive. |
| 37 | |
| 38 | If typeflag=={LNKTYPE,SYMTYPE,DIRTYPE} then size must be 0. |
| 39 | |
| 40 | devmajor and devminor are only valid for typeflag=={BLKTYPE,CHRTYPE}. |
| 41 | |
| 42 | chksum contains the sum of all 512 bytes in the header block, |
| 43 | treating each byte as an 8-bit unsigned value and treating the |
| 44 | 8 bytes of chksum as blank characters. |
| 45 | |
| 46 | uname and gname are used in preference to uid and gid, if those |
| 47 | names exist locally. |
| 48 | |
| 49 | Field Name Byte Offset Length in Bytes Field Type |
| 50 | name 0 100 NUL-terminated if NUL fits |
| 51 | mode 100 8 |
| 52 | uid 108 8 |
| 53 | gid 116 8 |
| 54 | size 124 12 |
| 55 | mtime 136 12 |
| 56 | chksum 148 8 |
| 57 | typeflag 156 1 see below |
| 58 | linkname 157 100 NUL-terminated if NUL fits |
| 59 | magic 257 6 must be TMAGIC (NUL term.) |
| 60 | version 263 2 must be TVERSION |
| 61 | uname 265 32 NUL-terminated |
| 62 | gname 297 32 NUL-terminated |
| 63 | devmajor 329 8 |
| 64 | devminor 337 8 |
| 65 | prefix 345 155 NUL-terminated if NUL fits |
| 66 | |
| 67 | If the first character of prefix is '\0', the file name is name; |
| 68 | otherwise, it is prefix/name. Files whose pathnames don't fit in that |
| 69 | length can not be stored in a tar archive. */ |
| 70 | |
| 71 | /* The bits in mode: */ |
| 72 | #define TSUID 04000 |
| 73 | #define TSGID 02000 |
| 74 | #define TSVTX 01000 |
| 75 | #define TUREAD 00400 |
| 76 | #define TUWRITE 00200 |
| 77 | #define TUEXEC 00100 |
| 78 | #define TGREAD 00040 |
| 79 | #define TGWRITE 00020 |
| 80 | #define TGEXEC 00010 |
| 81 | #define TOREAD 00004 |
| 82 | #define TOWRITE 00002 |
| 83 | #define TOEXEC 00001 |
| 84 | |
| 85 | /* The values for typeflag: |
| 86 | Values 'A'-'Z' are reserved for custom implementations. |
| 87 | All other values are reserved for future POSIX.1 revisions. */ |
| 88 | |
| 89 | #define REGTYPE '0' /* Regular file (preferred code). */ |
| 90 | #define AREGTYPE '\0' /* Regular file (alternate code). */ |
| 91 | #define LNKTYPE '1' /* Hard link. */ |
| 92 | #define SYMTYPE '2' /* Symbolic link (hard if not supported). */ |
| 93 | #define CHRTYPE '3' /* Character special. */ |
| 94 | #define BLKTYPE '4' /* Block special. */ |
| 95 | #define DIRTYPE '5' /* Directory. */ |
| 96 | #define FIFOTYPE '6' /* Named pipe. */ |
| 97 | #define CONTTYPE '7' /* Contiguous file */ |
| 98 | /* (regular file if not supported). */ |
| 99 | |
| 100 | /* Contents of magic field and its length. */ |
| 101 | #define TMAGIC "ustar" |
| 102 | #define TMAGLEN 6 |
| 103 | |
| 104 | /* Contents of the version field and its length. */ |
| 105 | #define TVERSION "00" |
| 106 | #define TVERSLEN 2 |
| 107 | |
| 108 | #endif /* tar.h */ |