mirror of
https://github.com/rwinkhart/go-winio.git
synced 2026-09-05 16:47:31 -04:00
Add tar.Headers.Winheaders for Windows metadata
This commit is contained in:
@@ -59,6 +59,7 @@ type Header struct {
|
|||||||
AccessTime time.Time // access time
|
AccessTime time.Time // access time
|
||||||
ChangeTime time.Time // status change time
|
ChangeTime time.Time // status change time
|
||||||
Xattrs map[string]string
|
Xattrs map[string]string
|
||||||
|
Winheaders map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
// File name constants from the tar spec.
|
// File name constants from the tar spec.
|
||||||
@@ -192,6 +193,7 @@ const (
|
|||||||
paxUid = "uid"
|
paxUid = "uid"
|
||||||
paxUname = "uname"
|
paxUname = "uname"
|
||||||
paxXattr = "SCHILY.xattr."
|
paxXattr = "SCHILY.xattr."
|
||||||
|
paxWindows = "MSWINDOWS."
|
||||||
paxNone = ""
|
paxNone = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -314,6 +314,11 @@ func mergePAX(hdr *Header, headers map[string]string) error {
|
|||||||
hdr.Xattrs = make(map[string]string)
|
hdr.Xattrs = make(map[string]string)
|
||||||
}
|
}
|
||||||
hdr.Xattrs[k[len(paxXattr):]] = v
|
hdr.Xattrs[k[len(paxXattr):]] = v
|
||||||
|
} else if strings.HasPrefix(k, paxWindows) {
|
||||||
|
if hdr.Winheaders == nil {
|
||||||
|
hdr.Winheaders = make(map[string]string)
|
||||||
|
}
|
||||||
|
hdr.Winheaders[k[len(paxWindows):]] = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -268,6 +268,9 @@ func (tw *Writer) writeHeader(hdr *Header, allowPax bool) error {
|
|||||||
for k, v := range hdr.Xattrs {
|
for k, v := range hdr.Xattrs {
|
||||||
paxHeaders[paxXattr+k] = v
|
paxHeaders[paxXattr+k] = v
|
||||||
}
|
}
|
||||||
|
for k, v := range hdr.Winheaders {
|
||||||
|
paxHeaders[paxWindows+k] = v
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(paxHeaders) > 0 {
|
if len(paxHeaders) > 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user