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.13 2010/11/30 14:58:53 rrt Exp $ # checkin only
36 */
37
38/*
39 * Header block on tape.
40 *
41 * I'm going to use traditional DP naming conventions here.
42 * A "block" is a big chunk of stuff that we do I/O on.
43 * A "record" is a piece of info that we care about.
44 * Typically many "record"s fit into a "block".
45 */
46#define	RECORDSIZE	512
47#define	NAMSIZ	100
48#define	TUNMLEN	32
49#define	TGNMLEN	32
50
51union record {
52	unsigned char	charptr[RECORDSIZE];
53	struct header {
54		char	name[NAMSIZ];
55		char	mode[8];
56		char	uid[8];
57		char	gid[8];
58		char	size[12];
59		char	mtime[12];
60		char	chksum[8];
61		char	linkflag;
62		char	linkname[NAMSIZ];
63		char	magic[8];
64		char	uname[TUNMLEN];
65		char	gname[TGNMLEN];
66		char	devmajor[8];
67		char	devminor[8];
68	} header;
69};
70
71/* The magic field is filled with this if uname and gname are valid. */
72#define	TMAGIC		"ustar"		/* 5 chars and a null */
73#define	GNUTMAGIC	"ustar  "	/* 7 chars and a null */
74