fs

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2018 License: MPL-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WindowsTempPrefix = "~syncthing~"
	UnixTempPrefix    = ".syncthing."
)
View Source
const ModePerm = FileMode(os.ModePerm)
View Source
const ModeSetgid = FileMode(os.ModeSetgid)
View Source
const ModeSetuid = FileMode(os.ModeSetuid)
View Source
const ModeSticky = FileMode(os.ModeSticky)
View Source
const ModeSymlink = FileMode(os.ModeSymlink)
View Source
const ModeType = FileMode(os.ModeType)
View Source
const OptAppend = os.O_APPEND
View Source
const OptCreate = os.O_CREATE
View Source
const OptExclusive = os.O_EXCL
View Source
const OptReadOnly = os.O_RDONLY
View Source
const OptReadWrite = os.O_RDWR
View Source
const OptSync = os.O_SYNC
View Source
const OptTruncate = os.O_TRUNC
View Source
const OptWriteOnly = os.O_WRONLY
View Source
const PathSeparator = os.PathSeparator

Variables

View Source
var (
	ErrInvalidFilename = errors.New("filename is invalid")
	ErrNotRelative     = errors.New("not a relative path")
)
View Source
var ErrWatchNotSupported = errors.New("watching is not supported")
View Source
var IsExist = os.IsExist

IsExist is the equivalent of os.IsExist

View Source
var IsNotExist = os.IsNotExist

IsNotExist is the equivalent of os.IsNotExist

View Source
var IsPathSeparator = os.IsPathSeparator

IsPathSeparator is the equivalent of os.IsPathSeparator

View Source
var IsPermission = os.IsPermission

IsPermission is the equivalent of os.IsPermission

View Source
var SkipDir = filepath.SkipDir

SkipDir is used as a return value from WalkFuncs to indicate that the directory named in the call is to be skipped. It is not returned as an error by any function.

View Source
var TempPrefix string

Functions

func Canonicalize added in v0.14.46

func Canonicalize(file string) (string, error)

Canonicalize checks that the file path is valid and returns it in the "canonical" form: - /foo/bar -> foo/bar - / -> "."

func ExpandTilde added in v0.14.37

func ExpandTilde(path string) (string, error)

func IsInternal added in v0.14.38

func IsInternal(file string) bool

IsInternal returns true if the file, as a path relative to the folder root, represents an internal file that should always be ignored. The file path must be clean (i.e., in canonical shortest form).

func IsParent added in v1.0.0

func IsParent(path, parent string) bool

func IsTemporary added in v0.14.38

func IsTemporary(name string) bool

IsTemporary is true if the file name has the temporary prefix. Regardless of the normally used prefix, the standard Windows and Unix temp prefixes are always recognized as temp files.

func TempName added in v0.14.38

func TempName(name string) string

func TempNameWithPrefix added in v0.14.44

func TempNameWithPrefix(name, prefix string) string

func UnicodeLowercase added in v0.14.41

func UnicodeLowercase(s string) string

func WindowsInvalidFilename added in v0.14.41

func WindowsInvalidFilename(name string) bool

Types

type BasicFilesystem added in v0.14.13

type BasicFilesystem struct {
	// contains filtered or unexported fields
}

The BasicFilesystem implements all aspects by delegating to package os. All paths are relative to the root and cannot (should not) escape the root directory.

func (*BasicFilesystem) Chmod added in v0.14.13

func (f *BasicFilesystem) Chmod(name string, mode FileMode) error

func (*BasicFilesystem) Chtimes added in v0.14.13

func (f *BasicFilesystem) Chtimes(name string, atime time.Time, mtime time.Time) error

func (*BasicFilesystem) Create added in v0.14.13

func (f *BasicFilesystem) Create(name string) (File, error)
func (f *BasicFilesystem) CreateSymlink(target, name string) error

func (*BasicFilesystem) DirNames added in v0.14.13

func (f *BasicFilesystem) DirNames(name string) ([]string, error)

func (*BasicFilesystem) Glob added in v0.14.37

func (f *BasicFilesystem) Glob(pattern string) ([]string, error)

func (*BasicFilesystem) Hide added in v0.14.37

func (f *BasicFilesystem) Hide(name string) error

Hide is a noop on unix, as hiding files requires renaming them. We still check that the relative path does not try to escape the root

func (*BasicFilesystem) Lstat added in v0.14.13

func (f *BasicFilesystem) Lstat(name string) (FileInfo, error)

func (*BasicFilesystem) Mkdir added in v0.14.13

func (f *BasicFilesystem) Mkdir(name string, perm FileMode) error

func (*BasicFilesystem) MkdirAll added in v0.14.37

func (f *BasicFilesystem) MkdirAll(path string, perm FileMode) error

MkdirAll creates a directory named path, along with any necessary parents, and returns nil, or else returns an error. The permission bits perm are used for all directories that MkdirAll creates. If path is already a directory, MkdirAll does nothing and returns nil.

func (*BasicFilesystem) Open added in v0.14.13

func (f *BasicFilesystem) Open(name string) (File, error)

func (*BasicFilesystem) OpenFile added in v0.14.37

func (f *BasicFilesystem) OpenFile(name string, flags int, mode FileMode) (File, error)
func (f *BasicFilesystem) ReadSymlink(name string) (string, error)

func (*BasicFilesystem) Remove added in v0.14.13

func (f *BasicFilesystem) Remove(name string) error

func (*BasicFilesystem) RemoveAll added in v0.14.37

func (f *BasicFilesystem) RemoveAll(name string) error

func (*BasicFilesystem) Rename added in v0.14.13

func (f *BasicFilesystem) Rename(oldpath, newpath string) error

func (*BasicFilesystem) Roots added in v0.14.37

func (f *BasicFilesystem) Roots() ([]string, error)

func (*BasicFilesystem) SameFile added in v0.14.44

func (f *BasicFilesystem) SameFile(fi1, fi2 FileInfo) bool

func (*BasicFilesystem) Stat added in v0.14.13

func (f *BasicFilesystem) Stat(name string) (FileInfo, error)

func (BasicFilesystem) SymlinksSupported added in v0.14.13

func (BasicFilesystem) SymlinksSupported() bool

func (*BasicFilesystem) Type added in v0.14.37

func (f *BasicFilesystem) Type() FilesystemType

func (*BasicFilesystem) URI added in v0.14.37

func (f *BasicFilesystem) URI() string

func (*BasicFilesystem) Unhide added in v0.14.37

func (f *BasicFilesystem) Unhide(name string) error

Unhide is a noop on unix, as unhiding files requires renaming them. We still check that the relative path does not try to escape the root

func (*BasicFilesystem) Usage added in v0.14.37

func (f *BasicFilesystem) Usage(name string) (Usage, error)

func (*BasicFilesystem) Walk added in v0.14.13

func (f *BasicFilesystem) Walk(root string, walkFn WalkFunc) error

func (*BasicFilesystem) Watch added in v0.14.40

func (f *BasicFilesystem) Watch(name string, ignore Matcher, ctx context.Context, ignorePerms bool) (<-chan Event, error)

type Event added in v0.14.40

type Event struct {
	Name string
	Type EventType
}

type EventType added in v0.14.40

type EventType int
const (
	NonRemove EventType = 1 + iota
	Remove
	Mixed // Should probably not be necessary to be used in filesystem interface implementation
)

func (EventType) Merge added in v0.14.49

func (evType EventType) Merge(other EventType) EventType

Merge returns Mixed, except if evType and other are the same and not Mixed.

func (EventType) String added in v0.14.40

func (evType EventType) String() string

type File added in v0.14.13

type File interface {
	io.Closer
	io.Reader
	io.ReaderAt
	io.Seeker
	io.Writer
	io.WriterAt
	Name() string
	Truncate(size int64) error
	Stat() (FileInfo, error)
	Sync() error
}

The File interface abstracts access to a regular file, being a somewhat smaller interface than os.File

type FileInfo added in v0.14.13

type FileInfo interface {
	// Standard things present in os.FileInfo
	Name() string
	Mode() FileMode
	Size() int64
	ModTime() time.Time
	IsDir() bool
	// Extensions
	IsRegular() bool
	IsSymlink() bool
}

The FileInfo interface is almost the same as os.FileInfo, but with the Sys method removed (as we don't want to expose whatever is underlying) and with a couple of convenience methods added.

type FileMode added in v0.14.13

type FileMode uint32

FileMode is similar to os.FileMode

func (FileMode) String added in v0.14.53

func (fm FileMode) String() string

type Filesystem added in v0.14.13

type Filesystem interface {
	Chmod(name string, mode FileMode) error
	Chtimes(name string, atime time.Time, mtime time.Time) error
	Create(name string) (File, error)
	CreateSymlink(target, name string) error
	DirNames(name string) ([]string, error)
	Lstat(name string) (FileInfo, error)
	Mkdir(name string, perm FileMode) error
	MkdirAll(name string, perm FileMode) error
	Open(name string) (File, error)
	OpenFile(name string, flags int, mode FileMode) (File, error)
	ReadSymlink(name string) (string, error)
	Remove(name string) error
	RemoveAll(name string) error
	Rename(oldname, newname string) error
	Stat(name string) (FileInfo, error)
	SymlinksSupported() bool
	Walk(name string, walkFn WalkFunc) error
	Watch(path string, ignore Matcher, ctx context.Context, ignorePerms bool) (<-chan Event, error)
	Hide(name string) error
	Unhide(name string) error
	Glob(pattern string) ([]string, error)
	Roots() ([]string, error)
	Usage(name string) (Usage, error)
	Type() FilesystemType
	URI() string
	SameFile(fi1, fi2 FileInfo) bool
}

The Filesystem interface abstracts access to the file system.

func NewFilesystem added in v0.14.37

func NewFilesystem(fsType FilesystemType, uri string) Filesystem

func NewWalkFilesystem added in v0.14.28

func NewWalkFilesystem(next Filesystem) Filesystem

type FilesystemType added in v0.14.37

type FilesystemType int
const (
	FilesystemTypeBasic FilesystemType = iota // default is basic
	FilesystemTypeFake
)

func (FilesystemType) MarshalText added in v0.14.37

func (t FilesystemType) MarshalText() ([]byte, error)

func (FilesystemType) String added in v0.14.37

func (t FilesystemType) String() string

func (*FilesystemType) UnmarshalText added in v0.14.37

func (t *FilesystemType) UnmarshalText(bs []byte) error

type MatchResult added in v0.14.40

type MatchResult interface {
	IsIgnored() bool
}

type Matcher added in v0.14.40

type Matcher interface {
	ShouldIgnore(name string) bool
	SkipIgnoredDirs() bool
}

type MtimeFS

type MtimeFS struct {
	Filesystem
	// contains filtered or unexported fields
}

The MtimeFS is a filesystem with nanosecond mtime precision, regardless of what shenanigans the underlying filesystem gets up to. A nil MtimeFS just does the underlying operations with no additions.

func NewMtimeFS

func NewMtimeFS(underlying Filesystem, db database, options ...MtimeFSOption) *MtimeFS

func (*MtimeFS) Chtimes

func (f *MtimeFS) Chtimes(name string, atime, mtime time.Time) error

func (*MtimeFS) Lstat

func (f *MtimeFS) Lstat(name string) (FileInfo, error)

type MtimeFSOption added in v0.14.41

type MtimeFSOption func(*MtimeFS)

func WithCaseInsensitivity added in v0.14.41

func WithCaseInsensitivity(v bool) MtimeFSOption

type Usage added in v0.14.37

type Usage struct {
	Free  int64
	Total int64
}

Usage represents filesystem space usage

type WalkFunc added in v0.14.13

type WalkFunc func(path string, info FileInfo, err error) error

WalkFunc is the type of the function called for each file or directory visited by Walk. The path argument contains the argument to Walk as a prefix; that is, if Walk is called with "dir", which is a directory containing the file "a", the walk function will be called with argument "dir/a". The info argument is the FileInfo for the named path.

If there was a problem walking to the file or directory named by path, the incoming error will describe the problem and the function can decide how to handle that error (and Walk will not descend into that directory). If an error is returned, processing stops. The sole exception is when the function returns the special value SkipDir. If the function returns SkipDir when invoked on a directory, Walk skips the directory's contents entirely. If the function returns SkipDir when invoked on a non-directory file, Walk skips the remaining files in the containing directory.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL