Fixing issues

This commit is contained in:
Caleb Gardner
2022-06-18 06:30:04 -05:00
parent cde6a265a1
commit 9ac8fef3b2
13 changed files with 189 additions and 425 deletions
+21 -13
View File
@@ -19,15 +19,24 @@ type FS struct {
e []directory.Entry
}
func (r Reader) newFS(e directory.Entry) (f *FS, err error) {
f = new(FS)
f.i, err = r.inodeFromDir(e)
func (r Reader) newFS(e directory.Entry, parent *FS) (*FS, error) {
i, err := r.inodeFromDir(e)
if err != nil {
return
return nil, err
}
f.r = &r
f.e, err = r.readDirectory(f.i)
return
ents, err := r.readDirectory(i)
if err != nil {
return nil, err
}
return &FS{
File: &File{
i: i,
r: &r,
parent: parent,
e: e,
},
e: ents,
}, nil
}
//Open opens the file at name. Returns a squashfs.File.
@@ -56,7 +65,7 @@ func (f FS) Open(name string) (fs.File, error) {
}
}
if len(split) > 1 {
newFS, err := f.r.newFS(f.e[i])
newFS, err := f.r.newFS(f.e[i], &f)
if err != nil {
return nil, &fs.PathError{
Op: "open",
@@ -64,14 +73,14 @@ 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
}
return out, err
}
out, err := f.r.newFile(f.e[i])
// fmt.Println(f.e[i])
out, err := f.r.newFile(f.e[i], &f)
if err != nil {
err = &fs.PathError{
Op: "open",
@@ -79,7 +88,6 @@ func (f FS) Open(name string) (fs.File, error) {
Err: err,
}
}
out.parent = &f
return out, err
}
return nil, &fs.PathError{
@@ -167,7 +175,7 @@ func (f FS) ReadDir(name string) ([]fs.DirEntry, error) {
for i := 0; i < len(f.e); i++ {
if split[0] == f.e[i].Name {
if len(split) == 1 {
fi, err := f.r.newFile(f.e[i])
fi, err := f.r.newFile(f.e[i], &f)
if err != nil {
return nil, &fs.PathError{
Op: "readdir",
@@ -343,7 +351,7 @@ func (f FS) Sub(dir string) (fs.FS, error) {
Err: fs.ErrNotExist,
}
}
newFS, err := f.r.newFS(f.e[i])
newFS, err := f.r.newFS(f.e[i], &f)
if err != nil {
return nil, &fs.PathError{
Op: "sub",