3378651686
Moved directory and the rest of the inodes to manual decoding
70 lines
1.1 KiB
Go
70 lines
1.1 KiB
Go
package inode
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"io"
|
|
)
|
|
|
|
type Device struct {
|
|
LinkCount uint32
|
|
Dev uint32
|
|
}
|
|
|
|
func ReadDevice(r io.Reader) (d Device, err error) {
|
|
dat := make([]byte, 8)
|
|
_, err = r.Read(dat)
|
|
if err != nil {
|
|
return
|
|
}
|
|
d.LinkCount = binary.LittleEndian.Uint32(dat)
|
|
d.Dev = binary.LittleEndian.Uint32(dat[4:])
|
|
return
|
|
}
|
|
|
|
type EDevice struct {
|
|
Device
|
|
XattrInd uint32
|
|
}
|
|
|
|
func ReadEDevice(r io.Reader) (d EDevice, err error) {
|
|
dat := make([]byte, 12)
|
|
_, err = r.Read(dat)
|
|
if err != nil {
|
|
return
|
|
}
|
|
d.LinkCount = binary.LittleEndian.Uint32(dat)
|
|
d.Dev = binary.LittleEndian.Uint32(dat[4:])
|
|
d.XattrInd = binary.LittleEndian.Uint32(dat[8:])
|
|
return
|
|
}
|
|
|
|
type IPC struct {
|
|
LinkCount uint32
|
|
}
|
|
|
|
func ReadIPC(r io.Reader) (i IPC, err error) {
|
|
dat := make([]byte, 4)
|
|
_, err = r.Read(dat)
|
|
if err != nil {
|
|
return
|
|
}
|
|
i.LinkCount = binary.LittleEndian.Uint32(dat)
|
|
return
|
|
}
|
|
|
|
type EIPC struct {
|
|
IPC
|
|
XattrInd uint32
|
|
}
|
|
|
|
func ReadEIPC(r io.Reader) (i EIPC, err error) {
|
|
dat := make([]byte, 8)
|
|
_, err = r.Read(dat)
|
|
if err != nil {
|
|
return
|
|
}
|
|
i.LinkCount = binary.LittleEndian.Uint32(dat)
|
|
i.XattrInd = binary.LittleEndian.Uint32(dat[4:])
|
|
return
|
|
}
|