April 2024 | ||||||
Mo | Tu | We | Th | Fr | Sa | Su |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
001: /* Extended tar format from POSIX.1. 002: Copyright (C) 1992, 1996 Free Software Foundation, Inc. 003: This file is part of the GNU C Library. 004: Written by David J. MacKenzie. 005: 006: The GNU C Library is free software; you can redistribute it and/or 007: modify it under the terms of the GNU Lesser General Public 008: License as published by the Free Software Foundation; either 009: version 2.1 of the License, or (at your option) any later version. 010: 011: The GNU C Library is distributed in the hope that it will be useful, 012: but WITHOUT ANY WARRANTY; without even the implied warranty of 013: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014: Lesser General Public License for more details. 015: 016: You should have received a copy of the GNU Lesser General Public 017: License along with the GNU C Library; if not, write to the Free 018: Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 019: 02111-1307 USA. */ 020: 021: #ifndef _TAR_H 022: #define _TAR_H 1 023: 024: /* A tar archive consists of 512-byte blocks. 025: Each file in the archive has a header block followed by 0+ data blocks. 026: Two blocks of NUL bytes indicate the end of the archive. */ 027: 028: /* The fields of header blocks: 029: All strings are stored as ISO 646 (approximately ASCII) strings. 030: 031: Fields are numeric unless otherwise noted below; numbers are ISO 646 032: representations of octal numbers, with leading zeros as needed. 033: 034: linkname is only valid when typeflag==LNKTYPE. It doesn't use prefix; 035: files that are links to pathnames >100 chars long can not be stored 036: in a tar archive. 037: 038: If typeflag=={LNKTYPE,SYMTYPE,DIRTYPE} then size must be 0. 039: 040: devmajor and devminor are only valid for typeflag=={BLKTYPE,CHRTYPE}. 041: 042: chksum contains the sum of all 512 bytes in the header block, 043: treating each byte as an 8-bit unsigned value and treating the 044: 8 bytes of chksum as blank characters. 045: 046: uname and gname are used in preference to uid and gid, if those 047: names exist locally. 048: 049: Field Name Byte Offset Length in Bytes Field Type 050: name 0 100 NUL-terminated if NUL fits 051: mode 100 8 052: uid 108 8 053: gid 116 8 054: size 124 12 055: mtime 136 12 056: chksum 148 8 057: typeflag 156 1 see below 058: linkname 157 100 NUL-terminated if NUL fits 059: magic 257 6 must be TMAGIC (NUL term.) 060: version 263 2 must be TVERSION 061: uname 265 32 NUL-terminated 062: gname 297 32 NUL-terminated 063: devmajor 329 8 064: devminor 337 8 065: prefix 345 155 NUL-terminated if NUL fits 066: 067: If the first character of prefix is '\0', the file name is name; 068: otherwise, it is prefix/name. Files whose pathnames don't fit in that 069: length can not be stored in a tar archive. */ 070: 071: /* The bits in mode: */ 072: #define TSUID 04000 073: #define TSGID 02000 074: #define TSVTX 01000 075: #define TUREAD 00400 076: #define TUWRITE 00200 077: #define TUEXEC 00100 078: #define TGREAD 00040 079: #define TGWRITE 00020 080: #define TGEXEC 00010 081: #define TOREAD 00004 082: #define TOWRITE 00002 083: #define TOEXEC 00001 084: 085: /* The values for typeflag: 086: Values 'A'-'Z' are reserved for custom implementations. 087: All other values are reserved for future POSIX.1 revisions. */ 088: 089: #define REGTYPE '0' /* Regular file (preferred code). */ 090: #define AREGTYPE '\0' /* Regular file (alternate code). */ 091: #define LNKTYPE '1' /* Hard link. */ 092: #define SYMTYPE '2' /* Symbolic link (hard if not supported). */ 093: #define CHRTYPE '3' /* Character special. */ 094: #define BLKTYPE '4' /* Block special. */ 095: #define DIRTYPE '5' /* Directory. */ 096: #define FIFOTYPE '6' /* Named pipe. */ 097: #define CONTTYPE '7' /* Contiguous file */ 098: /* (regular file if not supported). */ 099: 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 */ 109: