X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/46b48603ea0e69aab8084a3ce32b31995b31b09c..b51f0536ad15f8a197d41fab60c3b00bd63ee381:/hotline/file_wrapper.go diff --git a/hotline/file_wrapper.go b/hotline/file_wrapper.go index 997d6d9..2c796ca 100644 --- a/hotline/file_wrapper.go +++ b/hotline/file_wrapper.go @@ -26,8 +26,6 @@ type fileWrapper struct { rsrcPath string // path to the file resource fork infoPath string // path to the file information fork incompletePath string // path to partially transferred temp file - saveMetaData bool // if true, enables saving of info and resource forks in sidecar files - infoFork *FlatFileInformationFork ffo *flattenedFileObject } @@ -105,21 +103,7 @@ func (f *fileWrapper) infoForkName() string { return fmt.Sprintf(infoForkNameTemplate, f.name) } -func (f *fileWrapper) creatorCode() []byte { - if f.ffo.FlatFileInformationFork.CreatorSignature != nil { - return f.infoFork.CreatorSignature - } - return []byte(fileTypeFromFilename(f.name).CreatorCode) -} - -func (f *fileWrapper) typeCode() []byte { - if f.infoFork != nil { - return f.infoFork.TypeSignature - } - return []byte(fileTypeFromFilename(f.name).TypeCode) -} - -func (f *fileWrapper) rsrcForkWriter() (io.Writer, error) { +func (f *fileWrapper) rsrcForkWriter() (io.WriteCloser, error) { file, err := os.OpenFile(f.rsrcPath, os.O_CREATE|os.O_WRONLY, 0644) if err != nil { return nil, err @@ -128,7 +112,7 @@ func (f *fileWrapper) rsrcForkWriter() (io.Writer, error) { return file, nil } -func (f *fileWrapper) infoForkWriter() (io.Writer, error) { +func (f *fileWrapper) infoForkWriter() (io.WriteCloser, error) { file, err := os.OpenFile(f.infoPath, os.O_CREATE|os.O_WRONLY, 0644) if err != nil { return nil, err @@ -137,7 +121,7 @@ func (f *fileWrapper) infoForkWriter() (io.Writer, error) { return file, nil } -func (f *fileWrapper) incFileWriter() (io.Writer, error) { +func (f *fileWrapper) incFileWriter() (io.WriteCloser, error) { file, err := os.OpenFile(f.incompletePath, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) if err != nil { return nil, err @@ -165,26 +149,31 @@ func (f *fileWrapper) dataFile() (os.FileInfo, error) { return nil, errors.New("file or directory not found") } -// move a fileWrapper and its associated metadata files to newPath +// move a fileWrapper and its associated meta files to newPath. +// Meta files include: +// * Partially uploaded file ending with .incomplete +// * Resource fork starting with .rsrc_ +// * Info fork starting with .info +// During move of the meta files, os.ErrNotExist is ignored as these files may legitimately not exist. func (f *fileWrapper) move(newPath string) error { err := f.fs.Rename(f.dataPath, filepath.Join(newPath, f.name)) if err != nil { - // TODO + return err } err = f.fs.Rename(f.incompletePath, filepath.Join(newPath, f.incompleteDataName())) - if err != nil { - // TODO + if err != nil && !errors.Is(err, os.ErrNotExist) { + return err } err = f.fs.Rename(f.rsrcPath, filepath.Join(newPath, f.rsrcForkName())) - if err != nil { - // TODO + if err != nil && !errors.Is(err, os.ErrNotExist) { + return err } err = f.fs.Rename(f.infoPath, filepath.Join(newPath, f.infoForkName())) - if err != nil { - // TODO + if err != nil && !errors.Is(err, os.ErrNotExist) { + return err } return nil @@ -194,22 +183,22 @@ func (f *fileWrapper) move(newPath string) error { func (f *fileWrapper) delete() error { err := f.fs.RemoveAll(f.dataPath) if err != nil { - // TODO + return err } err = f.fs.Remove(f.incompletePath) - if err != nil { - // TODO + if err != nil && !errors.Is(err, os.ErrNotExist) { + return err } err = f.fs.Remove(f.rsrcPath) - if err != nil { - // TODO + if err != nil && !errors.Is(err, os.ErrNotExist) { + return err } err = f.fs.Remove(f.infoPath) - if err != nil { - // TODO + if err != nil && !errors.Is(err, os.ErrNotExist) { + return err } return nil