diff --git a/internal/fs/file.go b/internal/fs/file.go index 5a7db3d..0336add 100644 --- a/internal/fs/file.go +++ b/internal/fs/file.go @@ -37,11 +37,8 @@ type FileFlags struct { read bool write bool - append bool - createIfNotExists bool - mostNotExist bool // If `create` is set, abort if file already exists - sync bool // Sync after each operation - truncate bool + append bool + truncate bool } type File struct { diff --git a/internal/fs/filesystem.go b/internal/fs/filesystem.go index b73ddbe..63a59e4 100644 --- a/internal/fs/filesystem.go +++ b/internal/fs/filesystem.go @@ -208,18 +208,6 @@ func (f *FileSystem) OpenFile(name string, flag int, perm os.FileMode) (afero.Fi flags.append = true } - if flag&os.O_CREATE != 0 { - flags.createIfNotExists = true - } - - if flag&os.O_EXCL != 0 { - flags.mostNotExist = true - } - - if flag&os.O_SYNC != 0 { - flags.sync = true - } - if flag&os.O_TRUNC != 0 { flags.truncate = true } @@ -232,21 +220,26 @@ func (f *FileSystem) OpenFile(name string, flag int, perm os.FileMode) (afero.Fi f.onHeader, ) if err != nil { - if err == sql.ErrNoRows && flags.createIfNotExists { - if err := f.mknode(false, name, perm); err != nil { - return nil, err + if err == sql.ErrNoRows { + if flag&os.O_CREATE != 0 && flag&os.O_EXCL == 0 { + if err := f.mknode(false, name, perm); err != nil { + return nil, err + } + + hdr, err = inventory.Stat( + f.metadata, + + name, + + f.onHeader, + ) + if err != nil { + return nil, err + } + } else { + return nil, os.ErrNotExist } - hdr, err = inventory.Stat( - f.metadata, - - name, - - f.onHeader, - ) - if err != nil { - return nil, err - } } else { return nil, err }