// 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 }