1/*********************************************************************** 2* * 3* This software is part of the ast package * 4* Copyright (c) 1985-2011 AT&T Intellectual Property * 5* and is licensed under the * 6* Eclipse Public License, Version 1.0 * 7* by AT&T Intellectual Property * 8* * 9* A copy of the License is available at * 10* http://www.eclipse.org/org/documents/epl-v10.html * 11* (with md5 checksum b35adb5213ca9657e911e9befb180842) * 12* * 13* Information and Software Systems Research * 14* AT&T Research * 15* Florham Park NJ * 16* * 17* Glenn Fowler <gsf@research.att.com> * 18* David Korn <dgk@research.att.com> * 19* Phong Vo <kpv@research.att.com> * 20* * 21***********************************************************************/ 22#pragma prototyped 23/* 24 * Standard Archive Format 25 * USTAR - Uniform Standard Tape ARchive 26 */ 27 28#ifndef _TAR_H 29#define _TAR_H 30 31#define TBLOCK 512 32#define NAMSIZ 100 33#define PFXSIZ 155 34 35#define TMODLEN 8 36#define TUIDLEN 8 37#define TGIDLEN 8 38#define TSIZLEN 12 39#define TMTMLEN 12 40#define TCKSLEN 8 41 42#define TMAGIC "ustar" /* ustar and a null */ 43#define TMAGLEN 6 44#define TVERSION "00" /* 00 and no null */ 45#define TVERSLEN 2 46#define TUNMLEN 32 47#define TGNMLEN 32 48#define TDEVLEN 8 49 50/* 51 * values used in typeflag field 52 */ 53 54#define REGTYPE '0' /* regular file */ 55#define AREGTYPE 0 /* alternate REGTYPE */ 56#define LNKTYPE '1' /* hard link */ 57#define SYMTYPE '2' /* soft link */ 58#define CHRTYPE '3' /* character special */ 59#define BLKTYPE '4' /* block special */ 60#define DIRTYPE '5' /* directory */ 61#define FIFOTYPE '6' /* FIFO special */ 62#define CONTTYPE '7' /* reserved */ 63#define SOKTYPE '8' /* socket */ 64#define EXTTYPE 'x' /* extended header */ 65#define GLBTYPE 'g' /* global extended header */ 66#define LLNKTYPE 'K' /* long link path */ 67#define LREGTYPE 'L' /* long file path */ 68#define VERTYPE 'V' /* version */ 69 70/* 71 * bits used in mode field 72 */ 73 74#define TSUID 04000 /* set uid on exec */ 75#define TSGID 02000 /* set gid on exec */ 76#define TSVTX 01000 /* sticky bit -- reserved */ 77 78/* 79 * file permissions 80 */ 81 82#define TUREAD 00400 /* read by owner */ 83#define TUWRITE 00200 /* write by owner */ 84#define TUEXEC 00100 /* execute by owner */ 85#define TGREAD 00040 /* read by group */ 86#define TGWRITE 00020 /* execute by group */ 87#define TGEXEC 00010 /* write by group */ 88#define TOREAD 00004 /* read by other */ 89#define TOWRITE 00002 /* write by other */ 90#define TOEXEC 00001 /* execute by other */ 91 92struct header 93{ 94 char name[NAMSIZ]; 95 char mode[TMODLEN]; 96 char uid[TUIDLEN]; 97 char gid[TGIDLEN]; 98 char size[TSIZLEN]; 99 char mtime[TMTMLEN]; 100 char chksum[TCKSLEN]; 101 char typeflag; 102 char linkname[NAMSIZ]; 103 char magic[TMAGLEN]; 104 char version[TVERSLEN]; 105 char uname[TUNMLEN]; 106 char gname[TGNMLEN]; 107 char devmajor[TDEVLEN]; 108 char devminor[TDEVLEN]; 109 char prefix[PFXSIZ]; 110}; 111 112union hblock 113{ 114 char dummy[TBLOCK]; 115 struct header dbuf; 116}; 117 118#endif 119