Files
squashfs/internal/inode/file.go
T
Caleb Gardner 8f5e1fef96 NEW ISSUES
2022-06-18 14:40:33 -05:00

57 lines
1.0 KiB
Go

package inode
import (
"encoding/binary"
"fmt"
"io"
"math"
)
type fileInit struct {
BlockStart uint32
FragInd uint32
Offset uint32
Size uint32
}
type File struct {
fileInit
BlockSizes []uint32
}
type eFileInit struct {
BlockStart uint32
Size uint64
Sparse uint64
LinkCount uint32
FragInd uint32
Offset uint32
XattrInd uint32
}
type EFile struct {
eFileInit
BlockSizes []uint32
}
func ReadFile(r io.Reader, blockSize uint32) (f File, err error) {
err = binary.Read(r, binary.LittleEndian, &f.fileInit)
if err != nil {
fmt.Println("Hi")
return
}
f.BlockSizes = make([]uint32, int(math.Ceil(float64(f.Size)/float64(blockSize))))
err = binary.Read(r, binary.LittleEndian, &f.BlockSizes)
return
}
func ReadEFile(r io.Reader, blockSize uint32) (f EFile, err error) {
err = binary.Read(r, binary.LittleEndian, &f.eFileInit)
if err != nil {
return
}
f.BlockSizes = make([]uint32, int(math.Ceil(float64(f.Size)/float64(blockSize))))
err = binary.Read(r, binary.LittleEndian, &f.BlockSizes)
return
}