]> Dogcows Code - chaz/tar/blobdiff - src/tar.h
Support for star sparse format
[chaz/tar] / src / tar.h
index c2a200403884f22caa0fd371aa0f3343829c44e0..449a93882678861c3479e30b6e0b9a504560702a 100644 (file)
--- a/src/tar.h
+++ b/src/tar.h
@@ -42,29 +42,6 @@ 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 */
@@ -212,6 +189,57 @@ struct oldgnu_header
 /* This file is a tape/volume header.  Ignore it on extraction.  */
 #define GNUTYPE_VOLHDR 'V'
 
+\f
+/* Jörg Schilling star header */
+
+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 SPARSES_IN_STAR_HEADER      4
+#define SPARSES_IN_STAR_EXT_HEADER  21
+
+struct star_in_header {
+  char fill[345];       /*   0  Everything that is before t_prefix */
+  char prefix[1];       /* 345  t_name prefix */
+  char fill2;           /* 346  */
+  char fill3[8];        /* 347  */
+  char isextended;      /* 355  */
+  struct sparse sp[SPARSES_IN_STAR_HEADER]; /* 356  */
+  char realsize[12];    /* 452  Actual size of the file */
+  char offset[12];      /* 464  Offset of multivolume contents */
+  char atime[12];       /* 476  */
+  char ctime[12];       /* 488  */
+  char mfill[8];        /* 500  */
+  char xmagic[4];       /* 508  "tar" */
+};
+
+struct star_ext_header {
+  struct sparse sp[SPARSES_IN_STAR_EXT_HEADER];
+  char isextended;
+};
+
+\f
+
 /* tar Header Block, overall structure.  */
 
 /* tar files are made in basic blocks of this size.  */
@@ -267,6 +295,8 @@ union block
   struct star_header star_header;
   struct oldgnu_header oldgnu_header;
   struct sparse_header sparse_header;
+  struct star_in_header star_in_header;
+  struct star_ext_header star_ext_header;
 };
 
 /* End of Format description.  */
This page took 0.025426 seconds and 4 git commands to generate.