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