xref: /onnv-gate/usr/src/lib/libast/common/include/tar.h (revision 12068:08a39a083754)
14887Schin /***********************************************************************
24887Schin *                                                                      *
34887Schin *               This software is part of the ast package               *
4*12068SRoger.Faulkner@Oracle.COM *          Copyright (c) 1985-2010 AT&T Intellectual Property          *
54887Schin *                      and is licensed under the                       *
64887Schin *                  Common Public License, Version 1.0                  *
78462SApril.Chin@Sun.COM *                    by AT&T Intellectual Property                     *
84887Schin *                                                                      *
94887Schin *                A copy of the License is available at                 *
104887Schin *            http://www.opensource.org/licenses/cpl1.0.txt             *
114887Schin *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
124887Schin *                                                                      *
134887Schin *              Information and Software Systems Research               *
144887Schin *                            AT&T Research                             *
154887Schin *                           Florham Park NJ                            *
164887Schin *                                                                      *
174887Schin *                 Glenn Fowler <gsf@research.att.com>                  *
184887Schin *                  David Korn <dgk@research.att.com>                   *
194887Schin *                   Phong Vo <kpv@research.att.com>                    *
204887Schin *                                                                      *
214887Schin ***********************************************************************/
224887Schin #pragma prototyped
234887Schin /*
244887Schin  * Standard Archive Format
254887Schin  * USTAR - Uniform Standard Tape ARchive
264887Schin  */
274887Schin 
284887Schin #ifndef _TAR_H
294887Schin #define _TAR_H
304887Schin 
314887Schin #define TBLOCK		512
324887Schin #define NAMSIZ		100
334887Schin #define PFXSIZ		155
344887Schin 
354887Schin #define TMODLEN		8
364887Schin #define TUIDLEN		8
374887Schin #define TGIDLEN		8
384887Schin #define TSIZLEN		12
394887Schin #define TMTMLEN		12
404887Schin #define TCKSLEN		8
414887Schin 
424887Schin #define TMAGIC		"ustar"		/* ustar and a null		*/
434887Schin #define TMAGLEN		6
444887Schin #define TVERSION	"00"		/* 00 and no null		*/
454887Schin #define TVERSLEN	2
464887Schin #define TUNMLEN		32
474887Schin #define TGNMLEN		32
484887Schin #define TDEVLEN		8
494887Schin 
504887Schin /*
514887Schin  * values used in typeflag field
524887Schin  */
534887Schin 
544887Schin #define REGTYPE		'0'		/* regular file			*/
554887Schin #define AREGTYPE	0		/* alternate REGTYPE		*/
564887Schin #define LNKTYPE		'1'		/* hard link			*/
574887Schin #define SYMTYPE		'2'		/* soft link			*/
584887Schin #define CHRTYPE		'3'		/* character special		*/
594887Schin #define BLKTYPE		'4'		/* block special		*/
604887Schin #define DIRTYPE		'5'		/* directory			*/
614887Schin #define FIFOTYPE	'6'		/* FIFO special			*/
624887Schin #define CONTTYPE	'7'		/* reserved			*/
634887Schin #define SOKTYPE		'8'		/* socket			*/
644887Schin #define EXTTYPE		'x'		/* extended header		*/
654887Schin #define GLBTYPE		'g'		/* global extended header	*/
664887Schin #define LLNKTYPE	'K'		/* long link path		*/
674887Schin #define LREGTYPE	'L'		/* long file path		*/
684887Schin #define VERTYPE		'V'		/* version			*/
694887Schin 
704887Schin /*
714887Schin  * bits used in mode field
724887Schin  */
734887Schin 
744887Schin #define TSUID		04000		/* set uid on exec		*/
754887Schin #define TSGID		02000		/* set gid on exec		*/
764887Schin #define TSVTX		01000		/* sticky bit -- reserved	*/
774887Schin 
784887Schin /*
794887Schin  * file permissions
804887Schin  */
814887Schin 
824887Schin #define TUREAD		00400		/* read by owner		*/
834887Schin #define TUWRITE		00200		/* write by owner		*/
844887Schin #define TUEXEC		00100		/* execute by owner		*/
854887Schin #define TGREAD		00040		/* read by group		*/
864887Schin #define TGWRITE		00020		/* execute by group		*/
874887Schin #define TGEXEC		00010		/* write by group		*/
884887Schin #define TOREAD		00004		/* read by other		*/
894887Schin #define TOWRITE		00002		/* write by other		*/
904887Schin #define TOEXEC		00001		/* execute by other		*/
914887Schin 
924887Schin struct header
934887Schin {
944887Schin 	char		name[NAMSIZ];
954887Schin 	char		mode[TMODLEN];
964887Schin 	char		uid[TUIDLEN];
974887Schin 	char		gid[TGIDLEN];
984887Schin 	char		size[TSIZLEN];
994887Schin 	char		mtime[TMTMLEN];
1004887Schin 	char		chksum[TCKSLEN];
1014887Schin 	char		typeflag;
1024887Schin 	char		linkname[NAMSIZ];
1034887Schin 	char		magic[TMAGLEN];
1044887Schin 	char		version[TVERSLEN];
1054887Schin 	char		uname[TUNMLEN];
1064887Schin 	char		gname[TGNMLEN];
1074887Schin 	char		devmajor[TDEVLEN];
1084887Schin 	char		devminor[TDEVLEN];
1094887Schin 	char		prefix[PFXSIZ];
1104887Schin };
1114887Schin 
1124887Schin union hblock
1134887Schin {
1144887Schin 	char		dummy[TBLOCK];
1154887Schin 	struct header	dbuf;
1164887Schin };
1174887Schin 
1184887Schin #endif
119