2a33cad709
Changed some struct values from pointers to normal values for improved performance.
27 lines
875 B
Go
27 lines
875 B
Go
package squashfslow
|
|
|
|
import (
|
|
"github.com/CalebQ42/squashfs/internal/metadata"
|
|
"github.com/CalebQ42/squashfs/internal/toreader"
|
|
"github.com/CalebQ42/squashfs/low/directory"
|
|
"github.com/CalebQ42/squashfs/low/inode"
|
|
)
|
|
|
|
func (r *Reader) InodeFromRef(ref uint64) (inode.Inode, error) {
|
|
offset, meta := (ref>>16)+r.Superblock.InodeTableStart, ref&0xFFFF
|
|
rdr := metadata.NewReader(toreader.NewReader(r.r, int64(offset)), r.d)
|
|
defer rdr.Close()
|
|
_, err := rdr.Read(make([]byte, meta))
|
|
if err != nil {
|
|
return inode.Inode{}, err
|
|
}
|
|
return inode.Read(rdr, r.Superblock.BlockSize)
|
|
}
|
|
|
|
func (r *Reader) InodeFromEntry(e directory.Entry) (inode.Inode, error) {
|
|
rdr := metadata.NewReader(toreader.NewReader(r.r, int64(r.Superblock.InodeTableStart)+int64(e.BlockStart)), r.d)
|
|
defer rdr.Close()
|
|
rdr.Read(make([]byte, e.Offset))
|
|
return inode.Read(rdr, r.Superblock.BlockSize)
|
|
}
|