1 /* $NetBSD: tar.h,v 1.1.1.4 2015/01/02 20:34:27 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 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.13 2010/11/30 14:58:53 rrt 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 53 union 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