From 8613e35221879e2472f729f53461dc312527f8f7 Mon Sep 17 00:00:00 2001 From: Caleb Gardner Date: Tue, 10 May 2022 01:40:32 -0500 Subject: [PATCH] Fixed some bugs THINGS ARE BROKEN FOR NO REASON --- internal/directory/directory.go | 4 ++-- reader_file.go | 1 + fileinfo.go => reader_fileinfo.go | 0 reader_fs.go | 2 ++ reader_test.go | 4 +++- 5 files changed, 8 insertions(+), 3 deletions(-) rename fileinfo.go => reader_fileinfo.go (100%) diff --git a/internal/directory/directory.go b/internal/directory/directory.go index 2632ae0..0f37fa2 100644 --- a/internal/directory/directory.go +++ b/internal/directory/directory.go @@ -42,14 +42,14 @@ func readEntry(r io.Reader) (e entry, err error) { } func ReadEntries(rdr io.Reader, size uint32) (e []Entry, err error) { - dat := make([]byte, size) + dat := make([]byte, size-3) rdr.Read(dat) r := bytes.NewReader(dat) var h header var en entry for { err = binary.Read(r, binary.LittleEndian, &h) - if err == io.ErrUnexpectedEOF { + if err == io.EOF { err = nil return } else if err != nil { diff --git a/reader_file.go b/reader_file.go index 4cb2ced..d667451 100644 --- a/reader_file.go +++ b/reader_file.go @@ -252,6 +252,7 @@ func (f File) ExtractWithOptions(folder string, op ExtractionOptions) error { fil.Close() return } + fil.parent, _ = f.FS() errChan <- fil.ExtractWithOptions(folder+"/"+f.e.Name, op) fil.Close() }(ents[i]) diff --git a/fileinfo.go b/reader_fileinfo.go similarity index 100% rename from fileinfo.go rename to reader_fileinfo.go diff --git a/reader_fs.go b/reader_fs.go index 432aa0e..4ea8c9a 100644 --- a/reader_fs.go +++ b/reader_fs.go @@ -64,6 +64,7 @@ func (f FS) Open(name string) (fs.File, error) { Err: err, } } + newFS.parent = &f out, err := newFS.Open(strings.Join(split[1:], "/")) if err != nil { err.(*fs.PathError).Path = name @@ -78,6 +79,7 @@ func (f FS) Open(name string) (fs.File, error) { Err: err, } } + out.parent = &f return out, err } return nil, &fs.PathError{ diff --git a/reader_test.go b/reader_test.go index 1c52886..47695f9 100644 --- a/reader_test.go +++ b/reader_test.go @@ -97,7 +97,9 @@ func TestAppImage(t *testing.T) { t.Fatal(err) } os.RemoveAll(wd + "/testing/firefox") - err = rdr.ExtractTo(wd + "/testing/firefox") + op := DefaultOptions() + op.Verbose = true + err = rdr.ExtractWithOptions(wd+"/testing/firefox", op) t.Fatal(err) }