da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Standard Archive Format
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * USTAR - Uniform Standard Tape ARchive
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _TAR_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _TAR_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TBLOCK 512
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NAMSIZ 100
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define PFXSIZ 155
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TMODLEN 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TUIDLEN 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TGIDLEN 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TSIZLEN 12
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TMTMLEN 12
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TCKSLEN 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TMAGIC "ustar" /* ustar and a null */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TMAGLEN 6
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TVERSION "00" /* 00 and no null */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TVERSLEN 2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TUNMLEN 32
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TGNMLEN 32
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TDEVLEN 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * values used in typeflag field
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define REGTYPE '0' /* regular file */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AREGTYPE 0 /* alternate REGTYPE */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LNKTYPE '1' /* hard link */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SYMTYPE '2' /* soft link */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CHRTYPE '3' /* character special */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define BLKTYPE '4' /* block special */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define DIRTYPE '5' /* directory */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define FIFOTYPE '6' /* FIFO special */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONTTYPE '7' /* reserved */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SOKTYPE '8' /* socket */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define EXTTYPE 'x' /* extended header */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define GLBTYPE 'g' /* global extended header */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LLNKTYPE 'K' /* long link path */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LREGTYPE 'L' /* long file path */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define VERTYPE 'V' /* version */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * bits used in mode field
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TSUID 04000 /* set uid on exec */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TSGID 02000 /* set gid on exec */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TSVTX 01000 /* sticky bit -- reserved */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * file permissions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TUREAD 00400 /* read by owner */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TUWRITE 00200 /* write by owner */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TUEXEC 00100 /* execute by owner */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TGREAD 00040 /* read by group */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TGWRITE 00020 /* execute by group */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TGEXEC 00010 /* write by group */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TOREAD 00004 /* read by other */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TOWRITE 00002 /* write by other */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TOEXEC 00001 /* execute by other */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstruct header
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char name[NAMSIZ];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char mode[TMODLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char uid[TUIDLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char gid[TGIDLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char size[TSIZLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char mtime[TMTMLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char chksum[TCKSLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char typeflag;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char linkname[NAMSIZ];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char magic[TMAGLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char version[TVERSLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char uname[TUNMLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char gname[TGNMLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char devmajor[TDEVLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char devminor[TDEVLEN];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char prefix[PFXSIZ];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin};
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinunion hblock
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char dummy[TBLOCK];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct header dbuf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin};
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif