Documentation ¶
Overview ¶
Package osutil implements utilities for native OS support.
Index ¶
- Variables
- func Copy(src, dst fs.Filesystem, from, to string) (err error)
- func DebugSymlinkForTestsOnly(oldname, newname string) error
- func GetLans() ([]*net.IPNet, error)
- func GetLatencyForURL(ctx context.Context, addr string) (time.Duration, error)
- func HideConsole()
- func IsDeleted(ffs fs.Filesystem, name string) bool
- func MaximizeOpenFileLimit() (int, error)
- func NativeFilename(s string) string
- func NormalizedFilename(s string) string
- func RenameOrCopy(src, dst fs.Filesystem, from, to string) error
- func SetLowPriority() error
- func TCPPing(ctx context.Context, address string) (time.Duration, error)
- func TempFile(filesystem fs.Filesystem, dir, prefix string) (f fs.File, err error)
- func TraversesSymlink(filesystem fs.Filesystem, name string) error
- type AtomicWriter
- type NotADirectoryError
- type ReplacingWriter
- type TraversesSymlinkError
Constants ¶
This section is empty.
Variables ¶
var ( ErrClosed = errors.New("write to closed writer") TempPrefix = ".syncthing.tmp." )
Functions ¶
func Copy ¶
func Copy(src, dst fs.Filesystem, 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 DebugSymlinkForTestsOnly ¶ added in v0.14.42
DebugSymlinkForTestsOnly is not and should not be used in Syncthing code, hence the cumbersome name to make it obvious if this ever leaks. Its reason for existence is the Windows version, which allows creating symlinks when non-elevated.
func GetLatencyForURL ¶ added in v0.12.0
GetLatencyForURL parses the given URL, tries opening a TCP connection to it and returns the time it took to establish the connection.
func HideConsole ¶
func HideConsole()
func MaximizeOpenFileLimit ¶
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 NativeFilename ¶
func NormalizedFilename ¶
func RenameOrCopy ¶ added in v1.1.4
func RenameOrCopy(src, dst fs.Filesystem, from, to string) error
RenameOrCopy 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.
func SetLowPriority ¶ added in v0.14.44
func SetLowPriority() error
SetLowPriority lowers the process CPU scheduling priority, and possibly I/O priority depending on the platform and OS.
func TCPPing ¶ added in v0.12.0
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 TempFile ¶ added in v0.14.37
TempFile creates a new temporary file in the directory dir with a name beginning with prefix, opens the file for reading and writing, and returns the resulting *os.File. If dir is the empty string, TempFile uses the default directory for temporary files (see os.TempDir). Multiple programs calling TempFile simultaneously will not choose the same file. The caller can use f.Name() to find the pathname of the file. It is the caller's responsibility to remove the file when no longer needed.
func TraversesSymlink ¶ added in v0.14.19
func TraversesSymlink(filesystem fs.Filesystem, name string) error
TraversesSymlink returns an error if any path component of name (including name itself) traverses a symlink.
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 its 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 CreateAtomicFilesystem ¶ added in v0.14.37
func CreateAtomicFilesystem(filesystem fs.Filesystem, path string) (*AtomicWriter, error)
CreateAtomicFilesystem 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().
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 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