This implementation follows the default policy in 28 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 50, it does not:
| case | what it is | what it makes of it |
|---|---|---|
F03 end-lone-zero-block | An end-of-archive marker of one zero block, not two. | extracts a (2 B, 87428fc5) |
F04 end-missing | No end-of-archive marker: the archive ends after a complete member. | extracts a (2 B, 87428fc5) |
F06 checksum-signed | A checksum that only matches as the signed sum of the header. | extracts a (2 B, 87428fc5) |
F07 end-archive-after | Another archive after the end-of-archive marker. | extracts a (2 B, 87428fc5) |
F09 end-zero-block-then-member | A zero block, then another member: the end of the archive, or not? | extracts a (2 B, 87428fc5) |
F10 extended-pax-size-before-gnu-long | A pax size followed by a GNU long name: which of them does the size apply to? | extracts short-name (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F11 magic-odd-version | The POSIX magic with a version that is neither 00 nor NULs. | extracts a (2 B, 87428fc5) |
F13 pax-newline-in-path | A newline in a pax path, which split on lines is another record. | extracts plain (12 B, a578eb49) |
F15 pax-size-on-dir | A pax size on a directory, which takes the next header for its data. | extracts dir/, dir/smuggled (0 B, e3b0c442) |
F16 type-unknown | An unknown typeflag with a size: data, or no data? | extracts nothing |
F19 pax-global-between-extended-and-member | A global pax header between an extended header and its member. | extracts header-name (12 B, a578eb49) |
F20 pax-global-size | A 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-empty | An empty pax size, which in POSIX removes the size rather than giving one. | extracts a (512 B, 917dba8e) |
F22 pax-size-negative | A negative pax size, which a member cannot have. | extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F23 pax-size-plus | A pax size with a plus sign, +512, which conversions of strings to numbers accept. | extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F24 pax-size-leading-space | A pax size with a leading space, 512, which conversions of strings to numbers skip. | extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F25 pax-size-not-ascii-digits | A pax size in Arabic-Indic digits, ٥١٢, which some conversions of strings read as 512. | extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F26 pax-size-leading-zero | A pax size with a leading zero, 0777: 777 in decimal, as POSIX says, or 511 in octal. | extracts a (0 B, e3b0c442), smuggled-1 (0 B, e3b0c442), smuggled-2 (0 B, e3b0c442) |
F27 pax-size-too-large | A pax size of 2^64 + 512, which wraps around to 512 in 64 bits. | extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F28 pax-newline-in-comment | A newline in a pax comment, which split on lines leaves a size record. | extracts a (0 B, e3b0c442), smuggled (0 B, e3b0c442) |
F33 size-on-dir | A size in the header of a directory, which takes the next header for its data. | extracts dir/ |
F34 size-on-hardlink | A size in the header of a hard link, in a pax archive, which takes the next header for its data. | extracts a (2 B, 87428fc5) |
F35 pax-size-on-hardlink | A pax size on a hard link, which takes the next header for its data. | extracts a (2 B, 87428fc5), smuggled (0 B, e3b0c442) |
F36 pax-record-length-short | A pax record whose length is one byte short, so that it ends just before its newline. | extracts from-header (12 B, a578eb49) |
N08 extended-pax-path-and-gnu-long-name | A pax path and a GNU long name for one member, and a third name in its header. | extracts from-header (12 B, a578eb49) |
N09 extended-two-pax-headers | Two pax extended headers for one member, with different paths. | extracts header-name (12 B, a578eb49) |
N10 format-star | A 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) |
N13 name-backslash | A backslash in a name: a character on Unix, a separator on Windows. | extracts a\b (21 B, 15acfc39) |
N18 name-not-utf8 | A name that is not UTF-8. | extracts caf\xe9 (8 B, ff3f1fa3) |
N19 pax-nul-in-path | A NUL inside a pax path. | extracts header-name (12 B, 627be4bf) |
N20 pax-repeated-key | One pax key twice in one extended header. | extracts header-name (12 B, a578eb49) |
N21 pax-global-path | A global pax header with a path. | extracts a (2 B, 87428fc5), b (2 B, 02638299) |
N22 pax-path-empty | An empty pax path, which in POSIX removes the path rather than giving one. | extracts from-header (12 B, a578eb49) |
N23 extended-gnu-long-then-pax | A 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-binary | hdrcharset=BINARY, which declares a pax path that is not UTF-8 as bytes. | extracts cafe (12 B, a578eb49) |
N26 pax-global-path-then-empty | A global path, then a global header that removes it with an empty value. | extracts a (12 B, a578eb49) |
K01 kind-trailing-slash-file | A regular file whose name ends in a slash: a file, or a directory? | extracts a (0 B, e3b0c442) |
K02 linkname-on-file | A regular file with a link target. | extracts a (19 B, bc345849) |
K03 symlink-trailing-slash | A symlink whose name ends in a slash. | extracts link → target, target/ |
S03 hardlink-missing-target | A hardlink to a member that is not in the archive. | extracts nothing |
S04 hardlink-to-itself | A hardlink to itself. | extracts a (2 B, 87428fc5) |
S05 hardlink-to-later-member | A hardlink to a member that comes later. | extracts f (2 B, 092fcfbb) |
S06 hardlink-to-symlink | A hardlink to a symlink: a link to the symlink, or to its target? | extracts f (2 B, 092fcfbb), s → f |
S07 tree-duplicate-file-differs | The same file twice, with different contents: the first copy, or the last? | extracts a (5 B, 761d1fb1) |
S09 tree-duplicate-file-identical | The same file twice, with the same contents. | extracts a (5 B, a6328afc) |
S10 tree-symlink-then-file | A symlink, then a file of the same name: replace the link, or write through it? | extracts a (28 B, d5a04bbb) |
S13 hardlink-empty-target | A hardlink with an empty target. | extracts a (2 B, 87428fc5) |
| case | what it is | what it makes of it |
|---|---|---|
N01 gnu-long-name | A name over 100 bytes, in a GNU long name. | extracts dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/, dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/fffffffffffffffffffffffffffffffffffffff (5 B, bbdbb75b) |
N03 pax-long-name | A name over 100 bytes, in a pax path. | extracts dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/, dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/fffffffffffffffffffffffffffffffffffffff (5 B, bbdbb75b) |
F14 pax-size-disagrees | A pax size that disagrees with the header's, so that a reader of the header's misses a member. | extracts a (512 B, 917dba8e) |