import (
"encoding/binary"
- "fmt"
"os"
)
}
func (ffo flattenedFileObject) TransferSize() []byte {
- payloadSize := len(ffo.Payload())
+ payloadSize := len(ffo.BinaryMarshal())
dataSize := binary.BigEndian.Uint32(ffo.FlatFileDataForkHeader.DataSize)
transferSize := make([]byte, 4)
DataSize []byte
}
-func NewFlatFileDataForkHeader() FlatFileDataForkHeader {
- return FlatFileDataForkHeader{
- ForkType: []byte("DATA"),
- CompressionType: []byte{0, 0, 0, 0},
- RSVD: []byte{0, 0, 0, 0},
- // DataSize: []byte{0, 0, 0x03, 0xc3},
- }
-}
-
// ReadFlattenedFileObject parses a byte slice into a flattenedFileObject
func ReadFlattenedFileObject(bytes []byte) flattenedFileObject {
nameSize := bytes[110:112]
return ffo
}
-func (f flattenedFileObject) Payload() []byte {
+func (f flattenedFileObject) BinaryMarshal() []byte {
var out []byte
out = append(out, f.FlatFileHeader.Format[:]...)
out = append(out, f.FlatFileHeader.Version[:]...)
return out
}
-func NewFlattenedFileObject(filePath, fileName string) (*flattenedFileObject, error) {
- file, err := os.Open(fmt.Sprintf("%v/%v", filePath, fileName))
+func NewFlattenedFileObject(fileRoot string, filePath, fileName []byte) (*flattenedFileObject, error) {
+ fullFilePath, err := readPath(fileRoot, filePath, fileName)
+ if err != nil {
+ return nil, err
+ }
+ file, err := os.Open(fullFilePath)
if err != nil {
return nil, err
}
return &flattenedFileObject{
FlatFileHeader: NewFlatFileHeader(),
- FlatFileInformationFork: NewFlatFileInformationFork(fileName),
+ FlatFileInformationFork: NewFlatFileInformationFork(string(fileName)),
FlatFileDataForkHeader: FlatFileDataForkHeader{
ForkType: []byte("DATA"),
CompressionType: []byte{0, 0, 0, 0},