Further work on Inode
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package inode
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
"io"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
basicDirectory = iota + 1
|
||||
basicFile
|
||||
basicSymlink
|
||||
basicBlockDevice
|
||||
basicCharDevice
|
||||
basicFifo
|
||||
basicSocket
|
||||
extendedDirectory
|
||||
extendedFile
|
||||
extendedSymlink
|
||||
extendedBlockDevice
|
||||
extendedCharDevice
|
||||
extendedFifo
|
||||
extendedSocket
|
||||
)
|
||||
|
||||
func ProcessInode(rdr *io.Reader) (*InodeCommon, interface{}, error) {
|
||||
var inodeHeader InodeCommon
|
||||
err := binary.Read(*rdr, binary.LittleEndian, &inodeHeader)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
switch inodeHeader.InodeType {
|
||||
case basicDirectory:
|
||||
var inode BasicDirectory
|
||||
err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
return &inodeHeader, inode, err
|
||||
case basicFile:
|
||||
var inode BasicFile
|
||||
err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
return &inodeHeader, inode, err
|
||||
case basicSymlink:
|
||||
inode, err := NewBasicSymlink(rdr)
|
||||
return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
// case basicFile:
|
||||
// var inode BasicFile
|
||||
// err = binary.Read(*rdr, binary.LittleEndian, &inode)
|
||||
// return &inodeHeader, inode, err
|
||||
//TODO: implement ALL cases
|
||||
default:
|
||||
return nil, nil, errors.New("Inode type is unrecognized: " + strconv.FormatInt(int64(inodeHeader.InodeType), 2))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user