]> Dogcows Code - chaz/tar/commitdiff
(decode_header): Added initial support for POSIX extended
authorSergey Poznyakoff <gray@gnu.org.ua>
Sun, 31 Aug 2003 22:38:55 +0000 (22:38 +0000)
committerSergey Poznyakoff <gray@gnu.org.ua>
Sun, 31 Aug 2003 22:38:55 +0000 (22:38 +0000)
and STAR headers.
(skip_member): Check oldgnu_header only if current_format is set
to OLDGNU_FORMAT

src/tar.h

index e51436380d2fb2b51b7cc6a012a13dfdc94918dc..5aa0a489bb56d998e4d16af0b90c9b605038cef3 100644 (file)
--- a/src/tar.h
+++ b/src/tar.h
@@ -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 */
@@ -225,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;
This page took 0.025892 seconds and 4 git commands to generate.