58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
|
// 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")
|
||
|
|
||
|
EINVAL = Ebadarg
|
||
|
ENOTDIR = Enotdir
|
||
|
ENOENT = Enonexist
|
||
|
EEXIST = Eexist
|
||
|
EIO = Eio
|
||
|
|
||
|
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 }
|