Fixed some bugs

THINGS ARE BROKEN FOR NO REASON
This commit is contained in:
Caleb Gardner
2022-05-10 01:40:32 -05:00
parent 16ef5838c3
commit 8613e35221
5 changed files with 8 additions and 3 deletions
+2 -2
View File
@@ -42,14 +42,14 @@ func readEntry(r io.Reader) (e entry, err error) {
} }
func ReadEntries(rdr io.Reader, size uint32) (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) rdr.Read(dat)
r := bytes.NewReader(dat) r := bytes.NewReader(dat)
var h header var h header
var en entry var en entry
for { for {
err = binary.Read(r, binary.LittleEndian, &h) err = binary.Read(r, binary.LittleEndian, &h)
if err == io.ErrUnexpectedEOF { if err == io.EOF {
err = nil err = nil
return return
} else if err != nil { } else if err != nil {
+1
View File
@@ -252,6 +252,7 @@ func (f File) ExtractWithOptions(folder string, op ExtractionOptions) error {
fil.Close() fil.Close()
return return
} }
fil.parent, _ = f.FS()
errChan <- fil.ExtractWithOptions(folder+"/"+f.e.Name, op) errChan <- fil.ExtractWithOptions(folder+"/"+f.e.Name, op)
fil.Close() fil.Close()
}(ents[i]) }(ents[i])
View File
+2
View File
@@ -64,6 +64,7 @@ func (f FS) Open(name string) (fs.File, error) {
Err: err, Err: err,
} }
} }
newFS.parent = &f
out, err := newFS.Open(strings.Join(split[1:], "/")) out, err := newFS.Open(strings.Join(split[1:], "/"))
if err != nil { if err != nil {
err.(*fs.PathError).Path = name err.(*fs.PathError).Path = name
@@ -78,6 +79,7 @@ func (f FS) Open(name string) (fs.File, error) {
Err: err, Err: err,
} }
} }
out.parent = &f
return out, err return out, err
} }
return nil, &fs.PathError{ return nil, &fs.PathError{
+3 -1
View File
@@ -97,7 +97,9 @@ func TestAppImage(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
os.RemoveAll(wd + "/testing/firefox") 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) t.Fatal(err)
} }