mirror of
https://github.com/golang/go.git
synced 2025-05-28 02:41:30 +00:00
Add support for v7 tar.
R=rsc APPROVED=rsc DELTA=32 (26 added, 4 deleted, 2 changed) OCL=31172 CL=31242
This commit is contained in:
parent
2acbc37166
commit
52ccdf3510
BIN
src/pkg/archive/tar/testdata/v7.tar
vendored
Normal file
BIN
src/pkg/archive/tar/testdata/v7.tar
vendored
Normal file
Binary file not shown.
@ -4,7 +4,7 @@
|
||||
|
||||
// The tar package implements access to tar archives.
|
||||
// It aims to cover most of the variations, including those produced
|
||||
// by GNU and BSD tars (not yet started).
|
||||
// by GNU and BSD tars.
|
||||
//
|
||||
// References:
|
||||
// http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5
|
||||
@ -12,8 +12,7 @@
|
||||
package tar
|
||||
|
||||
// TODO(dsymonds):
|
||||
// - Make it seekable.
|
||||
// - Extensions.
|
||||
// - pax extensions
|
||||
|
||||
import (
|
||||
"bufio";
|
||||
@ -211,9 +210,6 @@ func (tr *Reader) readHeader() *Header {
|
||||
hdr := new(Header);
|
||||
s := slicer(header);
|
||||
|
||||
// TODO(dsymonds): The format of the header depends on the value of magic (hdr[257:262]),
|
||||
// so use that value to do the correct parsing below.
|
||||
|
||||
hdr.Name = cString(s.next(100));
|
||||
hdr.Mode = tr.octal(s.next(8));
|
||||
hdr.Uid = tr.octal(s.next(8));
|
||||
@ -225,6 +221,8 @@ func (tr *Reader) readHeader() *Header {
|
||||
hdr.Linkname = cString(s.next(100));
|
||||
|
||||
// The remainder of the header depends on the value of magic.
|
||||
// The original (v7) version of tar had no explicit magic field,
|
||||
// so its magic bytes, like the rest of the block, are NULs.
|
||||
magic := string(s.next(8)); // contains version field as well.
|
||||
var format string;
|
||||
switch magic {
|
||||
|
@ -79,6 +79,29 @@ var untarTests = []*untarTest{
|
||||
},
|
||||
},
|
||||
},
|
||||
&untarTest{
|
||||
file: "testdata/v7.tar",
|
||||
headers: []*Header{
|
||||
&Header{
|
||||
Name: "small.txt",
|
||||
Mode: 0640,
|
||||
Uid: 73025,
|
||||
Gid: 5000,
|
||||
Size: 5,
|
||||
Mtime: 1246508266,
|
||||
Typeflag: '\x00',
|
||||
},
|
||||
&Header{
|
||||
Name: "small2.txt",
|
||||
Mode: 0640,
|
||||
Uid: 73025,
|
||||
Gid: 5000,
|
||||
Size: 11,
|
||||
Mtime: 1245217492,
|
||||
Typeflag: '\x00',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
func TestAll(t *testing.T) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user