]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/flattened_file_object.go
minor: v0.4.0
[rbdr/mobius] / hotline / flattened_file_object.go
index ba6b0633160c9ec8728d81fcff5142e8a1c75b56..6f38e465367d72c10ca37302d333d37d2ec868c9 100644 (file)
@@ -175,15 +175,16 @@ func (f *flattenedFileObject) BinaryMarshal() []byte {
        return out
 }
 
-func NewFlattenedFileObject(fileRoot string, filePath, fileName []byte) (*flattenedFileObject, error) {
+func NewFlattenedFileObject(fileRoot string, filePath, fileName []byte, dataOffset int64) (*flattenedFileObject, error) {
        fullFilePath, err := readPath(fileRoot, filePath, fileName)
        if err != nil {
                return nil, err
        }
-       file, err := os.Open(fullFilePath)
+       file, err := effectiveFile(fullFilePath)
        if err != nil {
                return nil, err
        }
+
        defer func(file *os.File) { _ = file.Close() }(file)
 
        fileInfo, err := file.Stat()
@@ -192,7 +193,7 @@ func NewFlattenedFileObject(fileRoot string, filePath, fileName []byte) (*flatte
        }
 
        dataSize := make([]byte, 4)
-       binary.BigEndian.PutUint32(dataSize, uint32(fileInfo.Size()))
+       binary.BigEndian.PutUint32(dataSize, uint32(fileInfo.Size()-dataOffset))
 
        mTime := toHotlineTime(fileInfo.ModTime())