summaryrefslogtreecommitdiff
path: root/src/lib/os/error.go
blob: 718499b212473d61cd5685464a0b046c429a768b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Copyright 2009 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"

// An Error can represent any printable error condition.
type Error interface {
	String() string
}

// A helper type that can be embedded or wrapped to simplify satisfying
// Error.
type ErrorString string
func (e ErrorString) String() string {
	return string(e)
}

// NewError converts s to an ErrorString, which satisfies the Error interface.
func NewError(s string) Error {
	return ErrorString(s)
}

// Errno is the Unix error number.  Names such as EINVAL are simple
// wrappers to convert the error number into an Error.
type Errno int64
func (e Errno) String() string {
	return syscall.Errstr(int(e))
}

// ErrnoToError converts errno to an Error (underneath, an Errno).
// It returns nil for the "no error" errno.
func ErrnoToError(errno int) Error {
	if errno == 0 {
		return nil
	}
	return Errno(errno)
}

// Commonly known Unix errors.
var (
	EPERM Error = Errno(syscall.EPERM);
	ENOENT Error = Errno(syscall.ENOENT);
	ESRCH Error = Errno(syscall.ESRCH);
	EINTR Error = Errno(syscall.EINTR);
	EIO Error = Errno(syscall.EIO);
	ENXIO Error = Errno(syscall.ENXIO);
	E2BIG Error = Errno(syscall.E2BIG);
	ENOEXEC Error = Errno(syscall.ENOEXEC);
	EBADF Error = Errno(syscall.EBADF);
	ECHILD Error = Errno(syscall.ECHILD);
	EDEADLK Error = Errno(syscall.EDEADLK);
	ENOMEM Error = Errno(syscall.ENOMEM);
	EACCES Error = Errno(syscall.EACCES);
	EFAULT Error = Errno(syscall.EFAULT);
	ENOTBLK Error = Errno(syscall.ENOTBLK);
	EBUSY Error = Errno(syscall.EBUSY);
	EEXIST Error = Errno(syscall.EEXIST);
	EXDEV Error = Errno(syscall.EXDEV);
	ENODEV Error = Errno(syscall.ENODEV);
	ENOTDIR Error = Errno(syscall.ENOTDIR);
	EISDIR Error = Errno(syscall.EISDIR);
	EINVAL Error = Errno(syscall.EINVAL);
	ENFILE Error = Errno(syscall.ENFILE);
	EMFILE Error = Errno(syscall.EMFILE);
	ENOTTY Error = Errno(syscall.ENOTTY);
	ETXTBSY Error = Errno(syscall.ETXTBSY);
	EFBIG Error = Errno(syscall.EFBIG);
	ENOSPC Error = Errno(syscall.ENOSPC);
	ESPIPE Error = Errno(syscall.ESPIPE);
	EROFS Error = Errno(syscall.EROFS);
	EMLINK Error = Errno(syscall.EMLINK);
	EPIPE Error = Errno(syscall.EPIPE);
	EAGAIN Error = Errno(syscall.EAGAIN);
	EDOM Error = Errno(syscall.EDOM);
	ERANGE Error = Errno(syscall.ERANGE);
	EADDRINUSE Error = Errno(syscall.EADDRINUSE);
	ECONNREFUSED Error = Errno(syscall.ECONNREFUSED);
	ENAMETOOLONG Error = Errno(syscall.ENAMETOOLONG);
)