]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/file_wrapper.go
Fix corrupt file info forks
[rbdr/mobius] / hotline / file_wrapper.go
index ec025dc006183dad1d28048a3e6587eae0b2413a..997325a1adeda1b6ca54a644edbb7a68fe66a8a8 100644 (file)
@@ -114,7 +114,7 @@ func (f *fileWrapper) rsrcForkWriter() (io.WriteCloser, error) {
 }
 
 func (f *fileWrapper) infoForkWriter() (io.WriteCloser, error) {
-       file, err := os.OpenFile(f.infoPath, os.O_CREATE|os.O_WRONLY, 0644)
+       file, err := os.OpenFile(f.infoPath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
        if err != nil {
                return nil, err
        }
@@ -207,7 +207,7 @@ func (f *fileWrapper) delete() error {
 
 func (f *fileWrapper) flattenedFileObject() (*flattenedFileObject, error) {
        dataSize := make([]byte, 4)
-       mTime := make([]byte, 8)
+       mTime := [8]byte{}
 
        ft := defaultFileType
 
@@ -257,8 +257,8 @@ func (f *fileWrapper) flattenedFileObject() (*flattenedFileObject, error) {
                        Flags:            []byte{0, 0, 0, 0},
                        PlatformFlags:    []byte{0, 0, 1, 0}, // TODO: What is this?
                        RSVD:             make([]byte, 32),
-                       CreateDate:       mTime, // some filesystems don't support createTime
-                       ModifyDate:       mTime,
+                       CreateDate:       mTime[:], // some filesystems don't support createTime
+                       ModifyDate:       mTime[:],
                        NameScript:       []byte{0, 0},
                        Name:             []byte(f.name),
                        NameSize:         []byte{0, 0},