osutil

package
v0.0.0-...-d34966d Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2025 License: Apache-2.0 Imports: 18 Imported by: 782

Documentation

Index

Constants

View Source
const (
	DefaultDirPerm  = 0755
	DefaultFilePerm = 0644
	DefaultExecPerm = 0755
)

Variables

This section is empty.

Functions

func Abs

func Abs(path string) string

func Command

func Command(bin string, args ...string) *exec.Cmd

Command is similar to os/exec.Command, but also sets PDEATHSIG to SIGKILL on linux, i.e. the child will be killed immediately.

func CommandContext

func CommandContext(ctx context.Context, bin string, args ...string) *exec.Cmd

CommandContext is similar to os/exec.CommandContext, but also sets PDEATHSIG to SIGKILL on linux, i.e. the child will be killed immediately.

func CopyDirRecursively

func CopyDirRecursively(srcDir, dstDir string) error

func CopyFile

func CopyFile(oldFile, newFile string) error

CopyFile atomically copies oldFile to newFile preserving permissions and modification time.

func CopyFiles

func CopyFiles(srcDir, dstDir string, files map[string]bool) error

CopyFiles copies files from srcDir to dstDir as atomically as possible. Files are assumed to be relative glob patterns in slash notation in srcDir. All other files in dstDir are removed.

func CreationTime

func CreationTime(fi os.FileInfo) time.Time

CreationTime returns file creation time. May return zero time, if not known.

func FilesExist

func FilesExist(dir string, files map[string]bool) bool

FilesExist returns true if all files exist in dir. Files are assumed to be relative names in slash notation.

func GraciousCommand

func GraciousCommand(bin string, args ...string) *exec.Cmd

Command is similar to os/exec.Command, but also sets PDEATHSIG to SIGTERM on linux, i.e. the child has a chance to exit gracefully. This may be important when running e.g. syz-manager. If it is killed immediately, it can leak GCE instances.

func HandleInterrupts

func HandleInterrupts(shutdown chan struct{})

HandleInterrupts closes shutdown chan on first SIGINT (expecting that the program will gracefully shutdown and exit) and terminates the process on third SIGINT.

func IsDir

func IsDir(name string) bool

func IsExist

func IsExist(name string) bool

IsExist returns true if the file name exists.

func LinkFiles

func LinkFiles(srcDir, dstDir string, files map[string]bool) error

LinkFiles creates hard links for files from dstDir to srcDir. Files are assumed to be relative names in slash notation. All other files in dstDir are removed.

func ListDir

func ListDir(dir string) ([]string, error)

Return all files in a directory.

func LongPipe

func LongPipe() (io.ReadCloser, io.WriteCloser, error)

func MkdirAll

func MkdirAll(dir string) error

func MonotonicNano

func MonotonicNano() time.Duration

MonotonicNano returns monotonic time in nanoseconds from some unspecified point in time. Useful mostly to measure time intervals. This function should be used inside of tested VMs b/c time.Now may reject to use monotonic time if the fuzzer messes with system time (sets time past Y2157, see comments in time/time.go). This is a hacky way to use the private runtime function. If this ever breaks, we can either provide specializations for different Go versions using build tags, or fall back to time.Now.

func PrependContext

func PrependContext(ctx string, err error) error

func ProcessTempDir

func ProcessTempDir(where string) (string, error)

ProcessTempDir creates a new temp dir in where and returns its path and an unique index. It also cleans up old, unused temp dirs after dead processes.

func RemoveAll

func RemoveAll(dir string) error

RemoveAll is similar to os.RemoveAll, but can handle more cases.

func Rename

func Rename(oldFile, newFile string) error

Rename is similar to os.Rename but handles cross-device renaming (by copying).

func Run

func Run(timeout time.Duration, cmd *exec.Cmd) ([]byte, error)

Run runs cmd with the specified timeout. Returns combined output. If the command fails, err includes output.

func RunCmd

func RunCmd(timeout time.Duration, dir, bin string, args ...string) ([]byte, error)

RunCmd runs "bin args..." in dir with timeout and returns its output.

func Sandbox

func Sandbox(cmd *exec.Cmd, user, net bool) error

func SandboxChown

func SandboxChown(file string) error

func SystemMemorySize

func SystemMemorySize() uint64

func TempFile

func TempFile(prefix string) (string, error)

TempFile creates a unique temp filename. Note: the file already exists when the function returns.

func WriteExecFile

func WriteExecFile(filename string, data []byte) error

func WriteFile

func WriteFile(filename string, data []byte) error

func WriteGzipStream

func WriteGzipStream(filename string, reader io.Reader) error

func WriteJSON

func WriteJSON[T any](filename string, obj T) error

func WriteTempFile

func WriteTempFile(data []byte) (string, error)

WriteTempFile writes data to a temp file and returns its name.

Types

type VerboseError

type VerboseError struct {
	Title    string
	Output   []byte
	ExitCode int
}

func (*VerboseError) Error

func (err *VerboseError) Error() string

Jump to

Keyboard shortcuts

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