diff options
Diffstat (limited to 'libgo/go/os/error.go')
-rw-r--r-- | libgo/go/os/error.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/libgo/go/os/error.go b/libgo/go/os/error.go index c3dd06feb7b..e0b83b5c22c 100644 --- a/libgo/go/os/error.go +++ b/libgo/go/os/error.go @@ -4,6 +4,18 @@ package os +import ( + "errors" +) + +// Portable analogs of some common system call errors. +var ( + ErrInvalid = errors.New("invalid argument") + ErrPermission = errors.New("permission denied") + ErrExist = errors.New("file already exists") + ErrNotExist = errors.New("file does not exist") +) + // PathError records an error and the operation and file path that caused it. type PathError struct { Op string @@ -12,3 +24,21 @@ type PathError struct { } func (e *PathError) Error() string { return e.Op + " " + e.Path + ": " + e.Err.Error() } + +// SyscallError records an error from a specific system call. +type SyscallError struct { + Syscall string + Err error +} + +func (e *SyscallError) Error() string { return e.Syscall + ": " + e.Err.Error() } + +// NewSyscallError returns, as an error, a new SyscallError +// with the given system call name and error details. +// As a convenience, if err is nil, NewSyscallError returns nil. +func NewSyscallError(syscall string, err error) error { + if err == nil { + return nil + } + return &SyscallError{syscall, err} +} |