| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package os |
| |
| import syscall "syscall" |
| |
| // SyscallError records an error from a specific system call. |
| type SyscallError struct { |
| Syscall string |
| Err string |
| } |
| |
| func (e *SyscallError) String() string { return e.Syscall + ": " + e.Err } |
| |
| // Note: If the name of the function NewSyscallError changes, |
| // pkg/go/doc/doc.go should be adjusted since it hardwires |
| // this name in a heuristic. |
| |
| // 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 syscall.Error) Error { |
| if err == nil { |
| return nil |
| } |
| return &SyscallError{syscall, err.String()} |
| } |
| |
| var ( |
| Eshortstat = NewError("stat buffer too small") |
| Ebadstat = NewError("malformed stat buffer") |
| Ebadfd = NewError("fd out of range or not open") |
| Ebadarg = NewError("bad arg in system call") |
| Enotdir = NewError("not a directory") |
| Enonexist = NewError("file does not exist") |
| Eexist = NewError("file already exists") |
| Eio = NewError("i/o error") |
| Eperm = NewError("permission denied") |
| |
| EINVAL = Ebadarg |
| ENOTDIR = Enotdir |
| ENOENT = Enonexist |
| EEXIST = Eexist |
| EIO = Eio |
| EACCES = Eperm |
| EISDIR = syscall.EISDIR |
| |
| ENAMETOOLONG = NewError("file name too long") |
| ERANGE = NewError("math result not representable") |
| EPIPE = NewError("Broken Pipe") |
| EPLAN9 = NewError("not supported by plan 9") |
| ) |
| |
| func iserror(err syscall.Error) bool { |
| return err != nil |
| } |
| |
| func Errno(e syscall.Error) syscall.Error { return e } |