mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #35728 from tonistiigi/vendor-archive
vendor: update archive/tar
This commit is contained in:
commit
72a37709ad
3 changed files with 18 additions and 14 deletions
|
@ -148,7 +148,7 @@ github.com/opencontainers/selinux b29023b86e4a69d1b46b7e7b4e2b6fda03f0b9cd
|
||||||
# archive/tar
|
# archive/tar
|
||||||
# mkdir -p ./vendor/archive
|
# mkdir -p ./vendor/archive
|
||||||
# git clone git://github.com/tonistiigi/go-1.git ./go
|
# git clone git://github.com/tonistiigi/go-1.git ./go
|
||||||
# git --git-dir ./go/.git --work-tree ./go checkout revert-prefix-ignore
|
# git --git-dir ./go/.git --work-tree ./go checkout revert-prefix-ignore-1.9
|
||||||
# cp -a go/src/archive/tar ./vendor/archive/tar
|
# cp -a go/src/archive/tar ./vendor/archive/tar
|
||||||
# rm -rf ./go
|
# rm -rf ./go
|
||||||
# vndr
|
# vndr
|
||||||
|
|
14
vendor/archive/tar/common.go
vendored
14
vendor/archive/tar/common.go
vendored
|
@ -158,11 +158,15 @@ func (fi headerFileInfo) Mode() (mode os.FileMode) {
|
||||||
// sysStat, if non-nil, populates h from system-dependent fields of fi.
|
// sysStat, if non-nil, populates h from system-dependent fields of fi.
|
||||||
var sysStat func(fi os.FileInfo, h *Header) error
|
var sysStat func(fi os.FileInfo, h *Header) error
|
||||||
|
|
||||||
// Mode constants from the tar spec.
|
|
||||||
const (
|
const (
|
||||||
|
// Mode constants from the USTAR spec:
|
||||||
|
// See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_06
|
||||||
c_ISUID = 04000 // Set uid
|
c_ISUID = 04000 // Set uid
|
||||||
c_ISGID = 02000 // Set gid
|
c_ISGID = 02000 // Set gid
|
||||||
c_ISVTX = 01000 // Save text (sticky bit)
|
c_ISVTX = 01000 // Save text (sticky bit)
|
||||||
|
|
||||||
|
// Common Unix mode constants; these are not defined in any common tar standard.
|
||||||
|
// Header.FileInfo understands these, but FileInfoHeader will never produce these.
|
||||||
c_ISDIR = 040000 // Directory
|
c_ISDIR = 040000 // Directory
|
||||||
c_ISFIFO = 010000 // FIFO
|
c_ISFIFO = 010000 // FIFO
|
||||||
c_ISREG = 0100000 // Regular file
|
c_ISREG = 0100000 // Regular file
|
||||||
|
@ -208,30 +212,24 @@ func FileInfoHeader(fi os.FileInfo, link string) (*Header, error) {
|
||||||
}
|
}
|
||||||
switch {
|
switch {
|
||||||
case fm.IsRegular():
|
case fm.IsRegular():
|
||||||
h.Mode |= c_ISREG
|
|
||||||
h.Typeflag = TypeReg
|
h.Typeflag = TypeReg
|
||||||
h.Size = fi.Size()
|
h.Size = fi.Size()
|
||||||
case fi.IsDir():
|
case fi.IsDir():
|
||||||
h.Typeflag = TypeDir
|
h.Typeflag = TypeDir
|
||||||
h.Mode |= c_ISDIR
|
|
||||||
h.Name += "/"
|
h.Name += "/"
|
||||||
case fm&os.ModeSymlink != 0:
|
case fm&os.ModeSymlink != 0:
|
||||||
h.Typeflag = TypeSymlink
|
h.Typeflag = TypeSymlink
|
||||||
h.Mode |= c_ISLNK
|
|
||||||
h.Linkname = link
|
h.Linkname = link
|
||||||
case fm&os.ModeDevice != 0:
|
case fm&os.ModeDevice != 0:
|
||||||
if fm&os.ModeCharDevice != 0 {
|
if fm&os.ModeCharDevice != 0 {
|
||||||
h.Mode |= c_ISCHR
|
|
||||||
h.Typeflag = TypeChar
|
h.Typeflag = TypeChar
|
||||||
} else {
|
} else {
|
||||||
h.Mode |= c_ISBLK
|
|
||||||
h.Typeflag = TypeBlock
|
h.Typeflag = TypeBlock
|
||||||
}
|
}
|
||||||
case fm&os.ModeNamedPipe != 0:
|
case fm&os.ModeNamedPipe != 0:
|
||||||
h.Typeflag = TypeFifo
|
h.Typeflag = TypeFifo
|
||||||
h.Mode |= c_ISFIFO
|
|
||||||
case fm&os.ModeSocket != 0:
|
case fm&os.ModeSocket != 0:
|
||||||
h.Mode |= c_ISSOCK
|
return nil, fmt.Errorf("archive/tar: sockets not supported")
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("archive/tar: unknown file mode %v", fm)
|
return nil, fmt.Errorf("archive/tar: unknown file mode %v", fm)
|
||||||
}
|
}
|
||||||
|
|
10
vendor/archive/tar/writer.go
vendored
10
vendor/archive/tar/writer.go
vendored
|
@ -121,9 +121,15 @@ func (tw *Writer) writeHeader(hdr *Header, allowPax bool) error {
|
||||||
needsPaxHeader := paxKeyword != paxNone && len(s) > len(b) || !isASCII(s)
|
needsPaxHeader := paxKeyword != paxNone && len(s) > len(b) || !isASCII(s)
|
||||||
if needsPaxHeader {
|
if needsPaxHeader {
|
||||||
paxHeaders[paxKeyword] = s
|
paxHeaders[paxKeyword] = s
|
||||||
return
|
|
||||||
}
|
}
|
||||||
f.formatString(b, s)
|
|
||||||
|
// Write string in a best-effort manner to satisfy readers that expect
|
||||||
|
// the field to be non-empty.
|
||||||
|
s = toASCII(s)
|
||||||
|
if len(s) > len(b) {
|
||||||
|
s = s[:len(b)]
|
||||||
|
}
|
||||||
|
f.formatString(b, s) // Should never error
|
||||||
}
|
}
|
||||||
var formatNumeric = func(b []byte, x int64, paxKeyword string) {
|
var formatNumeric = func(b []byte, x int64, paxKeyword string) {
|
||||||
// Try octal first.
|
// Try octal first.
|
||||||
|
|
Loading…
Add table
Reference in a new issue