tar: Old GNU Format

1 
1 Old GNU Format
1 --------------
1 
1 The format introduced in November 1990 (v.  1.09) was designed on top of
1 standard 'ustar' headers in such an unfortunate way that some of its
1 fields overwrote fields required by POSIX.
1 
1    An old GNU sparse header is designated by type 'S' ('GNUTYPE_SPARSE')
1 and has the following layout:
1 
1 Offset  Size    Name           Data type      Contents
1 ----------------------------------------------------------------------------
1 0       345                    N/A            Not used.
1 345     12      atime          Number         'atime' of the file.
1 357     12      ctime          Number         'ctime' of the file .
1 369     12      offset         Number         For multivolume archives:
1                                               the offset of the start of
1                                               this volume.
1 381     4                      N/A            Not used.
1 385     1                      N/A            Not used.
1 386     96      sp             'sparse_header'(4 entries) File map.
1 482     1       isextended     Bool           '1' if an extension sparse
1                                               header follows, '0'
1                                               otherwise.
1 483     12      realsize       Number         Real size of the file.
1 
1    Each of 'sparse_header' object at offset 386 describes a single data
1 chunk.  It has the following structure:
1 
1 Offset  Size    Data type      Contents
1 ---------------------------------------------------------------------------
1 0       12      Number         Offset of the beginning of the chunk.
1 12      12      Number         Size of the chunk.
1 
1    If the member contains more than four chunks, the 'isextended' field
1 of the header has the value '1' and the main header is followed by one
1 or more "extension headers".  Each such header has the following
1 structure:
1 
1 Offset  Size    Name           Data type      Contents
1 ----------------------------------------------------------------------------
1 0       21      sp             'sparse_header'(21 entries) File map.
1 504     1       isextended     Bool           '1' if an extension sparse
1                                               header follows, or '0'
1                                               otherwise.
1 
1    A header with 'isextended=0' ends the map.
1