]> Dogcows Code - chaz/tar/blobdiff - src/tar.h
(sort_obstack): Fixed typo in the comment
[chaz/tar] / src / tar.h
index c2a200403884f22caa0fd371aa0f3343829c44e0..677d1dd02d2e03a0885720f73ce40d725266274b 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.  */
@@ -225,7 +253,9 @@ enum archive_format
   USTAR_FORMAT,                 /* POSIX.1-1988 (ustar) format */
   POSIX_FORMAT,                        /* POSIX.1-2001 format */
   STAR_FORMAT,                  /* Star format defined in 1994 */
-  GNU_FORMAT                   /* POSIX format with GNU extensions */
+  GNU_FORMAT                   /* Same as OLDGNU_FORMAT with one exception:
+                                   see FIXME note for to_chars() function
+                                   (create.c:189) */
 };
 
 /* Information about a sparse file.  */
@@ -250,6 +280,11 @@ struct tar_stat_info
   char          *gname;     /* group name of owner */
   struct stat   stat;       /* regular filesystem stat */
 
+  /* Nanosecond parts of file timestamps (if available) */
+  unsigned long atime_nsec;
+  unsigned long mtime_nsec;
+  unsigned long ctime_nsec;
+  
   off_t archive_file_size;  /* Size of file as stored in the archive.
                               Equals stat.st_size for non-sparse files */
 
@@ -267,6 +302,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.024851 seconds and 4 git commands to generate.