case TypeXHeader, TypeGNULongName, TypeGNULongLink:
return FormatUnknown, nil, headerError{"cannot manually encode TypeXHeader, TypeGNULongName, or TypeGNULongLink headers"}
case TypeXGlobalHeader:
- if !reflect.DeepEqual(h, Header{Typeflag: h.Typeflag, Xattrs: h.Xattrs, PAXRecords: h.PAXRecords, Format: h.Format}) {
- return FormatUnknown, nil, headerError{"only PAXRecords may be set for TypeXGlobalHeader"}
+ h2 := Header{Name: h.Name, Typeflag: h.Typeflag, Xattrs: h.Xattrs, PAXRecords: h.PAXRecords, Format: h.Format}
+ if !reflect.DeepEqual(h, h2) {
+ return FormatUnknown, nil, headerError{"only PAXRecords should be set for TypeXGlobalHeader"}
}
whyOnlyPAX = "only PAX supports TypeXGlobalHeader"
format.mayOnlyBe(FormatPAX)
file: "testdata/pax-global-records.tar",
headers: []*Header{{
Typeflag: TypeXGlobalHeader,
+ Name: "global1",
PAXRecords: map[string]string{"path": "global1", "mtime": "1500000000.0"},
Format: FormatPAX,
}, {
Format: FormatPAX,
}, {
Typeflag: TypeXGlobalHeader,
+ Name: "GlobalHead.0.0",
PAXRecords: map[string]string{"path": ""},
Format: FormatPAX,
}, {
var name string
var flag byte
if isGlobal {
- name = "GlobalHead.0.0"
+ name = realName
+ if name == "" {
+ name = "GlobalHead.0.0"
+ }
flag = TypeXGlobalHeader
} else {
dir, file := path.Split(realName)