1/*	$NetBSD: tar.h,v 1.1.1.5 2023/08/18 18:36:50 christos Exp $	*/
2
3/*
4 * Copyright (c) Ian F. Darwin 1986-1995.
5 * Software written by Ian F. Darwin and others;
6 * maintained 1995-present by Christos Zoulas and others.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice immediately at the beginning of the file, without modification,
13 *    this list of conditions, and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
22 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 */
30/*
31 * Header file for file_public domain tar (tape archive) program.
32 *
33 * @(#)tar.h 1.20 86/10/29	Public Domain.
34 *
35 * Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
36 *
37 * $File: tar.h,v 1.16 2022/12/26 17:31:14 christos Exp $ # checkin only
38 */
39
40/*
41 * Header block on tape.
42 *
43 * I'm going to use traditional DP naming conventions here.
44 * A "block" is a big chunk of stuff that we do I/O on.
45 * A "record" is a piece of info that we care about.
46 * Typically many "record"s fit into a "block".
47 */
48#define	RECORDSIZE	512
49#define	NAMSIZ	100
50#define	TUNMLEN	32
51#define	TGNMLEN	32
52
53union record {
54	unsigned char	charptr[RECORDSIZE];
55	struct header {
56		char	name[NAMSIZ];
57		char	mode[8];
58		char	uid[8];
59		char	gid[8];
60		char	size[12];
61		char	mtime[12];
62		char	chksum[8];
63		char	linkflag;
64		char	linkname[NAMSIZ];
65		char	magic[8];
66		char	uname[TUNMLEN];
67		char	gname[TGNMLEN];
68		char	devmajor[8];
69		char	devminor[8];
70	} header;
71};
72
73/* The magic field is filled with this if uname and gname are valid. */
74#define	TMAGIC		"ustar"		/* 5 chars and a null */
75#define	GNUTMAGIC	"ustar  "	/* 7 chars and a null */
76