osutil

package
v0.14.35 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2017 License: MPL-2.0 Imports: 17 Imported by: 22

Documentation

Overview

Package osutil implements utilities for native OS support.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrClosed  = errors.New("write to closed writer")
	TempPrefix = ".syncthing.tmp."
)

Functions

func Copy

func Copy(from, to string) (err error)

Copy copies the file content from source to destination. Tries hard to succeed on various systems by temporarily tweaking directory permissions and removing the destination file when necessary.

func DiskFreeBytes

func DiskFreeBytes(path string) (free int64, err error)

func DiskFreePercentage

func DiskFreePercentage(path string) (freePct float64, err error)

func ExpandTilde

func ExpandTilde(path string) (string, error)

func GetFilesystemRoots added in v0.13.8

func GetFilesystemRoots() ([]string, error)

func GetLans

func GetLans() ([]*net.IPNet, error)

func GetLatencyForURL added in v0.12.0

func GetLatencyForURL(addr string) (time.Duration, error)

GetLatencyForURL parses the given URL, tries opening a TCP connection to it and returns the time it took to establish the connection.

func Glob

func Glob(pattern string) (matches []string, err error)

func HideConsole

func HideConsole()

func HideFile

func HideFile(path string) error

func InWritableDir

func InWritableDir(fn func(string) error, path string) error

InWritableDir calls fn(path), while making sure that the directory containing `path` is writable for the duration of the call.

func IsWindowsExecutable

func IsWindowsExecutable(path string) bool

IsWindowsExecutable returns true if the given path has an extension that is in the list of executable extensions.

func Lstat

func Lstat(name string) (fi os.FileInfo, err error)

Lstat is like os.Lstat, except lobotomized for Android. See https://forum.syncthing.net/t/2395

func MaximizeOpenFileLimit

func MaximizeOpenFileLimit() (int, error)

MaximizeOpenFileLimit tries to set the resource limit RLIMIT_NOFILE (number of open file descriptors) to the max (hard limit), if the current (soft limit) is below the max. Returns the new (though possibly unchanged) limit, or an error if it could not be changed.

func MkdirAll

func MkdirAll(path string, perm os.FileMode) error

func NativeFilename

func NativeFilename(s string) string

func NormalizedFilename

func NormalizedFilename(s string) string

func Rename

func Rename(from, to string) error

Rename moves a temporary file to it's final place. Will make sure to delete the from file if the operation fails, so use only for situations like committing a temp file to it's final location. Tries hard to succeed on various systems by temporarily tweaking directory permissions and removing the destination file when necessary.

func ShowFile

func ShowFile(path string) error

func SyncDir added in v0.14.12

func SyncDir(path string) error

func SyncFile added in v0.14.12

func SyncFile(path string) error

func TCPPing added in v0.12.0

func TCPPing(address string) (time.Duration, error)

TCPPing returns the duration required to establish a TCP connection to the given host. ICMP packets require root privileges, hence why we use tcp.

func TraversesSymlink(base, name string) error

TraversesSymlink returns an error if base and any path component of name up to and including filepath.Join(base, name) traverses a symlink. Base and name must both be clean and name must be relative to base.

func TryRename

func TryRename(from, to string) error

TryRename renames a file, leaving source file intact in case of failure. Tries hard to succeed on various systems by temporarily tweaking directory permissions and removing the destination file when necessary.

Types

type AtomicWriter

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

An AtomicWriter is an *os.File that writes to a temporary file in the same directory as the final path. On successful Close the file is renamed to it's final path. Any error on Write or during Close is accumulated and returned on Close, so a lazy user can ignore errors until Close.

func CreateAtomic

func CreateAtomic(path string) (*AtomicWriter, error)

CreateAtomic is like os.Create, except a temporary file name is used instead of the given name. The file is created with secure (0600) permissions.

func (*AtomicWriter) Close

func (w *AtomicWriter) Close() error

Close closes the temporary file and renames it to the final path. It is invalid to call Write() or Close() after Close().

func (*AtomicWriter) Write

func (w *AtomicWriter) Write(bs []byte) (int, error)

Write is like io.Writer, but is a no-op on an already failed AtomicWriter.

type NotADirectoryError added in v0.14.19

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

NotADirectoryError is an error indicating an expected path is not a directory

func (NotADirectoryError) Error added in v0.14.19

func (e NotADirectoryError) Error() string

type ReplacingWriter

type ReplacingWriter struct {
	Writer io.Writer
	From   byte
	To     []byte
}

func (ReplacingWriter) Write

func (w ReplacingWriter) Write(bs []byte) (int, error)

type TraversesSymlinkError added in v0.14.19

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

TraversesSymlinkError is an error indicating symlink traversal

func (TraversesSymlinkError) Error added in v0.14.19

func (e TraversesSymlinkError) Error() string

Jump to

Keyboard shortcuts

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