Documentation ¶
Overview ¶
Package fileutil implements utility functions related to files and paths.
Index ¶
- Constants
- Variables
- func Exist(name string) bool
- func Fdatasync(f *os.File) error
- func IsDirWriteable(dir string) error
- func Preallocate(f *os.File, sizeInBytes int64, extendFile bool) error
- func PurgeFile(dirname string, suffix string, max uint, interval time.Duration, ...) <-chan error
- func ReadDir(dirpath string) ([]string, error)
- func TouchDirAll(dir string) error
- type LockedFile
Constants ¶
const ( F_OFD_GETLK = 37 F_OFD_SETLK = 37 F_OFD_SETLKW = 38 )
This used to call syscall.Flock() but that call fails with EBADF on NFS. An alternative is lockf() which works on NFS but that call lets a process lock the same file twice. Instead, use Linux's non-standard open file descriptor locks which will block if the process already holds the file lock.
constants from /usr/include/bits/fcntl-linux.h
Variables ¶
var (
ErrLocked = errors.New("fileutil: file already locked")
)
Functions ¶
func Fdatasync ¶
Fdatasync is similar to fsync(), but does not flush modified metadata unless that metadata is needed in order to allow a subsequent data retrieval to be correctly handled.
func IsDirWriteable ¶
IsDirWriteable checks if dir is writable by writing and removing a file to dir. It returns nil if dir is writable.
func Preallocate ¶
Preallocate tries to allocate the space for given file. This operation is only supported on linux by a few filesystems (btrfs, ext4, etc.). If the operation is unsupported, no error will be returned. Otherwise, the error encountered will be returned.
func TouchDirAll ¶
TouchDirAll is similar to os.MkdirAll. It creates directories with 0700 permission if any directory does not exists. TouchDirAll also ensures the given directory is writable.