package fsdef /* fsdef.go This package handle error related to file systems. See comments below for usage. */ import ( "errors" "io" "os" ) type File interface { Chdir() error Chmod(mode os.FileMode) error Chown(uid, gid int) error Close() error Name() string Read(b []byte) (n int, err error) ReadAt(b []byte, off int64) (n int, err error) ReadDir(n int) ([]os.DirEntry, error) ReadFrom(r io.Reader) (n int64, err error) Readdir(n int) ([]os.FileInfo, error) Seek(offset int64, whence int) (ret int64, err error) Stat() (os.FileInfo, error) Truncate(size int64) error Write(b []byte) (n int, err error) WriteString(s string) (n int, err error) } var ( /* READ WRITE PERMISSIONS */ FsReadOnly = "readonly" FsWriteOnly = "writeonly" FsReadWrite = "readwrite" FsDenied = "denied" /* ERROR TYPES */ //Redirective Error ErrRedirectParent = errors.New("Redirect:parent") ErrRedirectCurrentRoot = errors.New("Redirect:root") ErrRedirectUserRoot = errors.New("Redirect:userroot") //Resolve errors ErrVpathResolveFailed = errors.New("FS_VPATH_RESOLVE_FAILED") ErrRpathResolveFailed = errors.New("FS_RPATH_RESOLVE_FAILED") ErrFSHNotFOund = errors.New("FS_FILESYSTEM_HANDLER_NOT_FOUND") //Operation errors ErrOperationNotSupported = errors.New("FS_OPR_NOT_SUPPORTED") ErrNullOperation = errors.New("FS_NULL_OPR") ) //Generate a File Manager redirection error message func NewRedirectionError(targetVpath string) error { return errors.New("Redirect:" + targetVpath) } //Check if a file system is network drive func IsNetworkDrive(fstype string) bool { if fstype == "webdav" || fstype == "ftp" { return true } return false }