Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/include/tar.h
1810 views
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 <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
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
92
struct 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
112
union hblock
113
{
114
char dummy[TBLOCK];
115
struct header dbuf;
116
};
117
118
#endif
119
120