mirror of
https://github.com/golang/go
synced 2024-11-21 22:34:48 -07:00
archive/tar: when writing tar Headers write hdr.Linkname
This should allow symlinks in tar files. Where previously as far as I can see they were skipped completely. R=golang-dev, dsymonds, rsc, bradfitz, bradfitz CC=golang-dev, mike.rosset https://golang.org/cl/4973044
This commit is contained in:
parent
d06753876f
commit
af8b1271eb
BIN
src/pkg/archive/tar/testdata/writer.tar
vendored
BIN
src/pkg/archive/tar/testdata/writer.tar
vendored
Binary file not shown.
@ -134,7 +134,7 @@ func (tw *Writer) WriteHeader(hdr *Header) os.Error {
|
|||||||
tw.numeric(s.next(12), hdr.Mtime) // 136:148
|
tw.numeric(s.next(12), hdr.Mtime) // 136:148
|
||||||
s.next(8) // chksum (148:156)
|
s.next(8) // chksum (148:156)
|
||||||
s.next(1)[0] = hdr.Typeflag // 156:157
|
s.next(1)[0] = hdr.Typeflag // 156:157
|
||||||
s.next(100) // linkname (157:257)
|
tw.cString(s.next(100), hdr.Linkname) // linkname (157:257)
|
||||||
copy(s.next(8), []byte("ustar\x0000")) // 257:265
|
copy(s.next(8), []byte("ustar\x0000")) // 257:265
|
||||||
tw.cString(s.next(32), hdr.Uname) // 265:297
|
tw.cString(s.next(32), hdr.Uname) // 265:297
|
||||||
tw.cString(s.next(32), hdr.Gname) // 297:329
|
tw.cString(s.next(32), hdr.Gname) // 297:329
|
||||||
|
@ -24,6 +24,10 @@ type writerTest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var writerTests = []*writerTest{
|
var writerTests = []*writerTest{
|
||||||
|
// The writer test file was produced with this command:
|
||||||
|
// tar (GNU tar) 1.26
|
||||||
|
// ln -s small.txt link.txt
|
||||||
|
// tar -b 1 --format=ustar -c -f writer.tar small.txt small2.txt link.txt
|
||||||
&writerTest{
|
&writerTest{
|
||||||
file: "testdata/writer.tar",
|
file: "testdata/writer.tar",
|
||||||
entries: []*writerTestEntry{
|
entries: []*writerTestEntry{
|
||||||
@ -55,6 +59,21 @@ var writerTests = []*writerTest{
|
|||||||
},
|
},
|
||||||
contents: "Google.com\n",
|
contents: "Google.com\n",
|
||||||
},
|
},
|
||||||
|
&writerTestEntry{
|
||||||
|
header: &Header{
|
||||||
|
Name: "link.txt",
|
||||||
|
Mode: 0777,
|
||||||
|
Uid: 1000,
|
||||||
|
Gid: 1000,
|
||||||
|
Size: 0,
|
||||||
|
Mtime: 1314603082,
|
||||||
|
Typeflag: '2',
|
||||||
|
Linkname: "small.txt",
|
||||||
|
Uname: "strings",
|
||||||
|
Gname: "strings",
|
||||||
|
},
|
||||||
|
// no contents
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// The truncated test file was produced using these commands:
|
// The truncated test file was produced using these commands:
|
||||||
|
Loading…
Reference in New Issue
Block a user