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