Re-write data fullreader & reader
Moved directory and the rest of the inodes to manual decoding
This commit is contained in:
+25
-17
@@ -5,42 +5,50 @@ import (
|
||||
"io"
|
||||
)
|
||||
|
||||
type symlinkInit struct {
|
||||
type Symlink struct {
|
||||
LinkCount uint32
|
||||
TargetSize uint32
|
||||
}
|
||||
|
||||
type Symlink struct {
|
||||
symlinkInit
|
||||
Target []byte
|
||||
}
|
||||
|
||||
type ESymlink struct {
|
||||
symlinkInit
|
||||
Target []byte
|
||||
XattrInd uint32
|
||||
Target []byte
|
||||
}
|
||||
|
||||
func ReadSym(r io.Reader) (s Symlink, err error) {
|
||||
err = binary.Read(r, binary.LittleEndian, &s.symlinkInit)
|
||||
dat := make([]byte, 8)
|
||||
_, err = r.Read(dat)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.LinkCount = binary.LittleEndian.Uint32(dat)
|
||||
s.TargetSize = binary.LittleEndian.Uint32(dat[4:])
|
||||
s.Target = make([]byte, s.TargetSize)
|
||||
err = binary.Read(r, binary.LittleEndian, &s.Target)
|
||||
_, err = r.Read(s.Target)
|
||||
return
|
||||
}
|
||||
|
||||
type ESymlink struct {
|
||||
LinkCount uint32
|
||||
TargetSize uint32
|
||||
Target []byte
|
||||
XattrInd uint32
|
||||
}
|
||||
|
||||
func ReadESym(r io.Reader) (s ESymlink, err error) {
|
||||
err = binary.Read(r, binary.LittleEndian, &s.symlinkInit)
|
||||
dat := make([]byte, 8)
|
||||
_, err = r.Read(dat)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.LinkCount = binary.LittleEndian.Uint32(dat)
|
||||
s.TargetSize = binary.LittleEndian.Uint32(dat[4:])
|
||||
s.Target = make([]byte, s.TargetSize)
|
||||
err = binary.Read(r, binary.LittleEndian, &s.Target)
|
||||
_, err = r.Read(s.Target)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = binary.Read(r, binary.LittleEndian, &s.XattrInd)
|
||||
dat = make([]byte, 4)
|
||||
_, err = r.Read(dat)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.XattrInd = binary.LittleEndian.Uint32(dat)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user