Skip to content

Commit 5be978f

Browse files
authored
Ignore global header entries when creating an FS (#19)
Closes #18
2 parents 59cb291 + 250a2c6 commit 5be978f

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

fs.go

+3
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ func New(r io.Reader) (fs.FS, error) {
5353
if err != nil {
5454
return nil, err
5555
}
56+
if h.Typeflag == tar.TypeXGlobalHeader {
57+
continue
58+
}
5659

5760
name := path.Clean(h.Name)
5861
if name == "." {

fs_test.go

+16
Original file line numberDiff line numberDiff line change
@@ -413,3 +413,19 @@ func TestSparse(t *testing.T) {
413413
assert.Equal([]byte("file2"), file2Actual, "fs.ReadFile(tfs, \"file2\")")
414414
}
415415
}
416+
417+
func TestIgnoreGlobalHeader(t *testing.T) {
418+
require := require.New(t)
419+
420+
// This file was created by initializing a git repository,
421+
// committing a few files, and running: `git archive HEAD`
422+
f, err := os.Open("test-with-global-header.tar")
423+
require.NoError(err)
424+
defer f.Close()
425+
426+
tfs, err := New(f)
427+
require.NoError(err)
428+
429+
err = fstest.TestFS(tfs, "bar", "dir1", "dir1/file11")
430+
require.NoError(err)
431+
}

test-with-global-header.tar

10 KB
Binary file not shown.

0 commit comments

Comments
 (0)