X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftar.h;h=5aa0a489bb56d998e4d16af0b90c9b605038cef3;hb=72e5a9beb6f5b37fbb6018f661eda7e6aba49402;hp=ff2977b3686d3dda258b0b9910768bee9322a322;hpb=e2b5f1e918f086e35cbc0b57cedcd40279e8b6e4;p=chaz%2Ftar diff --git a/src/tar.h b/src/tar.h index ff2977b..5aa0a48 100644 --- a/src/tar.h +++ b/src/tar.h @@ -1,7 +1,7 @@ /* GNU tar Archive Format description. - Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, - 1997, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 2000, 2001, 2003 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -53,6 +53,29 @@ struct posix_header /* 500 */ }; +struct star_header +{ /* byte offset */ + char name[100]; /* 0 */ + char mode[8]; /* 100 */ + char uid[8]; /* 108 */ + char gid[8]; /* 116 */ + char size[12]; /* 124 */ + char mtime[12]; /* 136 */ + char chksum[8]; /* 148 */ + char typeflag; /* 156 */ + char linkname[100]; /* 157 */ + char magic[6]; /* 257 */ + char version[2]; /* 263 */ + char uname[32]; /* 265 */ + char gname[32]; /* 297 */ + char devmajor[8]; /* 329 */ + char devminor[8]; /* 337 */ + char prefix[131]; /* 345 */ + char atime[12]; /* 476 */ + char ctime[12]; /* 488 */ + /* 500 */ +}; + #define TMAGIC "ustar" /* ustar and a null */ #define TMAGLEN 6 #define TVERSION "00" /* 00 and no null */ @@ -69,6 +92,10 @@ struct posix_header #define FIFOTYPE '6' /* FIFO special */ #define CONTTYPE '7' /* reserved */ +#define XHDTYPE 'x' /* Extended header referring to the + next file in the archive */ +#define XGLTYPE 'g' /* Global extended header */ + /* Bits used in the mode field, values in octal. */ #define TSUID 04000 /* set UID on execution */ #define TSGID 02000 /* set GID on execution */ @@ -185,7 +212,12 @@ struct oldgnu_header #define OLDGNU_MAGIC "ustar " /* 7 chars and a null */ /* The standards committee allows only capital A through capital Z for - user-defined expansion. */ + user-defined expansion. Other letters in use include: + + 'A' Solaris Access Control List + 'E' Solaris Extended Attribute File + 'I' Inode only, as in 'star' + 'X' POSIX 1003.1-2001 eXtended (VU version) */ /* This is a dir entry that contains the names of files that were in the dir at the time the dump was made. */ @@ -220,13 +252,31 @@ enum archive_format V7_FORMAT, /* old V7 tar format */ OLDGNU_FORMAT, /* GNU format as per before tar 1.12 */ POSIX_FORMAT, /* restricted, pure POSIX format */ + STAR_FORMAT, /* Star format defined in 1994 */ GNU_FORMAT /* POSIX format with GNU extensions */ }; +struct tar_stat_info +{ + char *orig_file_name; /* name of file read from the archive header */ + char *file_name; /* name of file for the current archive entry + after being normalized. */ + int had_trailing_slash; /* nonzero if the current archive entry had a + trailing slash before it was normalized. */ + char *link_name; /* name of link for the current archive entry. */ + + unsigned int devminor; /* device minor number */ + unsigned int devmajor; /* device major number */ + char *uname; /* user name of owner */ + char *gname; /* group name of owner */ + struct stat stat; /* regular filesystem stat */ +}; + union block { char buffer[BLOCKSIZE]; struct posix_header header; + struct star_header star_header; struct extra_header extra_header; struct oldgnu_header oldgnu_header; struct sparse_header sparse_header;