Fixed some bugs
THINGS ARE BROKEN FOR NO REASON
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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{
|
||||
|
||||
+3
-1
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user