Working draft

.NET System.Formats.Tar

Version
System.Formats.Tar of .NET 10.0.14, ExtractToDirectory

This implementation follows the default policy in 55 of 78 cases:

The default policy is a working draft. Where an implementation does not do as it says, that can be a choice rather than a bug.

On the other 23, it does not:

!Accepts cases to reject (23)

casewhat it iswhat it makes of it
F03 end-lone-zero-blockAn end-of-archive marker of one zero block, not two.extracts a (2 B, 87428fc5)
F04 end-missingNo end-of-archive marker: the archive ends after a complete member.extracts a (2 B, 87428fc5)
F06 checksum-signedA checksum that only matches as the signed sum of the header.extracts a (2 B, 87428fc5)
F07 end-archive-afterAnother archive after the end-of-archive marker.extracts a (2 B, 87428fc5)
F09 end-zero-block-then-memberA zero block, then another member: the end of the archive, or not?extracts a (2 B, 87428fc5)
F20 pax-global-sizeA global pax header with a size, which frames every member after it, or none.extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442)
F21 pax-size-emptyAn empty pax size, which in POSIX removes the size rather than giving one.extracts a (512 B, 917dba8e)
F23 pax-size-plusA pax size with a plus sign, +512, which conversions of strings to numbers accept.extracts a (512 B, 917dba8e)
F24 pax-size-leading-spaceA pax size with a leading space, 512, which conversions of strings to numbers skip.extracts a (512 B, 917dba8e)
F26 pax-size-leading-zeroA pax size with a leading zero, 0777: 777 in decimal, as POSIX says, or 511 in octal.extracts a (777 B, b09d2516)
N08 extended-pax-path-and-gnu-long-nameA pax path and a GNU long name for one member, and a third name in its header.extracts from-header (12 B, a578eb49)
N10 format-starA ustar prefix whose end reads as star's times, with star's tar\0 at offset 508.extracts ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp15000000000 15000000000 /, ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp15000000000 15000000000 /a (2 B, 87428fc5)
N11 gnu-prefix-fieldThe prefix field of a header with GNU magic, which GNU tar uses for times in incremental archives.extracts a (2 B, 87428fc5)
N13 name-backslashA backslash in a name: a character on Unix, a separator on Windows.extracts a\b (21 B, 15acfc39)
N14 name-bytes-after-nulBytes after the NUL that ends a name.extracts a (10 B, ef476e8d)
N18 name-not-utf8A name that is not UTF-8.extracts caf� (8 B, ff3f1fa3)
N19 pax-nul-in-pathA NUL inside a pax path.extracts a_b (12 B, 627be4bf)
N21 pax-global-pathA global pax header with a path.extracts a (2 B, 87428fc5), b (2 B, 02638299)
N23 extended-gnu-long-then-paxA GNU long name, then a pax header, then the member: which of them does the long name apply to?extracts from-header (12 B, a578eb49)
N24 pax-hdrcharset-binaryhdrcharset=BINARY, which declares a pax path that is not UTF-8 as bytes.extracts caf� (12 B, a578eb49)
N26 pax-global-path-then-emptyA global path, then a global header that removes it with an empty value.extracts a (12 B, a578eb49)
K02 linkname-on-fileA regular file with a link target.extracts a (19 B, bc345849)
S06 hardlink-to-symlinkA hardlink to a symlink: a link to the symlink, or to its target?extracts f (2 B, 092fcfbb), h → f, s → f