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) {
|
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 {
|
||||||
|
|||||||
@@ -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])
|
||||||
|
|||||||
@@ -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
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user