summaryrefslogtreecommitdiffstats
path: root/man3/errno.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/errno.3')
-rw-r--r--man3/errno.3335
1 files changed, 335 insertions, 0 deletions
diff --git a/man3/errno.3 b/man3/errno.3
new file mode 100644
index 000000000..52ab4b8e3
--- /dev/null
+++ b/man3/errno.3
@@ -0,0 +1,335 @@
+.\" Copyright (c) 1996 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
+.\" USA.
+.\"
+.\" 5 Oct 2002, Modified by Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
+.\" Updated for POSIX 1003.1 2001
+.\"
+.TH ERRNO 3 2002-10-05 "" "Library functions"
+.SH NAME
+errno \- number of last error
+.SH SYNOPSIS
+.B #include <errno.h>
+.sp
+.BI "extern int " errno ;
+.SH DESCRIPTION
+The integer
+.B errno
+is set by system calls (and some library functions) to indicate
+what went wrong. Its value is significant only when the call
+returned an error (usually \-1), and a library function that does succeed
+is allowed to change
+.BR errno .
+
+Sometimes, when \-1 is also a legal return value one has to zero
+.B errno
+before the call in order to detect possible errors.
+
+\fBerrno\fR is defined by the ISO C standard to be a modifiable lvalue
+of type \fBint\fR, and must not be explicitly declared; \fBerrno\fR
+may be a macro. \fBerrno\fR is thread-local; setting it in one thread
+does not affect its value in any other thread.
+
+Valid error numbers are all non-zero; \fBerrno\fR is never set to zero
+by any library function. All the error names specified by POSIX.1
+must have distinct values.
+
+.\" FIXME EILSEQ is in C99.
+POSIX.1 (2001 edition) lists the following symbolic error names. Of
+these, \fBEDOM\fR and \fBERANGE\fR are in the ISO C standard. ISO C
+Amendment 1 defines the additional error number \fBEILSEQ\fR for
+coding errors in multibyte or wide characters.
+
+.TP
+.B E2BIG
+Arg list too long
+.TP
+.B EACCES
+Permission denied
+.TP
+.B EADDRINUSE
+Address in use
+.TP
+.B EADDRNOTAVAIL
+Address not available
+.TP
+.B EAFNOSUPPORT
+Address family not supported
+.TP
+.B EAGAIN
+Resource temporarily unavailable
+.TP
+.B EALREADY
+Connection already in progress
+.TP
+.B EBADF
+Bad file descriptor
+.TP
+.B EBADMSG
+Bad message
+.TP
+.B EBUSY
+Resource busy
+.TP
+.B ECANCELED
+Operation canceled
+.TP
+.B ECHILD
+No child processes
+.TP
+.B ECONNABORTED
+Connection aborted
+.TP
+.B ECONNREFUSED
+Connection refused
+.TP
+.B ECONNRESET
+Connection reset
+.TP
+.B EDEADLK
+Resource deadlock avoided
+.TP
+.B EDESTADDRREQ
+Destination address required
+.TP
+.B EDOM
+Domain error
+.TP
+.B EDQUOT
+Reserved
+.TP
+.B EEXIST
+File exists
+.TP
+.B EFAULT
+Bad address
+.TP
+.B EFBIG
+File too large
+.TP
+.B EHOSTUNREACH
+Host is unreachable
+.TP
+.B EIDRM
+Identifier removed
+.TP
+.B EILSEQ
+Illegal byte sequence
+.TP
+.B EINPROGRESS
+Operation in progress
+.TP
+.B EINTR
+Interrupted function call
+.TP
+.B EINVAL
+Invalid argument
+.TP
+.B EIO
+Input/output error
+.TP
+.B EISCONN
+Socket is connected
+.TP
+.B EISDIR
+Is a directory
+.TP
+.B ELOOP
+Too many levels of symbolic links
+.TP
+.B EMFILE
+Too many open files
+.TP
+.B EMLINK
+Too many links
+.TP
+.B EMSGSIZE
+Inappropriate message buffer length
+.TP
+.B EMULTIHOP
+Reserved
+.TP
+.B ENAMETOOLONG
+Filename too long
+.TP
+.B ENETDOWN
+Network is down
+.TP
+.B ENETRESET
+Connection aborted by network
+.TP
+.B ENETUNREACH
+Network unreachable
+.TP
+.B ENFILE
+Too many open files in system
+.TP
+.B ENOBUFS
+No buffer space available
+.\" ENODATA is part of XSR option
+.TP
+.B ENODATA
+No message is available on the STREAM head read queue
+.TP
+.B ENODEV
+No such device
+.TP
+.B ENOENT
+No such file or directory
+.TP
+.B ENOEXEC
+Exec format error
+.TP
+.B ENOLCK
+No locks available
+.TP
+.B ENOLINK
+Reserved
+.TP
+.B ENOMEM
+Not enough space
+.TP
+.B ENOMSG
+No message of the desired type
+.TP
+.B ENOPROTOOPT
+Protocol not available
+.TP
+.B ENOSPC
+No space left on device
+.\" ENOSR is part of XSR option
+.TP
+.B ENOSR
+No STREAM resources
+.\" ENOSTR is part of XSR option
+.TP
+.B ENOSTR
+Not a STREAM
+.TP
+.B ENOSYS
+Function not implemented
+.TP
+.B ENOTCONN
+The socket is not connected
+.TP
+.B ENOTDIR
+Not a directory
+.TP
+.B ENOTEMPTY
+Directory not empty
+.TP
+.B ENOTSOCK
+Not a socket
+.TP
+.B ENOTSUP
+Not supported
+.TP
+.B ENOTTY
+Inappropriate I/O control operation
+.TP
+.B ENXIO
+No such device or address
+.TP
+.B EOPNOTSUPP
+Operation not supported on socket
+.TP
+.B EOVERFLOW
+Value too large to be stored in data type
+.TP
+.B EPERM
+Operation not permitted
+.TP
+.B EPIPE
+Broken pipe
+.TP
+.B EPROTO
+Protocol error
+.TP
+.B EPROTONOSUPPORT
+Protocol not supported
+.TP
+.B EPROTOTYPE
+Protocol wrong type for socket
+.TP
+.B ERANGE
+Result too large
+.TP
+.B EROFS
+Read-only file system
+.TP
+.B ESPIPE
+Invalid seek
+.TP
+.B ESRCH
+No such process
+.TP
+.B ESTALE
+Reserved
+.\" ETIME is part of XSR option
+.TP
+.B ETIME
+STREAM ioctl() timeout
+.TP
+.B ETIMEDOUT
+Operation timed out
+.TP
+.B ETXTBSY
+Test file busy
+.TP
+.B EWOULDBLOCK
+Operation would block (may be same value as
+.BR EAGAIN )
+.TP
+.B EXDEV
+Improper link
+.SH NOTE
+A common mistake is to do
+.RS
+.nf
+
+if (somecall() == -1) {
+ printf("somecall() failed\en");
+ if (errno == ...) { ... }
+}
+
+.fi
+.RE
+where
+.I errno
+no longer needs to have the value it had upon return from
+.IR somecall() .
+If the value of
+.I errno
+should be preserved across a library call, it must be saved:
+.RS
+.nf
+
+if (somecall() == -1) {
+ int errsv = errno;
+ printf("somecall() failed\en");
+ if (errsv == ...) { ... }
+}
+
+.fi
+.RE
+.SH "SEE ALSO"
+.BR perror (3),
+.BR strerror (3)