rpm
5.2.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
file
src
tar.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) Ian F. Darwin 1986-1995.
3
* Software written by Ian F. Darwin and others;
4
* maintained 1995-present by Christos Zoulas and others.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice immediately at the beginning of the file, without modification,
11
* this list of conditions, and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
20
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
/*
29
* Header file for public domain tar (tape archive) program.
30
*
31
* @(#)tar.h 1.20 86/10/29 Public Domain.
32
*
33
* Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
34
*
35
* $File: tar.h,v 1.11 2007/01/16 14:56:45 ljt Exp $ # checkin only
36
*/
37
38
/*
39
* Kludge for handling systems that cannot cope with multiple
40
* external definitions of a variable. In ONE routine (tar.c),
41
* we #define TAR_EXTERN to null; here, we set it to "extern" if
42
* it is not already set.
43
*/
44
#ifndef TAR_EXTERN
45
#define TAR_EXTERN extern
46
#endif
47
48
/*
49
* Header block on tape.
50
*
51
* I'm going to use traditional DP naming conventions here.
52
* A "block" is a big chunk of stuff that we do I/O on.
53
* A "record" is a piece of info that we care about.
54
* Typically many "record"s fit into a "block".
55
*/
56
#define RECORDSIZE 512
57
#define NAMSIZ 100
58
#define TUNMLEN 32
59
#define TGNMLEN 32
60
61
union
record
{
62
char
charptr
[
RECORDSIZE
];
63
struct
header
{
64
char
name
[
NAMSIZ
];
65
char
mode
[8];
66
char
uid
[8];
67
char
gid
[8];
68
char
size
[12];
69
char
mtime
[12];
70
char
chksum
[8];
71
char
linkflag
;
72
char
linkname
[
NAMSIZ
];
73
char
magic
[8];
74
char
uname
[
TUNMLEN
];
75
char
gname
[
TGNMLEN
];
76
char
devmajor
[8];
77
char
devminor
[8];
78
}
header
;
79
};
80
81
/* The checksum field is filled with this while the checksum is computed. */
82
#define CHKBLANKS " "
/* 8 blanks, no null */
83
84
/* The magic field is filled with this if uname and gname are valid. */
85
#define TMAGIC "ustar"
/* 5 chars and a null */
86
#define GNUTMAGIC "ustar "
/* 7 chars and a null */
87
88
/* The linkflag defines the type of file */
89
#define LF_OLDNORMAL '\0'
/* Normal disk file, Unix compat */
90
#define LF_NORMAL '0'
/* Normal disk file */
91
#define LF_LINK '1'
/* Link to previously dumped file */
92
#define LF_SYMLINK '2'
/* Symbolic link */
93
#define LF_CHR '3'
/* Character special file */
94
#define LF_BLK '4'
/* Block special file */
95
#define LF_DIR '5'
/* Directory */
96
#define LF_FIFO '6'
/* FIFO special file */
97
#define LF_CONTIG '7'
/* Contiguous file */
98
/* Further link types may be defined later. */
99
100
/*
101
* Exit codes from the "tar" program
102
*/
103
#define EX_SUCCESS 0
/* success! */
104
#define EX_ARGSBAD 1
/* invalid args */
105
#define EX_BADFILE 2
/* invalid filename */
106
#define EX_BADARCH 3
/* bad archive */
107
#define EX_SYSTEM 4
/* system gave unexpected error */
108
109
/*
110
* Structure for keeping track of filenames and lists thereof.
111
*/
112
struct
name
{
113
struct
name
*
next
;
114
short
length
;
115
char
found
;
116
char
name
[
NAMSIZ
+1];
117
};
118
119
/*
120
*
121
* Due to the next struct declaration, each routine that includes
122
* "tar.h" must also include <sys/types.h>. I tried to make it automatic,
123
* but System V has no defines in <sys/types.h>, so there is no way of
124
* knowing when it has been included. In addition, it cannot be included
125
* twice, but must be included exactly once. Argghh!
126
*
127
* Thanks, typedef. Thanks, USG.
128
*/
129
struct
link
{
130
struct
link
*
next
;
131
dev_t
dev
;
132
ino_t
ino
;
133
short
linkcount
;
134
char
name
[
NAMSIZ
+1];
135
};
Generated on Mon Jul 22 2013 12:45:26 for rpm by
1.8.3.1