diff options
Diffstat (limited to 'libgo/go/os/error_plan9.go')
-rw-r--r-- | libgo/go/os/error_plan9.go | 69 |
1 files changed, 26 insertions, 43 deletions
diff --git a/libgo/go/os/error_plan9.go b/libgo/go/os/error_plan9.go index 3c727b2ab39..3c9dfb0b158 100644 --- a/libgo/go/os/error_plan9.go +++ b/libgo/go/os/error_plan9.go @@ -4,52 +4,35 @@ package os -import ( - "errors" - "syscall" -) - -// SyscallError records an error from a specific system call. -type SyscallError struct { - Syscall string - Err string +func isExist(err error) bool { + if pe, ok := err.(*PathError); ok { + err = pe.Err + } + return contains(err.Error(), " exists") } -func (e *SyscallError) Error() string { return e.Syscall + ": " + e.Err } - -// 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 +func isNotExist(err error) bool { + if pe, ok := err.(*PathError); ok { + err = pe.Err } - return &SyscallError{syscall, err.Error()} + return contains(err.Error(), "does not exist") } -var ( - Eshortstat = errors.New("stat buffer too small") - Ebadstat = errors.New("malformed stat buffer") - Ebadfd = errors.New("fd out of range or not open") - Ebadarg = errors.New("bad arg in system call") - Enotdir = errors.New("not a directory") - Enonexist = errors.New("file does not exist") - Eexist = errors.New("file already exists") - Eio = errors.New("i/o error") - Eperm = errors.New("permission denied") - - EINVAL = Ebadarg - ENOTDIR = Enotdir - ENOENT = Enonexist - EEXIST = Eexist - EIO = Eio - EACCES = Eperm - EPERM = Eperm - EISDIR = syscall.EISDIR +func isPermission(err error) bool { + if pe, ok := err.(*PathError); ok { + err = pe.Err + } + return contains(err.Error(), "permission denied") +} - EBADF = errors.New("bad file descriptor") - ENAMETOOLONG = errors.New("file name too long") - ERANGE = errors.New("math result not representable") - EPIPE = errors.New("Broken Pipe") - EPLAN9 = errors.New("not supported by plan 9") -) +// contains is a local version of strings.Contains. It knows len(sep) > 1. +func contains(s, sep string) bool { + n := len(sep) + c := sep[0] + for i := 0; i+n <= len(s); i++ { + if s[i] == c && s[i:i+n] == sep { + return true + } + } + return false +} |