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