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