2004-11-03 13:51:07 +00:00
|
|
|
.\" Copyright (c) 1996 Andries Brouwer (aeb@cwi.nl)
|
|
|
|
.\"
|
getent.1, _syscall.2, acct.2, adjtimex.2, bdflush.2, brk.2, cacheflush.2, getsid.2, getxattr.2, inotify_add_watch.2, inotify_init.2, inotify_rm_watch.2, ioperm.2, ipc.2, listxattr.2, mlock.2, modify_ldt.2, mremap.2, nanosleep.2, outb.2, perf_event_open.2, ptrace.2, removexattr.2, s390_runtime_instr.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, setsid.2, setxattr.2, socketcall.2, unimplemented.2, aio_cancel.3, aio_error.3, aio_fsync.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, cfree.3, crypt.3, dlopen.3, encrypt.3, errno.3, fenv.3, ftime.3, ftw.3, getgrent_r.3, getpass.3, getpwent_r.3, getutent.3, hsearch.3, lio_listio.3, lockf.3, login.3, longjmp.3, perror.3, printf.3, scandirat.3, setjmp.3, strfmon.3, strtoimax.3, termios.3, ttyname.3, ualarm.3, updwtmp.3, wcstoimax.3, wordexp.3, console_ioctl.4, dsp56k.4, fd.4, hd.4, intro.4, lp.4, mem.4, null.4, ram.4, rtc.4, sk98lin.4, tty.4, ttyS.4, vcs.4, filesystems.5, group.5, host.conf.5, hosts.5, intro.5, issue.5, motd.5, networks.5, nologin.5, nsswitch.conf.5, passwd.5, proc.5, protocols.5, securetty.5, shells.5, termcap.5, ttytype.5, utmp.5, intro.6, armscii-8.7, ascii.7, bootparam.7, cp1251.7, environ.7, glob.7, intro.7, iso_8859-1.7, iso_8859-10.7, iso_8859-11.7, iso_8859-13.7, iso_8859-14.7, iso_8859-15.7, iso_8859-16.7, iso_8859-2.7, iso_8859-3.7, iso_8859-4.7, iso_8859-5.7, iso_8859-6.7, iso_8859-7.7, iso_8859-8.7, iso_8859-9.7, koi8-r.7, koi8-u.7, posixoptions.7, standards.7, unicode.7, utf-8.7, intro.8: s/GPLv2+_doc_full/GPLv2+_DOC_FULL/
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2013-03-10 09:29:46 +00:00
|
|
|
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" 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
|
getent.1, _syscall.2, acct.2, adjtimex.2, bdflush.2, brk.2, cacheflush.2, getsid.2, getxattr.2, inotify_add_watch.2, inotify_init.2, inotify_rm_watch.2, ioperm.2, ipc.2, listxattr.2, mlock.2, modify_ldt.2, mremap.2, nanosleep.2, outb.2, ptrace.2, removexattr.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, setsid.2, setxattr.2, socketcall.2, unimplemented.2, aio_cancel.3, aio_error.3, aio_fsync.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, cfree.3, crypt.3, dlopen.3, errno.3, fenv.3, ftime.3, ftw.3, getgrent_r.3, getpass.3, getpwent_r.3, getutent.3, hsearch.3, lio_listio.3, login.3, longjmp.3, perror.3, printf.3, scandirat.3, setjmp.3, strfmon.3, strtoimax.3, termios.3, ttyname.3, ualarm.3, wcstoimax.3, wordexp.3, console_ioctl.4, dsp56k.4, fd.4, hd.4, intro.4, lp.4, mem.4, null.4, ram.4, rtc.4, sk98lin.4, tty.4, ttyS.4, vcs.4, charmap.5, filesystems.5, ftpusers.5, gai.conf.5, group.5, host.conf.5, hosts.5, intro.5, issue.5, locale.5, motd.5, networks.5, nologin.5, nscd.conf.5, nss.5, nsswitch.conf.5, passwd.5, proc.5, protocols.5, securetty.5, shells.5, termcap.5, ttytype.5, utmp.5, intro.6, armscii-8.7, ascii.7, bootparam.7, cp1251.7, cpuset.7, environ.7, glob.7, intro.7, iso_8859-1.7, iso_8859-10.7, iso_8859-11.7, iso_8859-13.7, iso_8859-14.7, iso_8859-15.7, iso_8859-16.7, iso_8859-2.7, iso_8859-3.7, iso_8859-4.7, iso_8859-5.7, iso_8859-6.7, iso_8859-7.7, iso_8859-8.7, iso_8859-9.7, koi8-r.7, koi8-u.7, posixoptions.7, standards.7, unicode.7, utf-8.7, intro.8, ldconfig.8, nscd.8: Global fix: Update info in source comments on where to get a copy of the GPL
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2013-03-10 09:28:43 +00:00
|
|
|
.\" License along with this manual; if not, see
|
|
|
|
.\" <http://www.gnu.org/licenses/>.
|
getent.1, _syscall.2, acct.2, adjtimex.2, bdflush.2, brk.2, cacheflush.2, getsid.2, getxattr.2, inotify_add_watch.2, inotify_init.2, inotify_rm_watch.2, ioperm.2, ipc.2, listxattr.2, mlock.2, modify_ldt.2, mremap.2, nanosleep.2, outb.2, perf_event_open.2, ptrace.2, removexattr.2, s390_runtime_instr.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, setsid.2, setxattr.2, socketcall.2, unimplemented.2, aio_cancel.3, aio_error.3, aio_fsync.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, cfree.3, crypt.3, dlopen.3, encrypt.3, errno.3, fenv.3, ftime.3, ftw.3, getgrent_r.3, getpass.3, getpwent_r.3, getutent.3, hsearch.3, lio_listio.3, lockf.3, login.3, longjmp.3, perror.3, printf.3, scandirat.3, setjmp.3, strfmon.3, strtoimax.3, termios.3, ttyname.3, ualarm.3, updwtmp.3, wcstoimax.3, wordexp.3, console_ioctl.4, dsp56k.4, fd.4, hd.4, intro.4, lp.4, mem.4, null.4, ram.4, rtc.4, sk98lin.4, tty.4, ttyS.4, vcs.4, filesystems.5, group.5, host.conf.5, hosts.5, intro.5, issue.5, motd.5, networks.5, nologin.5, nsswitch.conf.5, passwd.5, proc.5, protocols.5, securetty.5, shells.5, termcap.5, ttytype.5, utmp.5, intro.6, armscii-8.7, ascii.7, bootparam.7, cp1251.7, environ.7, glob.7, intro.7, iso_8859-1.7, iso_8859-10.7, iso_8859-11.7, iso_8859-13.7, iso_8859-14.7, iso_8859-15.7, iso_8859-16.7, iso_8859-2.7, iso_8859-3.7, iso_8859-4.7, iso_8859-5.7, iso_8859-6.7, iso_8859-7.7, iso_8859-8.7, iso_8859-9.7, koi8-r.7, koi8-u.7, posixoptions.7, standards.7, unicode.7, utf-8.7, intro.8: Global fix: Add LICENSE_START(GPLv2+_doc_full)
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2013-03-10 09:28:44 +00:00
|
|
|
.\" %%%LICENSE_END
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
2007-09-20 06:52:22 +00:00
|
|
|
.\" 5 Oct 2002, Modified by Michael Kerrisk <mtk.manpages@gmail.com>
|
2006-08-03 13:57:30 +00:00
|
|
|
.\" Updated for POSIX.1 2001
|
2004-12-17 12:20:07 +00:00
|
|
|
.\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
|
|
|
|
.\" Removed errno declaration prototype, added notes
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" 2006-02-09 Kurt Wall, mtk
|
|
|
|
.\" Added non-POSIX errors
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
getent.1, ldd.1, locale.1, localedef.1, memusage.1, memusagestat.1, mtrace.1, _exit.2, _syscall.2, accept.2, access.2, acct.2, add_key.2, adjtimex.2, alloc_hugepages.2, arch_prctl.2, bdflush.2, bind.2, bpf.2, brk.2, cacheflush.2, capget.2, chdir.2, chmod.2, chown.2, chroot.2, clock_getres.2, clock_nanosleep.2, clone.2, close.2, close_range.2, connect.2, copy_file_range.2, create_module.2, delete_module.2, dup.2, epoll_create.2, epoll_ctl.2, epoll_wait.2, eventfd.2, execve.2, execveat.2, fanotify_init.2, fanotify_mark.2, fcntl.2, flock.2, fork.2, fsync.2, futex.2, get_kernel_syms.2, get_mempolicy.2, get_robust_list.2, getcpu.2, getdents.2, getdomainname.2, getgid.2, getgroups.2, gethostname.2, getitimer.2, getpagesize.2, getpeername.2, getpid.2, getpriority.2, getrandom.2, getresuid.2, getrlimit.2, getrusage.2, getsid.2, getsockname.2, getsockopt.2, gettid.2, gettimeofday.2, getuid.2, getunwind.2, getxattr.2, idle.2, init_module.2, inotify_add_watch.2, inotify_rm_watch.2, io_cancel.2, io_destroy.2, io_getevents.2, io_setup.2, io_submit.2, ioctl.2, ioctl_console.2, ioctl_fat.2, ioctl_ficlonerange.2, ioctl_fideduperange.2, ioctl_fslabel.2, ioctl_getfsmap.2, ioctl_ns.2, ioctl_tty.2, ioctl_userfaultfd.2, ioperm.2, iopl.2, ipc.2, kcmp.2, kexec_load.2, keyctl.2, kill.2, link.2, listen.2, listxattr.2, llseek.2, lookup_dcookie.2, lseek.2, madvise.2, mbind.2, membarrier.2, memfd_create.2, migrate_pages.2, mincore.2, mkdir.2, mknod.2, mlock.2, mmap.2, mmap2.2, modify_ldt.2, mount.2, move_pages.2, mprotect.2, mq_getsetattr.2, mremap.2, msgctl.2, msgget.2, msgop.2, msync.2, nanosleep.2, nfsservctl.2, nice.2, open.2, open_by_handle_at.2, openat2.2, pause.2, pciconfig_read.2, perf_event_open.2, perfmonctl.2, personality.2, pidfd_getfd.2, pidfd_open.2, pidfd_send_signal.2, pipe.2, pivot_root.2, pkey_alloc.2, poll.2, posix_fadvise.2, prctl.2, pread.2, process_vm_readv.2, ptrace.2, query_module.2, quotactl.2, read.2, readahead.2, readdir.2, readlink.2, readv.2, reboot.2, recv.2, remap_file_pages.2, removexattr.2, rename.2, request_key.2, restart_syscall.2, rmdir.2, rt_sigqueueinfo.2, s390_guarded_storage.2, s390_pci_mmio_write.2, s390_runtime_instr.2, s390_sthyi.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setattr.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, seccomp.2, select.2, select_tut.2, semctl.2, semget.2, semop.2, send.2, sendfile.2, set_thread_area.2, seteuid.2, setfsgid.2, setfsuid.2, setgid.2, setpgid.2, setresuid.2, setreuid.2, setsid.2, setuid.2, setup.2, setxattr.2, sgetmask.2, shmctl.2, shmget.2, shmop.2, shutdown.2, sigaction.2, sigaltstack.2, signal.2, signalfd.2, sigpending.2, sigprocmask.2, sigreturn.2, sigsuspend.2, sigwaitinfo.2, socket.2, socketcall.2, socketpair.2, splice.2, spu_create.2, spu_run.2, stat.2, statfs.2, statx.2, stime.2, subpage_prot.2, swapon.2, symlink.2, sync.2, sync_file_range.2, syscall.2, syscalls.2, sysctl.2, sysfs.2, sysinfo.2, syslog.2, time.2, timer_create.2, timer_delete.2, timer_getoverrun.2, timer_settime.2, timerfd_create.2, times.2, tkill.2, truncate.2, umask.2, umount.2, uname.2, unimplemented.2, unlink.2, unshare.2, uselib.2, userfaultfd.2, ustat.2, utime.2, utimensat.2, vfork.2, vhangup.2, vm86.2, vmsplice.2, wait.2, wait4.2, write.2, CPU_SET.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, a64l.3, abort.3, abs.3, acos.3, acosh.3, addseverity.3, adjtime.3, aio_cancel.3, aio_error.3, aio_fsync.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, atof.3, atoi.3, backtrace.3, basename.3, bcmp.3, bcopy.3, bindresvport.3, bsd_signal.3, bsearch.3, bstring.3, btowc.3, byteorder.3, bzero.3, cabs.3, cacos.3, cacosh.3, canonicalize_file_name.3, carg.3, casin.3, casinh.3, catan.3, catanh.3, catgets.3, catopen.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, cexp2.3, cfree.3, cimag.3, circleq.3, clearenv.3, clock.3, clock_getcpuclockid.3, clog.3, clog10.3, clog2.3, closedir.3, cmsg.3, confstr.3, conj.3, copysign.3, cos.3, cosh.3, cpow.3, cproj.3, creal.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctermid.3, ctime.3, daemon.3, des_crypt.3, difftime.3, dirfd.3, div.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48.3, drand48_r.3, duplocale.3, dysize.3, ecvt.3, ecvt_r.3, encrypt.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, ether_aton.3, euidaccess.3, exec.3, exit.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fclose.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, fgetgrent.3, fgetpwent.3, fgetwc.3, fgetws.3, fileno.3, finite.3, flockfile.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fnmatch.3, fopen.3, fopencookie.3, fpathconf.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, fread.3, frexp.3, fseek.3, fseeko.3, ftime.3, ftok.3, fts.3, ftw.3, futimes.3, fwide.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcontext.3, getcwd.3, getdate.3, getdirentries.3, getdtablesize.3, getentropy.3, getenv.3, getfsent.3, getgrent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getipnodebyname.3, getline.3, getloadavg.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getpass.3, getprotoent.3, getprotoent_r.3, getpt.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getumask.3, getusershell.3, getutent.3, getutmp.3, getw.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, group_member.3, gsignal.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, index.3, inet.3, inet_net_pton.3, inet_ntop.3, inet_pton.3, initgroups.3, insque.3, isalpha.3, isatty.3, isfdtype.3, isgreater.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, list.3, localeconv.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc.3, malloc_get_state.3, malloc_hook.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, memfrob.3, memmem.3, memmove.3, mempcpy.3, memset.3, mkdtemp.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mq_unlink.3, mtrace.3, nan.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, pow10.3, printf.3, profil.3, psignal.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setsigmask_np.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_equal.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_mutex_consistent.3, pthread_mutexattr_getpshared.3, pthread_mutexattr_setrobust.3, pthread_rwlockattr_setkind_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_setschedprio.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_spin_init.3, pthread_spin_lock.3, pthread_testcancel.3, pthread_tryjoin_np.3, pthread_yield.3, ptsname.3, putenv.3, putgrent.3, putpwent.3, puts.3, putwchar.3, qecvt.3, qsort.3, raise.3, rand.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, readdir_r.3, realpath.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rewinddir.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, rtnetlink.3, scalb.3, scalbln.3, scandir.3, scanf.3, sched_getcpu.3, seekdir.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_post.3, sem_unlink.3, sem_wait.3, setaliasent.3, setbuf.3, setenv.3, setjmp.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, siginterrupt.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigsetops.3, sigvec.3, sigwait.3, sin.3, sincos.3, sinh.3, sleep.3, slist.3, sockatmark.3, sqrt.3, stailq.3, statvfs.3, stdarg.3, stdio.3, stdio_ext.3, stpcpy.3, stpncpy.3, strcasecmp.3, strcat.3, strchr.3, strcmp.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strfry.3, strftime.3, string.3, strlen.3, strnlen.3, strpbrk.3, strptime.3, strsep.3, strsignal.3, strspn.3, strstr.3, strtod.3, strtoimax.3, strtok.3, strtol.3, strtoul.3, strverscmp.3, strxfrm.3, swab.3, sysconf.3, syslog.3, system.3, sysv_signal.3, tailq.3, tan.3, tanh.3, tcgetpgrp.3, tcgetsid.3, telldir.3, tempnam.3, termios.3, tgamma.3, timegm.3, timeradd.3, tmpfile.3, tmpnam.3, toascii.3, toupper.3, towctrans.3, towlower.3, towupper.3, trunc.3, tsearch.3, ttyname.3, ttyslot.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, ungetwc.3, unlocked_stdio.3, unlockpt.3, updwtmp.3, uselocale.3, usleep.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstoimax.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3, cciss.4, console_codes.4, dsp56k.4, hpsa.4, initrd.4, loop.4, lp.4, msr.4, random.4, rtc.4, smartpqi.4, veth.4, wavelan.4, acct.5, core.5, elf.5, hosts.5, locale.5, proc.5, resolv.conf.5, rpc.5, slabinfo.5, sysfs.5, tmpfs.5, utmp.5, address_families.7, aio.7, attributes.7, bootparam.7, capabilities.7, cgroups.7, complex.7, ddp.7, environ.7, epoll.7, fanotify.7, feature_test_macros.7, hier.7, inode.7, inotify.7, ip.7, ipv6.7, keyrings.7, locale.7, man-pages.7, man.7, math_error.7, mount_namespaces.7, namespaces.7, netdevice.7, netlink.7, numa.7, packet.7, pkeys.7, pthreads.7, queue.7, raw.7, rtnetlink.7, sched.7, session-keyring.7, shm_overview.7, sigevent.7, signal-safety.7, signal.7, sock_diag.7, socket.7, spufs.7, symlink.7, system_data_types.7, tcp.7, time_namespaces.7, udp.7, udplite.7, unicode.7, unix.7, uri.7, user_namespaces.7, vdso.7, vsock.7, x25.7, iconvconfig.8, ld.so.8, ldconfig.8, sln.8, tzselect.8: tstamp
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2021-03-21 23:15:34 +00:00
|
|
|
.TH ERRNO 3 2021-03-22 "" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
errno \- number of last error
|
|
|
|
.SH SYNOPSIS
|
2021-01-03 11:49:03 +00:00
|
|
|
.nf
|
2004-11-03 13:51:07 +00:00
|
|
|
.B #include <errno.h>
|
_exit.2, bpf.2, cacheflush.2, capget.2, chdir.2, chmod.2, chroot.2, clock_getres.2, clock_nanosleep.2, close.2, connect.2, create_module.2, dup.2, epoll_create.2, epoll_ctl.2, epoll_wait.2, eventfd.2, execve.2, execveat.2, exit_group.2, fanotify_mark.2, flock.2, fork.2, fsync.2, futex.2, futimesat.2, get_kernel_syms.2, get_mempolicy.2, get_robust_list.2, getcpu.2, getdomainname.2, getgid.2, getgroups.2, gethostname.2, getitimer.2, getpagesize.2, getpeername.2, getpid.2, getpriority.2, getrandom.2, getresuid.2, getrlimit.2, getrusage.2, getsid.2, getsockname.2, getsockopt.2, gettid.2, gettimeofday.2, getuid.2, getunwind.2, getxattr.2, idle.2, inotify_add_watch.2, inotify_init.2, inotify_rm_watch.2, ioctl.2, ioctl_fat.2, ioctl_ficlonerange.2, ioctl_fideduperange.2, ioctl_getfsmap.2, ioctl_tty.2, ioperm.2, iopl.2, keyctl.2, kill.2, link.2, listen.2, listxattr.2, llseek.2, lseek.2, madvise.2, mbind.2, membarrier.2, memfd_create.2, migrate_pages.2, mincore.2, mkdir.2, mknod.2, mlock.2, mmap.2, mmap2.2, modify_ldt.2, mount.2, move_pages.2, mprotect.2, mq_getsetattr.2, mremap.2, msgop.2, msync.2, nanosleep.2, nfsservctl.2, nice.2, pause.2, pciconfig_read.2, perf_event_open.2, perfmonctl.2, personality.2, pkey_alloc.2, poll.2, posix_fadvise.2, prctl.2, pread.2, process_vm_readv.2, ptrace.2, query_module.2, read.2, readahead.2, readdir.2, readv.2, reboot.2, recv.2, remap_file_pages.2, removexattr.2, rename.2, request_key.2, rmdir.2, rt_sigqueueinfo.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, select.2, select_tut.2, semctl.2, semget.2, semop.2, send.2, sendfile.2, set_mempolicy.2, set_tid_address.2, seteuid.2, setfsgid.2, setfsuid.2, setgid.2, setns.2, setpgid.2, setresuid.2, setreuid.2, setsid.2, setuid.2, setup.2, setxattr.2, sgetmask.2, shmctl.2, shmget.2, shutdown.2, sigaction.2, sigaltstack.2, sigpending.2, sigprocmask.2, sigsuspend.2, sigwaitinfo.2, socket.2, socketcall.2, socketpair.2, stat.2, statfs.2, stime.2, swapon.2, symlink.2, sync.2, sysctl.2, sysinfo.2, syslog.2, time.2, timer_create.2, timer_delete.2, timer_getoverrun.2, timer_settime.2, timerfd_create.2, times.2, tkill.2, truncate.2, umask.2, umount.2, uname.2, unlink.2, unshare.2, uselib.2, userfaultfd.2, ustat.2, utime.2, utimensat.2, vfork.2, vhangup.2, vm86.2, wait.2, wait4.2, write.2, CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, a64l.3, abort.3, abs.3, acos.3, acosh.3, addseverity.3, adjtime.3, aio_cancel.3, aio_error.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, atof.3, atoi.3, basename.3, bcmp.3, bcopy.3, bsd_signal.3, bsearch.3, bstring.3, btowc.3, byteorder.3, cabs.3, cacos.3, cacosh.3, canonicalize_file_name.3, carg.3, casin.3, casinh.3, catan.3, catanh.3, catopen.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, cexp2.3, cfree.3, cimag.3, clearenv.3, clock.3, clock_getcpuclockid.3, clog.3, clog10.3, clog2.3, closedir.3, cmsg.3, confstr.3, conj.3, copysign.3, cos.3, cosh.3, cpow.3, cproj.3, creal.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctermid.3, ctime.3, daemon.3, difftime.3, dirfd.3, div.3, dlerror.3, dlopen.3, dlsym.3, drand48.3, drand48_r.3, duplocale.3, dysize.3, ecvt.3, ecvt_r.3, encrypt.3, endian.3, erf.3, erfc.3, err.3, errno.3, ether_aton.3, euidaccess.3, exec.3, exit.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fclose.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, fgetgrent.3, fgetpwent.3, fgetwc.3, fgetws.3, finite.3, flockfile.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fnmatch.3, fopen.3, fpathconf.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, fread.3, frexp.3, fseek.3, fseeko.3, ftime.3, ftok.3, fts.3, ftw.3, futimes.3, fwide.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcontext.3, getcwd.3, getdate.3, getdirentries.3, getdtablesize.3, getentropy.3, getenv.3, getfsent.3, getgrent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getipnodebyname.3, getline.3, getloadavg.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getpass.3, getprotoent.3, getprotoent_r.3, getpt.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getumask.3, getusershell.3, getutent.3, getw.3, getwchar.3, glob.3, grantpt.3, group_member.3, gsignal.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, index.3, inet.3, inet_net_pton.3, inet_ntop.3, infnan.3, initgroups.3, insque.3, isalpha.3, isatty.3, isfdtype.3, isgreater.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, localeconv.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, malloc.3, malloc_get_state.3, malloc_hook.3, malloc_info.3, matherr.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, memfrob.3, memmem.3, memmove.3, mempcpy.3, memset.3, mkdtemp.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mq_unlink.3, mtrace.3, nan.3, netlink.3, newlocale.3, nextafter.3, nl_langinfo.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, pow.3, pow10.3, printf.3, profil.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_equal.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_rwlockattr_setkind_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_setschedprio.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, pthread_yield.3, ptsname.3, putenv.3, putgrent.3, putpwent.3, puts.3, putwchar.3, qecvt.3, qsort.3, raise.3, rand.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, remainder.3, remove.3, remquo.3, resolver.3, rewinddir.3, rexec.3, rint.3, round.3, rpmatch.3, rtime.3, rtnetlink.3, scalb.3, scalbln.3, scandir.3, scanf.3, sched_getcpu.3, seekdir.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_post.3, sem_unlink.3, sem_wait.3, setaliasent.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, siginterrupt.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sigwait.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdio.3, stdio_ext.3, stpcpy.3, stpncpy.3, strcasecmp.3, strcat.3, strchr.3, strcmp.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strfry.3, strftime.3, strlen.3, strnlen.3, strpbrk.3, strptime.3, strsep.3, strsignal.3, strspn.3, strstr.3, strtod.3, strtoimax.3, strtok.3, strtol.3, strtoul.3, strverscmp.3, strxfrm.3, swab.3, sysconf.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, tcgetpgrp.3, tcgetsid.3, telldir.3, tempnam.3, termios.3, tgamma.3, timegm.3, timeradd.3, tmpfile.3, tmpnam.3, toascii.3, toupper.3, towctrans.3, towlower.3, towupper.3, trunc.3, tsearch.3, ttyname.3, ttyslot.3, tzset.3, ualarm.3, ulimit.3, ungetwc.3, unlocked_stdio.3, unlockpt.3, updwtmp.3, uselocale.3, usleep.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstoimax.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wordexp.3, wprintf.3, xcrypt.3, y0.3, dsp56k.4, random.4, rtc.4, st.4, ddp.7, ip.7, ipv6.7, packet.7, rtnetlink.7, socket.7, tcp.7, udp.7, udplite.7, x25.7: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-15 15:16:29 +00:00
|
|
|
.\".PP
|
2004-12-17 12:20:07 +00:00
|
|
|
.\".BI "extern int " errno ;
|
2021-01-03 11:49:03 +00:00
|
|
|
.fi
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH DESCRIPTION
|
2007-04-12 22:42:49 +00:00
|
|
|
The
|
2004-12-17 12:20:07 +00:00
|
|
|
.I <errno.h>
|
|
|
|
header file defines the integer variable
|
2007-06-22 06:05:43 +00:00
|
|
|
.IR errno ,
|
2004-12-17 12:20:07 +00:00
|
|
|
which is set by system calls and some library functions in the event
|
|
|
|
of an error to indicate what went wrong.
|
2017-11-23 08:52:17 +00:00
|
|
|
.\"
|
|
|
|
.SS errno
|
2017-11-23 08:45:09 +00:00
|
|
|
The value in
|
|
|
|
.I errno
|
|
|
|
is significant only when the return value of
|
2008-07-08 12:32:50 +00:00
|
|
|
the call indicated an error
|
|
|
|
(i.e., \-1 from most system calls;
|
|
|
|
\-1 or NULL from most library functions);
|
|
|
|
a function that succeeds
|
|
|
|
.I is
|
|
|
|
allowed to change
|
2007-06-22 06:05:43 +00:00
|
|
|
.IR errno .
|
2017-11-23 08:52:17 +00:00
|
|
|
The value of
|
|
|
|
.I errno
|
|
|
|
is never set to zero by any system call or library function.
|
CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, acos.3, acosh.3, adjtime.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, backtrace.3, basename.3, bindresvport.3, bsd_signal.3, bsearch.3, bswap.3, btree.3, byteorder.3, bzero.3, canonicalize_file_name.3, carg.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, clearenv.3, clock.3, clog.3, clog10.3, clog2.3, confstr.3, copysign.3, cos.3, cosh.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctime.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48_r.3, duplocale.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, euidaccess.3, exec.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, finite.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fopen.3, fopencookie.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, frexp.3, fseek.3, fseeko.3, ftime.3, fts.3, ftw.3, futimes.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcwd.3, getdate.3, getentropy.3, getenv.3, getfsent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getline.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getutent.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, inet.3, inet_net_pton.3, inet_ntop.3, initgroups.3, insque.3, intro.3, isalpha.3, isgreater.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc_get_state.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mbsnrtowcs.3, mbsrtowcs.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, ptsname.3, putgrent.3, putpwent.3, qsort.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, scalb.3, scalbln.3, scandir.3, scanf.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_wait.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, strcasecmp.3, strcat.3, strchr.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strftime.3, strptime.3, strsignal.3, strstr.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timeradd.3, tmpnam.3, toupper.3, towlower.3, towupper.3, trunc.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, unlocked_stdio.3, updwtmp.3, uselocale.3, usleep.3, wcrtomb.3, wcsdup.3, wcsnrtombs.3, wcsrtombs.3, wcstombs.3, wctob.3, wcwidth.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3: Formatting fix: replace blank lines with .PP/.IP
Blank lines shouldn't generally appear in *roff source (other
than in code examples), since they create large vertical
spaces between text blocks.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-16 03:13:02 +00:00
|
|
|
.PP
|
2008-07-08 12:32:50 +00:00
|
|
|
For some system calls and library functions (e.g.,
|
|
|
|
.BR getpriority (2)),
|
|
|
|
\-1 is a valid return on success.
|
|
|
|
In such cases, a successful return can be distinguished from an error
|
|
|
|
return by setting
|
2007-06-22 06:05:43 +00:00
|
|
|
.I errno
|
2008-07-08 12:32:50 +00:00
|
|
|
to zero before the call, and then,
|
|
|
|
if the call returns a status that indicates that an error
|
|
|
|
may have occurred, checking to see if
|
|
|
|
.I errno
|
intro.1, time.1, adjtimex.2, capget.2, eventfd.2, fcntl.2, getrlimit.2, getsockopt.2, gettimeofday.2, intro.2, ioctl_list.2, ioperm.2, mlock.2, pivot_root.2, poll.2, prctl.2, ptrace.2, sched_setscheduler.2, select_tut.2, semget.2, sigaltstack.2, signalfd.2, sysctl.2, timer_settime.2, timerfd_create.2, wait.2, CPU_SET.3, argz_add.3, assert_perror.3, atexit.3, backtrace.3, bcmp.3, clearenv.3, ctime.3, dl_iterate_phdr.3, dlopen.3, ecvt.3, errno.3, error.3, ether_aton.3, exit.3, fenv.3, ferror.3, finite.3, flockfile.3, fnmatch.3, fpathconf.3, fpclassify.3, ftime.3, ftok.3, ftw.3, fwide.3, getaddrinfo.3, gethostbyname.3, getlogin.3, getnameinfo.3, getnetent.3, getopt.3, getprotoent.3, getrpcent.3, getservent.3, glob.3, hsearch.3, inet.3, isalpha.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, longjmp.3, lsearch.3, malloc.3, matherr.3, mblen.3, mbsinit.3, mbtowc.3, on_exit.3, printf.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_equal.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setschedparam.3, pthread_setschedprio.3, ptsname.3, putenv.3, putgrent.3, raise.3, rcmd.3, regex.3, rexec.3, rpc.3, rpmatch.3, rtnetlink.3, scandir.3, sem_init.3, setaliasent.3, setbuf.3, setenv.3, setjmp.3, signbit.3, stdio_ext.3, strtod.3, strtol.3, strtoul.3, system.3, termios.3, timeradd.3, tzset.3, ualarm.3, wctomb.3, xdr.3, st.4, tty_ioctl.4, core.5, elf.5, proc.5, bootparam.7, capabilities.7, icmp.7, ip.7, ipv6.7, math_error.7, mdoc.samples.7, mq_overview.7, pthreads.7, raw.7, regex.7, socket.7, tcp.7, tzselect.8: Global fix: s/non-zero/nonzero/
The tendency in English, as prescribed in style guides like
Chicago MoS, is towards removing hyphens after prefixes
like "non-" etc.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2010-01-16 16:40:55 +00:00
|
|
|
has a nonzero value.
|
CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, acos.3, acosh.3, adjtime.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, backtrace.3, basename.3, bindresvport.3, bsd_signal.3, bsearch.3, bswap.3, btree.3, byteorder.3, bzero.3, canonicalize_file_name.3, carg.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, clearenv.3, clock.3, clog.3, clog10.3, clog2.3, confstr.3, copysign.3, cos.3, cosh.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctime.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48_r.3, duplocale.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, euidaccess.3, exec.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, finite.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fopen.3, fopencookie.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, frexp.3, fseek.3, fseeko.3, ftime.3, fts.3, ftw.3, futimes.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcwd.3, getdate.3, getentropy.3, getenv.3, getfsent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getline.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getutent.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, inet.3, inet_net_pton.3, inet_ntop.3, initgroups.3, insque.3, intro.3, isalpha.3, isgreater.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc_get_state.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mbsnrtowcs.3, mbsrtowcs.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, ptsname.3, putgrent.3, putpwent.3, qsort.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, scalb.3, scalbln.3, scandir.3, scanf.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_wait.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, strcasecmp.3, strcat.3, strchr.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strftime.3, strptime.3, strsignal.3, strstr.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timeradd.3, tmpnam.3, toupper.3, towlower.3, towupper.3, trunc.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, unlocked_stdio.3, updwtmp.3, uselocale.3, usleep.3, wcrtomb.3, wcsdup.3, wcsnrtombs.3, wcsrtombs.3, wcstombs.3, wctob.3, wcwidth.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3: Formatting fix: replace blank lines with .PP/.IP
Blank lines shouldn't generally appear in *roff source (other
than in code examples), since they create large vertical
spaces between text blocks.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-16 03:13:02 +00:00
|
|
|
.PP
|
time.1, _syscall.2, acct.2, getsockname.2, nanosleep.2, pciconfig_read.2, sched_get_priority_max.2, umask.2, uname.2, ustat.2, INFINITY.3, argz_add.3, atexit.3, bsearch.3, byteorder.3, carg.3, closedir.3, dlopen.3, drand48.3, envz_add.3, errno.3, ether_aton.3, exp10.3, finite.3, flockfile.3, fseeko.3, getcontext.3, getmntent.3, getnetent.3, getprotoent.3, getrpcent.3, getservent.3, iconv_close.3, iconv_open.3, initgroups.3, login.3, longjmp.3, mbsinit.3, memccpy.3, memmem.3, mempcpy.3, offsetof.3, on_exit.3, pow10.3, pthread_cancel.3, pthread_cleanup_push.3, rpc.3, rpmatch.3, setenv.3, setjmp.3, setlogmask.3, sockatmark.3, strfmon.3, strptime.3, strverscmp.3, swab.3, tcgetpgrp.3, tmpfile.3, toascii.3, y0.3, null.4, tty.4, tty_ioctl.4, hosts.equiv.5, environ.7, path_resolution.7, tzselect.8: Convert inline formatting (\fX...\fP) to dot-directive formatting
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2013-06-07 15:25:32 +00:00
|
|
|
.I errno
|
|
|
|
is defined by the ISO C standard to be a modifiable lvalue
|
|
|
|
of type
|
|
|
|
.IR int ,
|
|
|
|
and must not be explicitly declared;
|
|
|
|
.I errno
|
2007-05-12 13:26:09 +00:00
|
|
|
may be a macro.
|
time.1, _syscall.2, acct.2, getsockname.2, nanosleep.2, pciconfig_read.2, sched_get_priority_max.2, umask.2, uname.2, ustat.2, INFINITY.3, argz_add.3, atexit.3, bsearch.3, byteorder.3, carg.3, closedir.3, dlopen.3, drand48.3, envz_add.3, errno.3, ether_aton.3, exp10.3, finite.3, flockfile.3, fseeko.3, getcontext.3, getmntent.3, getnetent.3, getprotoent.3, getrpcent.3, getservent.3, iconv_close.3, iconv_open.3, initgroups.3, login.3, longjmp.3, mbsinit.3, memccpy.3, memmem.3, mempcpy.3, offsetof.3, on_exit.3, pow10.3, pthread_cancel.3, pthread_cleanup_push.3, rpc.3, rpmatch.3, setenv.3, setjmp.3, setlogmask.3, sockatmark.3, strfmon.3, strptime.3, strverscmp.3, swab.3, tcgetpgrp.3, tmpfile.3, toascii.3, y0.3, null.4, tty.4, tty_ioctl.4, hosts.equiv.5, environ.7, path_resolution.7, tzselect.8: Convert inline formatting (\fX...\fP) to dot-directive formatting
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2013-06-07 15:25:32 +00:00
|
|
|
.I errno
|
|
|
|
is thread-local; setting it in one thread
|
2004-11-03 13:51:07 +00:00
|
|
|
does not affect its value in any other thread.
|
2017-11-23 08:52:17 +00:00
|
|
|
.\"
|
|
|
|
.SS Error numbers and names
|
2017-11-23 08:53:28 +00:00
|
|
|
Valid error numbers are all positive numbers.
|
2017-11-23 08:52:17 +00:00
|
|
|
The
|
|
|
|
.I <errno.h>
|
|
|
|
header file defines symbolic names for each
|
|
|
|
of the possible error numbers that may appear in
|
|
|
|
.IR errno .
|
CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, acos.3, acosh.3, adjtime.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, backtrace.3, basename.3, bindresvport.3, bsd_signal.3, bsearch.3, bswap.3, btree.3, byteorder.3, bzero.3, canonicalize_file_name.3, carg.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, clearenv.3, clock.3, clog.3, clog10.3, clog2.3, confstr.3, copysign.3, cos.3, cosh.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctime.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48_r.3, duplocale.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, euidaccess.3, exec.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, finite.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fopen.3, fopencookie.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, frexp.3, fseek.3, fseeko.3, ftime.3, fts.3, ftw.3, futimes.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcwd.3, getdate.3, getentropy.3, getenv.3, getfsent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getline.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getutent.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, inet.3, inet_net_pton.3, inet_ntop.3, initgroups.3, insque.3, intro.3, isalpha.3, isgreater.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc_get_state.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mbsnrtowcs.3, mbsrtowcs.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, ptsname.3, putgrent.3, putpwent.3, qsort.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, scalb.3, scalbln.3, scandir.3, scanf.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_wait.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, strcasecmp.3, strcat.3, strchr.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strftime.3, strptime.3, strsignal.3, strstr.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timeradd.3, tmpnam.3, toupper.3, towlower.3, towupper.3, trunc.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, unlocked_stdio.3, updwtmp.3, uselocale.3, usleep.3, wcrtomb.3, wcsdup.3, wcsnrtombs.3, wcsrtombs.3, wcstombs.3, wctob.3, wcwidth.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3: Formatting fix: replace blank lines with .PP/.IP
Blank lines shouldn't generally appear in *roff source (other
than in code examples), since they create large vertical
spaces between text blocks.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-16 03:13:02 +00:00
|
|
|
.PP
|
2007-04-12 22:42:49 +00:00
|
|
|
All the error names specified by POSIX.1
|
2004-12-17 12:20:07 +00:00
|
|
|
must have distinct values, with the exception of
|
|
|
|
.B EAGAIN
|
2007-04-12 22:42:49 +00:00
|
|
|
and
|
2004-12-17 12:20:07 +00:00
|
|
|
.BR EWOULDBLOCK ,
|
2019-09-01 14:23:48 +00:00
|
|
|
which may be the same.
|
|
|
|
On Linux, these two have the same value on all architectures.
|
CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, acos.3, acosh.3, adjtime.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, backtrace.3, basename.3, bindresvport.3, bsd_signal.3, bsearch.3, bswap.3, btree.3, byteorder.3, bzero.3, canonicalize_file_name.3, carg.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, clearenv.3, clock.3, clog.3, clog10.3, clog2.3, confstr.3, copysign.3, cos.3, cosh.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctime.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48_r.3, duplocale.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, euidaccess.3, exec.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, finite.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fopen.3, fopencookie.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, frexp.3, fseek.3, fseeko.3, ftime.3, fts.3, ftw.3, futimes.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcwd.3, getdate.3, getentropy.3, getenv.3, getfsent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getline.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getutent.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, inet.3, inet_net_pton.3, inet_ntop.3, initgroups.3, insque.3, intro.3, isalpha.3, isgreater.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc_get_state.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mbsnrtowcs.3, mbsrtowcs.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, ptsname.3, putgrent.3, putpwent.3, qsort.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, scalb.3, scalbln.3, scandir.3, scanf.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_wait.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, strcasecmp.3, strcat.3, strchr.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strftime.3, strptime.3, strsignal.3, strstr.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timeradd.3, tmpnam.3, toupper.3, towlower.3, towupper.3, trunc.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, unlocked_stdio.3, updwtmp.3, uselocale.3, usleep.3, wcrtomb.3, wcsdup.3, wcsnrtombs.3, wcsrtombs.3, wcstombs.3, wctob.3, wcwidth.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3: Formatting fix: replace blank lines with .PP/.IP
Blank lines shouldn't generally appear in *roff source (other
than in code examples), since they create large vertical
spaces between text blocks.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-16 03:13:02 +00:00
|
|
|
.PP
|
2017-11-23 09:31:32 +00:00
|
|
|
The error numbers that correspond to each symbolic name
|
|
|
|
vary across UNIX systems,
|
|
|
|
and even across different architectures on Linux.
|
2017-11-23 20:24:21 +00:00
|
|
|
Therefore, numeric values are not included as part of the list of
|
2017-11-23 09:00:24 +00:00
|
|
|
error names below.
|
2017-11-23 09:48:58 +00:00
|
|
|
The
|
|
|
|
.BR perror (3)
|
|
|
|
and
|
|
|
|
.BR strerror (3)
|
|
|
|
functions can be used to convert these names to
|
|
|
|
corresponding textual error messages.
|
2017-11-23 09:39:59 +00:00
|
|
|
.PP
|
|
|
|
On any particular Linux system,
|
2017-11-23 09:03:40 +00:00
|
|
|
one can obtain a list of all symbolic error names and
|
|
|
|
the corresponding error numbers using the
|
|
|
|
.BR errno (1)
|
2019-01-05 20:21:02 +00:00
|
|
|
command (part of the
|
|
|
|
.I moreutils
|
|
|
|
package):
|
2017-11-23 09:03:40 +00:00
|
|
|
.PP
|
|
|
|
.in +4n
|
|
|
|
.EX
|
|
|
|
$ \fBerrno \-l\fP
|
|
|
|
EPERM 1 Operation not permitted
|
|
|
|
ENOENT 2 No such file or directory
|
|
|
|
ESRCH 3 No such process
|
|
|
|
EINTR 4 Interrupted system call
|
|
|
|
EIO 5 Input/output error
|
|
|
|
\&...
|
|
|
|
.EE
|
|
|
|
.in
|
|
|
|
.PP
|
|
|
|
The
|
|
|
|
.BR errno (1)
|
2017-12-23 07:43:20 +00:00
|
|
|
command can also be used to look up individual error numbers and names,
|
|
|
|
and to search for errors using strings from the error description,
|
2017-11-23 09:03:40 +00:00
|
|
|
as in the following examples:
|
|
|
|
.PP
|
|
|
|
.in +4n
|
|
|
|
.EX
|
|
|
|
$ \fBerrno 2\fP
|
|
|
|
ENOENT 2 No such file or directory
|
|
|
|
$ \fBerrno ESRCH\fP
|
|
|
|
ESRCH 3 No such process
|
2017-12-23 07:43:20 +00:00
|
|
|
$ \fBerrno \-s permission\fP
|
|
|
|
EACCES 13 Permission denied
|
2017-11-23 09:03:40 +00:00
|
|
|
.EE
|
|
|
|
.in
|
2020-06-20 20:43:49 +00:00
|
|
|
.\".PP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" POSIX.1 (2001 edition) lists the following symbolic error names. Of
|
2007-07-18 20:24:30 +00:00
|
|
|
.\" these, \fBEDOM\fP and \fBERANGE\fP are in the ISO C standard. ISO C
|
|
|
|
.\" Amendment 1 defines the additional error number \fBEILSEQ\fP for
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" coding errors in multibyte or wide characters.
|
2007-04-12 22:42:49 +00:00
|
|
|
.\"
|
2017-11-23 08:52:17 +00:00
|
|
|
.SS List of error names
|
2017-11-23 08:35:21 +00:00
|
|
|
In the list of the symbolic error names below,
|
|
|
|
various names are marked as follows:
|
2017-11-23 08:17:40 +00:00
|
|
|
.IP * 3
|
|
|
|
.IR POSIX.1-2001 :
|
|
|
|
The name is defined by POSIX.1-2001,
|
|
|
|
and is defined in later POSIX.1 versions, unless otherwise indicated.
|
|
|
|
.IP *
|
|
|
|
.IR POSIX.1-2008 :
|
|
|
|
The name is defined in POSIX.1-2008,
|
|
|
|
but was not present in earlier POSIX.1 standards.
|
|
|
|
.IP *
|
|
|
|
.IR C99 :
|
|
|
|
The name is defined by C99.
|
2020-04-20 06:37:56 +00:00
|
|
|
.PP
|
2017-11-23 08:35:21 +00:00
|
|
|
Below is a list of the symbolic error names that are defined on Linux:
|
2008-01-27 12:08:05 +00:00
|
|
|
.TP 16
|
2007-09-20 16:26:31 +00:00
|
|
|
.B E2BIG
|
2017-11-23 08:17:40 +00:00
|
|
|
Argument list too long (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EACCES
|
2017-11-23 08:17:40 +00:00
|
|
|
Permission denied (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EADDRINUSE
|
2017-11-23 08:17:40 +00:00
|
|
|
Address already in use (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EADDRNOTAVAIL
|
2017-11-23 08:17:40 +00:00
|
|
|
Address not available (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" EADV is only an error on HURD(?)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EAFNOSUPPORT
|
2017-11-23 08:17:40 +00:00
|
|
|
Address family not supported (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EAGAIN
|
2007-04-12 22:42:49 +00:00
|
|
|
Resource temporarily unavailable (may be the same value as
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.BR EWOULDBLOCK )
|
2017-11-23 08:17:40 +00:00
|
|
|
(POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EALREADY
|
2017-11-23 08:17:40 +00:00
|
|
|
Connection already in progress (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADE
|
2016-10-12 11:23:24 +00:00
|
|
|
Invalid exchange.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADF
|
2017-11-23 08:17:40 +00:00
|
|
|
Bad file descriptor (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADFD
|
2016-10-12 11:23:24 +00:00
|
|
|
File descriptor in bad state.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADMSG
|
2017-11-23 08:17:40 +00:00
|
|
|
Bad message (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADR
|
2016-10-12 11:23:24 +00:00
|
|
|
Invalid request descriptor.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADRQC
|
2016-10-12 11:23:24 +00:00
|
|
|
Invalid request code.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBADSLT
|
2016-10-12 11:23:24 +00:00
|
|
|
Invalid slot.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" EBFONT is defined but appears not to be used by kernel or glibc.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EBUSY
|
2017-11-23 08:17:40 +00:00
|
|
|
Device or resource busy (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ECANCELED
|
2017-11-23 08:17:40 +00:00
|
|
|
Operation canceled (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ECHILD
|
2017-11-23 08:17:40 +00:00
|
|
|
No child processes (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B ECHRNG
|
2016-10-12 11:23:24 +00:00
|
|
|
Channel number out of range.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B ECOMM
|
2016-10-12 11:23:24 +00:00
|
|
|
Communication error on send.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ECONNABORTED
|
2017-11-23 08:17:40 +00:00
|
|
|
Connection aborted (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ECONNREFUSED
|
2017-11-23 08:17:40 +00:00
|
|
|
Connection refused (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ECONNRESET
|
2017-11-23 08:17:40 +00:00
|
|
|
Connection reset (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EDEADLK
|
2017-11-23 08:17:40 +00:00
|
|
|
Resource deadlock avoided (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EDEADLOCK
|
2019-09-01 14:23:48 +00:00
|
|
|
On most architectures, a synonym for
|
2016-10-12 11:23:24 +00:00
|
|
|
.BR EDEADLK .
|
2019-09-01 14:23:48 +00:00
|
|
|
On some architectures (e.g., Linux MIPS, PowerPC, SPARC),
|
|
|
|
it is a separate error code "File locking deadlock error".
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EDESTADDRREQ
|
2017-11-23 08:17:40 +00:00
|
|
|
Destination address required (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EDOM
|
2016-10-12 11:23:24 +00:00
|
|
|
Mathematics argument out of domain of function (POSIX.1, C99).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" EDOTDOT is defined but appears to be unused
|
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EDQUOT
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" POSIX just says "Reserved"
|
2017-11-23 08:17:40 +00:00
|
|
|
Disk quota exceeded (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EEXIST
|
2017-11-23 08:17:40 +00:00
|
|
|
File exists (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EFAULT
|
2017-11-23 08:17:40 +00:00
|
|
|
Bad address (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EFBIG
|
2017-11-23 08:17:40 +00:00
|
|
|
File too large (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EHOSTDOWN
|
2016-10-12 11:23:24 +00:00
|
|
|
Host is down.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EHOSTUNREACH
|
2017-11-23 08:17:40 +00:00
|
|
|
Host is unreachable (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2017-11-23 07:49:08 +00:00
|
|
|
.B EHWPOISON
|
|
|
|
Memory page has hardware error.
|
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EIDRM
|
2017-11-23 08:17:40 +00:00
|
|
|
Identifier removed (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EILSEQ
|
2016-10-12 11:52:08 +00:00
|
|
|
Invalid or incomplete multibyte or wide character (POSIX.1, C99).
|
CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, acos.3, acosh.3, adjtime.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, backtrace.3, basename.3, bindresvport.3, bsd_signal.3, bsearch.3, bswap.3, btree.3, byteorder.3, bzero.3, canonicalize_file_name.3, carg.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, clearenv.3, clock.3, clog.3, clog10.3, clog2.3, confstr.3, copysign.3, cos.3, cosh.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctime.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48_r.3, duplocale.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, euidaccess.3, exec.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, finite.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fopen.3, fopencookie.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, frexp.3, fseek.3, fseeko.3, ftime.3, fts.3, ftw.3, futimes.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcwd.3, getdate.3, getentropy.3, getenv.3, getfsent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getline.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getutent.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, inet.3, inet_net_pton.3, inet_ntop.3, initgroups.3, insque.3, intro.3, isalpha.3, isgreater.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc_get_state.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mbsnrtowcs.3, mbsrtowcs.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, ptsname.3, putgrent.3, putpwent.3, qsort.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, scalb.3, scalbln.3, scandir.3, scanf.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_wait.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, strcasecmp.3, strcat.3, strchr.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strftime.3, strptime.3, strsignal.3, strstr.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timeradd.3, tmpnam.3, toupper.3, towlower.3, towupper.3, trunc.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, unlocked_stdio.3, updwtmp.3, uselocale.3, usleep.3, wcrtomb.3, wcsdup.3, wcsnrtombs.3, wcsrtombs.3, wcstombs.3, wctob.3, wcwidth.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3: Formatting fix: replace blank lines with .PP/.IP
Blank lines shouldn't generally appear in *roff source (other
than in code examples), since they create large vertical
spaces between text blocks.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-16 03:13:02 +00:00
|
|
|
.IP
|
2016-10-12 11:52:08 +00:00
|
|
|
The text shown here is the glibc error description;
|
|
|
|
in POSIX.1, this error is described as "Illegal byte sequence".
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EINPROGRESS
|
2017-11-23 08:17:40 +00:00
|
|
|
Operation in progress (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EINTR
|
2017-11-23 08:17:40 +00:00
|
|
|
Interrupted function call (POSIX.1-2001); see
|
2008-07-04 11:32:03 +00:00
|
|
|
.BR signal (7).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EINVAL
|
2017-11-23 08:17:40 +00:00
|
|
|
Invalid argument (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EIO
|
2017-11-23 08:17:40 +00:00
|
|
|
Input/output error (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EISCONN
|
2017-11-23 08:17:40 +00:00
|
|
|
Socket is connected (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EISDIR
|
2017-11-23 08:17:40 +00:00
|
|
|
Is a directory (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EISNAM
|
2016-10-12 11:23:24 +00:00
|
|
|
Is a named type file.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EKEYEXPIRED
|
2016-10-12 11:23:24 +00:00
|
|
|
Key has expired.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EKEYREJECTED
|
2016-10-12 11:23:24 +00:00
|
|
|
Key was rejected by service.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EKEYREVOKED
|
2016-10-12 11:23:24 +00:00
|
|
|
Key has been revoked.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B EL2HLT
|
2016-10-12 11:23:24 +00:00
|
|
|
Level 2 halted.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B EL2NSYNC
|
2016-10-12 11:23:24 +00:00
|
|
|
Level 2 not synchronized.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B EL3HLT
|
2016-10-12 11:23:24 +00:00
|
|
|
Level 3 halted.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B EL3RST
|
2017-04-20 19:20:54 +00:00
|
|
|
Level 3 reset.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ELIBACC
|
2016-10-12 11:23:24 +00:00
|
|
|
Cannot access a needed shared library.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ELIBBAD
|
2016-10-12 11:23:24 +00:00
|
|
|
Accessing a corrupted shared library.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ELIBMAX
|
2016-10-12 11:23:24 +00:00
|
|
|
Attempting to link in too many shared libraries.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ELIBSCN
|
2016-10-12 11:39:55 +00:00
|
|
|
\&.lib section in a.out corrupted
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ELIBEXEC
|
2016-10-12 11:23:24 +00:00
|
|
|
Cannot exec a shared library directly.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2017-11-23 07:49:08 +00:00
|
|
|
.B ELNRANGE
|
|
|
|
.\" ELNRNG appears to be used by a few drivers
|
|
|
|
Link number out of range.
|
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ELOOP
|
2017-11-23 08:17:40 +00:00
|
|
|
Too many levels of symbolic links (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EMEDIUMTYPE
|
2016-10-12 11:23:24 +00:00
|
|
|
Wrong medium type.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EMFILE
|
2017-11-23 08:17:40 +00:00
|
|
|
Too many open files (POSIX.1-2001).
|
2016-10-12 11:23:24 +00:00
|
|
|
Commonly caused by exceeding the
|
2015-01-13 09:23:30 +00:00
|
|
|
.BR RLIMIT_NOFILE
|
|
|
|
resource limit described in
|
2016-10-12 11:23:24 +00:00
|
|
|
.BR getrlimit (2).
|
2020-11-02 12:15:37 +00:00
|
|
|
Can also be caused by exceeding the limit specified in
|
|
|
|
.IR /proc/sys/fs/nr_open .
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EMLINK
|
2017-11-23 08:17:40 +00:00
|
|
|
Too many links (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EMSGSIZE
|
2017-11-23 08:17:40 +00:00
|
|
|
Message too long (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EMULTIHOP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" POSIX says "Reserved"
|
2017-11-23 08:17:40 +00:00
|
|
|
Multihop attempted (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENAMETOOLONG
|
2017-11-23 08:17:40 +00:00
|
|
|
Filename too long (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" ENAVAIL is defined, but appears not to be used
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENETDOWN
|
2017-11-23 08:17:40 +00:00
|
|
|
Network is down (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENETRESET
|
2017-11-23 08:17:40 +00:00
|
|
|
Connection aborted by network (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENETUNREACH
|
2017-11-23 08:17:40 +00:00
|
|
|
Network unreachable (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENFILE
|
2017-11-23 08:17:40 +00:00
|
|
|
Too many open files in system (POSIX.1-2001).
|
2016-10-12 11:23:24 +00:00
|
|
|
On Linux, this is probably a result of encountering the
|
2021-01-21 08:29:38 +00:00
|
|
|
.IR /proc/sys/fs/file\-max
|
2015-12-27 16:03:41 +00:00
|
|
|
limit (see
|
|
|
|
.BR proc (5)).
|
2017-11-23 07:49:08 +00:00
|
|
|
.TP
|
|
|
|
.B ENOANO
|
|
|
|
.\" ENOANO appears to be used by a few drivers
|
|
|
|
No anode.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOBUFS
|
2016-10-12 11:23:24 +00:00
|
|
|
No buffer space available (POSIX.1 (XSI STREAMS option)).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" ENOCSI is defined but appears to be unused.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENODATA
|
2021-03-20 20:01:16 +00:00
|
|
|
The named attribute does not exist,
|
|
|
|
or the process has no access to this attribute; see
|
|
|
|
.BR xattr (7).
|
|
|
|
.IP
|
|
|
|
In POSIX.1-2001 (XSI STREAMS option),
|
|
|
|
this error was described as
|
|
|
|
"No message is available on the STREAM head read queue".
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENODEV
|
2017-11-23 08:17:40 +00:00
|
|
|
No such device (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOENT
|
2017-11-23 08:17:40 +00:00
|
|
|
No such file or directory (POSIX.1-2001).
|
CPU_SET.3, INFINITY.3, __ppc_get_timebase.3, __ppc_set_ppr_med.3, __ppc_yield.3, __setfpucw.3, acos.3, acosh.3, adjtime.3, aio_fsync.3, aio_init.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, backtrace.3, basename.3, bindresvport.3, bsd_signal.3, bsearch.3, bswap.3, btree.3, byteorder.3, bzero.3, canonicalize_file_name.3, carg.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cexp.3, clearenv.3, clock.3, clog.3, clog10.3, clog2.3, confstr.3, copysign.3, cos.3, cosh.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctime.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlerror.3, dlinfo.3, dlopen.3, dlsym.3, drand48_r.3, duplocale.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, euidaccess.3, exec.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetc.3, finite.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fopen.3, fopencookie.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, frexp.3, fseek.3, fseeko.3, ftime.3, fts.3, ftw.3, futimes.3, gamma.3, gcvt.3, get_nprocs_conf.3, get_phys_pages.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcwd.3, getdate.3, getentropy.3, getenv.3, getfsent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getifaddrs.3, getline.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getsubopt.3, getttyent.3, getutent.3, getwchar.3, glob.3, gnu_get_libc_version.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, if_nameindex.3, if_nametoindex.3, ilogb.3, inet.3, inet_net_pton.3, inet_ntop.3, initgroups.3, insque.3, intro.3, isalpha.3, isgreater.3, j0.3, key_setsecret.3, killpg.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, mallinfo.3, malloc_get_state.3, malloc_info.3, malloc_stats.3, malloc_trim.3, malloc_usable_size.3, mallopt.3, matherr.3, mbsnrtowcs.3, mbsrtowcs.3, mcheck.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, nextafter.3, nextup.3, nl_langinfo.3, ntp_gettime.3, offsetof.3, on_exit.3, open_memstream.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_atfork.3, pthread_attr_init.3, pthread_attr_setaffinity_np.3, pthread_attr_setdetachstate.3, pthread_attr_setguardsize.3, pthread_attr_setinheritsched.3, pthread_attr_setschedparam.3, pthread_attr_setschedpolicy.3, pthread_attr_setscope.3, pthread_attr_setstack.3, pthread_attr_setstackaddr.3, pthread_attr_setstacksize.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_detach.3, pthread_exit.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_join.3, pthread_kill.3, pthread_kill_other_threads_np.3, pthread_self.3, pthread_setaffinity_np.3, pthread_setcancelstate.3, pthread_setconcurrency.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_sigqueue.3, pthread_testcancel.3, pthread_tryjoin_np.3, ptsname.3, putgrent.3, putpwent.3, qsort.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, scalb.3, scalbln.3, scandir.3, scanf.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_wait.3, setbuf.3, setenv.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, strcasecmp.3, strcat.3, strchr.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfromd.3, strftime.3, strptime.3, strsignal.3, strstr.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timeradd.3, tmpnam.3, toupper.3, towlower.3, towupper.3, trunc.3, tzset.3, ualarm.3, ulimit.3, undocumented.3, unlocked_stdio.3, updwtmp.3, uselocale.3, usleep.3, wcrtomb.3, wcsdup.3, wcsnrtombs.3, wcsrtombs.3, wcstombs.3, wctob.3, wcwidth.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3: Formatting fix: replace blank lines with .PP/.IP
Blank lines shouldn't generally appear in *roff source (other
than in code examples), since they create large vertical
spaces between text blocks.
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-16 03:13:02 +00:00
|
|
|
.IP
|
2016-01-01 12:33:13 +00:00
|
|
|
Typically, this error results when a specified pathname does not exist,
|
|
|
|
or one of the components in the directory prefix of a pathname does not exist,
|
|
|
|
or the specified pathname is a dangling symbolic link.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOEXEC
|
2017-11-23 08:17:40 +00:00
|
|
|
Exec format error (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOKEY
|
2016-10-12 11:23:24 +00:00
|
|
|
Required key not available.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOLCK
|
2017-11-23 08:17:40 +00:00
|
|
|
No locks available (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOLINK
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" POSIX says "Reserved"
|
2017-11-23 08:17:40 +00:00
|
|
|
Link has been severed (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOMEDIUM
|
2016-10-12 11:23:24 +00:00
|
|
|
No medium found.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOMEM
|
2017-12-14 19:39:34 +00:00
|
|
|
Not enough space/cannot allocate memory (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOMSG
|
2017-11-23 08:17:40 +00:00
|
|
|
No message of the desired type (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENONET
|
2016-10-12 11:23:24 +00:00
|
|
|
Machine is not on the network.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOPKG
|
2016-10-12 11:23:24 +00:00
|
|
|
Package not installed.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOPROTOOPT
|
2017-11-23 08:17:40 +00:00
|
|
|
Protocol not available (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOSPC
|
2017-11-23 08:17:40 +00:00
|
|
|
No space left on device (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOSR
|
2016-10-12 11:23:24 +00:00
|
|
|
No STREAM resources (POSIX.1 (XSI STREAMS option)).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOSTR
|
2016-10-12 11:23:24 +00:00
|
|
|
Not a STREAM (POSIX.1 (XSI STREAMS option)).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOSYS
|
2017-11-23 08:17:40 +00:00
|
|
|
Function not implemented (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTBLK
|
2016-10-12 11:23:24 +00:00
|
|
|
Block device required.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTCONN
|
2017-11-23 08:17:40 +00:00
|
|
|
The socket is not connected (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTDIR
|
2017-11-23 08:17:40 +00:00
|
|
|
Not a directory (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTEMPTY
|
2017-11-23 08:17:40 +00:00
|
|
|
Directory not empty (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" ENOTNAM is defined but appears to be unused.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2017-11-23 07:49:08 +00:00
|
|
|
.B ENOTRECOVERABLE
|
2017-11-23 08:17:40 +00:00
|
|
|
State not recoverable (POSIX.1-2008).
|
2017-11-23 07:49:08 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTSOCK
|
2017-11-23 08:17:40 +00:00
|
|
|
Not a socket (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTSUP
|
2017-11-23 08:17:40 +00:00
|
|
|
Operation not supported (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTTY
|
2017-11-23 08:17:40 +00:00
|
|
|
Inappropriate I/O control operation (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENOTUNIQ
|
2016-10-12 11:23:24 +00:00
|
|
|
Name not unique on network.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ENXIO
|
2017-11-23 08:17:40 +00:00
|
|
|
No such device or address (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EOPNOTSUPP
|
2017-11-23 08:17:40 +00:00
|
|
|
Operation not supported on socket (POSIX.1-2001).
|
fcntl.2, ioctl_tty.2, kcmp.2, prctl.2, semop.2, swapon.2, atof.3, atoi.3, bsearch.3, cfree.3, ctime.3, drand48.3, errno.3: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-17 11:41:27 +00:00
|
|
|
.IP
|
2007-06-22 19:42:52 +00:00
|
|
|
.RB ( ENOTSUP
|
|
|
|
and
|
|
|
|
.B EOPNOTSUPP
|
|
|
|
have the same value on Linux, but
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
according to POSIX.1 these error values should be distinct.)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EOVERFLOW
|
2017-11-23 08:17:40 +00:00
|
|
|
Value too large to be stored in data type (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2017-11-23 07:49:08 +00:00
|
|
|
.B EOWNERDEAD
|
|
|
|
.\" Used at least by the user-space side of rubost mutexes
|
2017-11-23 08:17:40 +00:00
|
|
|
Owner died (POSIX.1-2008).
|
2017-11-23 07:49:08 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EPERM
|
2017-11-23 08:17:40 +00:00
|
|
|
Operation not permitted (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EPFNOSUPPORT
|
2016-10-12 11:23:24 +00:00
|
|
|
Protocol family not supported.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EPIPE
|
2017-11-23 08:17:40 +00:00
|
|
|
Broken pipe (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EPROTO
|
2017-11-23 08:17:40 +00:00
|
|
|
Protocol error (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EPROTONOSUPPORT
|
2017-11-23 08:17:40 +00:00
|
|
|
Protocol not supported (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EPROTOTYPE
|
2017-11-23 08:17:40 +00:00
|
|
|
Protocol wrong type for socket (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ERANGE
|
2016-10-12 11:23:24 +00:00
|
|
|
Result too large (POSIX.1, C99).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EREMCHG
|
2016-10-12 11:23:24 +00:00
|
|
|
Remote address changed.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EREMOTE
|
2016-10-12 11:23:24 +00:00
|
|
|
Object is remote.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EREMOTEIO
|
2016-10-12 11:23:24 +00:00
|
|
|
Remote I/O error.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ERESTART
|
2016-10-12 11:23:24 +00:00
|
|
|
Interrupted system call should be restarted.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2017-11-23 07:49:08 +00:00
|
|
|
.B ERFKILL
|
|
|
|
.\" ERFKILL appears to be used by various drivers
|
|
|
|
Operation not possible due to RF-kill.
|
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EROFS
|
2017-11-23 08:17:40 +00:00
|
|
|
Read-only filesystem (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ESHUTDOWN
|
2016-10-12 11:23:24 +00:00
|
|
|
Cannot send after transport endpoint shutdown.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ESPIPE
|
2017-11-23 08:17:40 +00:00
|
|
|
Invalid seek (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ESOCKTNOSUPPORT
|
2016-10-12 11:23:24 +00:00
|
|
|
Socket type not supported.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ESRCH
|
2017-11-23 08:17:40 +00:00
|
|
|
No such process (POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.\" ESRMNT is defined but appears not to be used
|
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ESTALE
|
2017-11-23 08:17:40 +00:00
|
|
|
Stale file handle (POSIX.1-2001).
|
fcntl.2, ioctl_tty.2, kcmp.2, prctl.2, semop.2, swapon.2, atof.3, atoi.3, bsearch.3, cfree.3, ctime.3, drand48.3, errno.3: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-17 11:41:27 +00:00
|
|
|
.IP
|
2016-10-12 11:23:24 +00:00
|
|
|
This error can occur for NFS and for other filesystems.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ESTRPIPE
|
2016-10-12 11:23:24 +00:00
|
|
|
Streams pipe error.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ETIME
|
2017-11-23 09:14:03 +00:00
|
|
|
Timer expired
|
|
|
|
(POSIX.1 (XSI STREAMS option)).
|
fcntl.2, ioctl_tty.2, kcmp.2, prctl.2, semop.2, swapon.2, atof.3, atoi.3, bsearch.3, cfree.3, ctime.3, drand48.3, errno.3: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-17 11:41:27 +00:00
|
|
|
.IP
|
2007-04-12 22:42:49 +00:00
|
|
|
(POSIX.1 says "STREAM
|
2007-05-21 21:23:17 +00:00
|
|
|
.BR ioctl (2)
|
2017-11-23 09:14:03 +00:00
|
|
|
timeout".)
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ETIMEDOUT
|
2017-11-23 08:17:40 +00:00
|
|
|
Connection timed out (POSIX.1-2001).
|
2017-11-23 07:49:08 +00:00
|
|
|
.TP
|
|
|
|
.B ETOOMANYREFS
|
|
|
|
.\" ETOOMANYREFS seems to be used in net/unix/af_unix.c
|
|
|
|
Too many references: cannot splice.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B ETXTBSY
|
2017-11-23 08:17:40 +00:00
|
|
|
Text file busy (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EUCLEAN
|
2016-10-12 11:23:24 +00:00
|
|
|
Structure needs cleaning.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EUNATCH
|
2016-10-12 11:23:24 +00:00
|
|
|
Protocol driver not attached.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EUSERS
|
2016-10-12 11:23:24 +00:00
|
|
|
Too many users.
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EWOULDBLOCK
|
2004-11-03 13:51:07 +00:00
|
|
|
Operation would block (may be same value as
|
2007-04-12 22:42:49 +00:00
|
|
|
.BR EAGAIN )
|
2017-11-23 08:17:40 +00:00
|
|
|
(POSIX.1-2001).
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.TP
|
2007-09-20 16:26:31 +00:00
|
|
|
.B EXDEV
|
2017-11-23 08:17:40 +00:00
|
|
|
Improper link (POSIX.1-2001).
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
Add Linux-specific errors, and mark individual errors as being present
in POSIX or C99
Hello Kurt,
Thanks for your message.
> man3/errno.3 was missing some errors.
Indeed.
> This patch updates errno.3 based
> on /usr/include/linux/errno.h as of 2.6.16-rc2.
I do not quite understand that last: /usr/include/linux/errno.h is a
userland file -- it probably won't tie up too well to a
specific kernel version (or am I missing something?).
> I also synced the error
> description in the man page with the error descriptions from the header
> file.
This generates some useful info, but also some things that are incorrect.
For example, since you are talking about a glibc header, does a
particular error even occur on Linux. (See some examples below.)
I think you also overlooked the fact that the page says that the listed
errors are defined by POSIX.1-2001. So it is not sufficient to just
add new errors to the list. On the other hand, it is irritating
that the current page does not list Linux-specific errors.
And you patch has finally pushed me to do something I've been
thinking of for a while. So I've changed the page to mark the
errors that are POSIX, and added the Linux-specifc errors,
integrating some of your patch.
> The patch was diffed against manpages-2.22.
Thanks -- many people forget to mention that detail.
> --- errno.3.orig 2005-12-14 07:09:39.000000000 -0500
> +++ errno.3 2006-02-06 23:45:52.000000000 -0500
> @@ -23,9 +23,11 @@
> .\" 5 Oct 2002, Modified by Michael Kerrisk <mtk-manpages@gmx.net>
> .\" Updated for POSIX 1003.1 2001
> .\" 2004-12-17 Martin Schulze <joey@infodrom.org>, mtk
> -.\" Removed errno declaration prototype, added notes
> +.\" Removed errno declaration prototype, added notes
> +.\" 7 Feb 2006, Modified by Kurt Wall <kwall@kurtwerks.com>
> +.\" Add missing errors, sync to linux-2.6.16-rc2
> .\"
> -.TH ERRNO 3 2004-12-17 "" "Library functions"
> +.TH ERRNO 3 2006-02-07 "" "Library functions"
> .SH NAME
> errno \- number of last error
> .SH SYNOPSIS
> @@ -71,61 +73,95 @@
> .\" FIXME The following list is far from complete
> .TP
> .B E2BIG
> -Arg list too long
> +Argument list too long
ok
> .TP
> .B EACCES
> Permission denied
> .TP
> .B EADDRINUSE
> -Address in use
> +Address already in use
ok
> .TP
> .B EADDRNOTAVAIL
> -Address not available
> +Cannot assign requested address
ok
> +.TP
> +.B EADV
> +Advertise error
This is a HURD error. As far as I can tell it does not occur on Linux.
> .TP
> .B EAFNOSUPPORT
> -Address family not supported
> +Address family not supported by protocol
POSIX differs. I stayed with POSIX.
> .TP
> .B EAGAIN
> -Resource temporarily unavailable
> +Try again
This is wrong. (i.e., it does not match POSIX and/or
what perror(3) produces)
> .TP
> .B EALREADY
> -Connection already in progress
> +Operation already in progress
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EBADE
> +Invalid exchange
ok
> .TP
> .B EBADF
> -Bad file descriptor
> +Bad file number
This is wrong.
> +.TP
> +.B EBADFD
> +File descriptor in bad state
ok
> .TP
> .B EBADMSG
> -Bad message
> +Not a data message
This is wrong.
> +.TP
> +.B EBADR
> +Invalid request descriptor
ok
> +.TP
> +.B EBADRQC
> +Invalid request code
ok
> +.TP
> +.B EBADSLT
> +Invalid slot
ok
> +.TP
> +.B EBFONT
> +Bad font file format
As far as I can tell, this is not used on Linux. Let me know
if you find otherwise. (I didn't add it)
> .TP
> .B EBUSY
> -Resource busy
> +Device or resource busy
ok
> .TP
> .B ECANCELED
> -Operation canceled
> +Operation Canceled
Please review the output of automated scripts!
(not changed)
> .TP
> .B ECHILD
> No child processes
> .TP
> +.B ECHRNG
> +Channel number out of range
ok
> +.TP
> +.B ECOMM
> +Communication error on send
ok
> +.TP
> .B ECONNABORTED
> -Connection aborted
> +Software caused connection abort
POSIX differs. I stayed with POSIX.
> .TP
> .B ECONNREFUSED
> Connection refused
> .TP
> .B ECONNRESET
> -Connection reset
> +Connection reset by peer
POSIX differs. I stayed with POSIX.
> .TP
> .B EDEADLK
> -Resource deadlock avoided
> +Resource deadlock would occur
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EDEADLOCK
> +Resource deadlock would occur (might be the same value as
> +.BR EDEADLK)
I wrote just "Synonym for EDEADLK"
> .TP
> .B EDESTADDRREQ
> Destination address required
> .TP
> .B EDOM
> -Domain error
> +Math argument out of domain of func
? Garbled
I wrote the POSIX defn: Mathematics argument out of domain of function
> +.TP
> +.B EDOTDOT
> +RFS specific error
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B EDQUOT
> -Reserved
> +Quota exceeded
POSIX says "Reserved." In this case better to go with
"Disk quota exceeded"
> .TP
> .B EEXIST
> File exists
> @@ -136,8 +172,11 @@
> .B EFBIG
> File too large
> .TP
> +.B EHOSTDOWN
> +Host is down
ok
> +.TP
> .B EHOSTUNREACH
> -Host is unreachable
> +No route to host
POSIX differs. I stayed with POSIX.
> .TP
> .B EIDRM
> Identifier removed
> @@ -146,25 +185,70 @@
> Illegal byte sequence
> .TP
> .B EINPROGRESS
> -Operation in progress
> +Operation now in progress
POSIX differs. I stayed with POSIX.
> .TP
> .B EINTR
> -Interrupted function call
> +Interrupted system call
POSIX differs. I stayed with POSIX.
> .TP
> .B EINVAL
> Invalid argument
> .TP
> .B EIO
> -Input/output error
> +I/O error
POSIX differs. I stayed with POSIX.
> .TP
> .B EISCONN
> -Socket is connected
> +Transport endpoint is already connected
POSIX differs. I stayed with POSIX.
> .TP
> .B EISDIR
> Is a directory
> .TP
> +.B EISNAM
> +Is a named type file
ok
> +.TP
> +.B EKEYEXPIRED
> +Key has expired
ok
> +.TP
> +.B EKEYREJECTED
> +Key was rejected by service
ok
> +.TP
> +.B EKEYREVOKED
> +Key has been revoked
ok
> +.TP
> +.B EL2HLT
> +Level 2 halted
ok
> +.TP
> +.B EL2NSYNC
> +Level 2 not synchronized
ok
> +.TP
> +.B EL3HLT
> +Level 3 halted
ok
> +.TP
> +.B EL3RST
> +Level 3 reset
ok
> +.TP
> +.B ELIBACC
> +Can not access a needed shared library
ok
> +.TP
> +.B ELIBBAD
> +Accessing a corrupted shared library
ok
> +.TP
> +.B ELIBEXEC
> +Cannot exec a shared library directly
ok
> +.TP
> +.B ELIBMAX
> +Attempting to link in too many shared libraries
ok
> +.TP
> +.B ELIBSCN
> +.lib section in a.out corrupted
ok
> +.TP
> +.B ELNRNG
> +Link number out of range
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ELOOP
> -Too many levels of symbolic links
> +Too many symbolic links encountered
this is wrong
> +.TP
> +.B EMEDIUMTYPE
> +Wrong medium type
> .TP
> .B EMFILE
> Too many open files
> @@ -173,32 +257,41 @@
> Too many links
> .TP
> .B EMSGSIZE
> -Inappropriate message buffer length
> +Message too long
ok
> .TP
> .B EMULTIHOP
> -Reserved
> +Multihop attempted
ok
POSIX says "Reserved." In this case better to go with
Linux.
> .TP
> .B ENAMETOOLONG
> -Filename too long
> +File name too long
Scripted output?
(no change)
> +.TP
> +.B ENAVAIL
> +No XENIX semaphores available
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENETDOWN
> Network is down
> .TP
> .B ENETRESET
> -Connection aborted by network
> +Network dropped connection because of reset
POSIX differs. I stayed with POSIX.
> .TP
> .B ENETUNREACH
> -Network unreachable
> +Network is unreachable
POSIX differs. I stayed with POSIX.
> .TP
> .B ENFILE
> -Too many open files in system
> +File table overflow
This is wrong
> +.TP
> +.B ENOANO
> +No anode
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ENOBUFS
> No buffer space available
> +.TP
> +.B ENOCSI
> +No CSI structure available
This is defined, but appears not to be used.
(I didn't add it)
> .\" ENODATA is part of XSR option
> .TP
> .B ENODATA
> -No message is available on the STREAM head read queue
> +No data available
POSIX differs. I stayed with POSIX.
> .TP
> .B ENODEV
> No such device
> @@ -209,17 +302,29 @@
> .B ENOEXEC
> Exec format error
> .TP
> +.B ENOKEY
> +Required key not available
ok
> +.TP
> .B ENOLCK
> -No locks available
> +No record locks available
This is wrong
> .TP
> .B ENOLINK
> -Reserved
> +Link has been severed
ok
POSIX says "Reserved." In this case better to go with
Linux.
> +.TP
> +.B ENOMEDIUM
> +No medium found
ok
> .TP
> .B ENOMEM
> -Not enough space
> +Out of memory
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOMSG
> -No message of the desired type
> +No message of desired type
POSIX differs. I stayed with POSIX.
> +.TP
> +.B ENONET
> +Machine is not on the network
ok
> +.TP
> +.B ENOPKG
> +Package not installed
ok
> .TP
> .B ENOPROTOOPT
> Protocol not available
> @@ -229,17 +334,20 @@
> .\" ENOSR is part of XSR option
> .TP
> .B ENOSR
> -No STREAM resources
> +Out of streams resources
POSIX differs. I stayed with POSIX.
> .\" ENOSTR is part of XSR option
> .TP
> .B ENOSTR
> -Not a STREAM
> +Device not a stream
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOSYS
> Function not implemented
> .TP
> +.B ENOTBLK
> +Block device required
> +.TP
ok
> .B ENOTCONN
> -The socket is not connected
> +Transport endpoint is not connected
POSIX differs. I stayed with POSIX.
> .TP
> .B ENOTDIR
> Not a directory
> @@ -247,27 +355,33 @@
> .B ENOTEMPTY
> Directory not empty
> .TP
> -.B ENOTSOCK
> -Not a socket
> +.B ENOTNAM
> +Not a XENIX named type file
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> -.B ENOTSUP
> -Not supported
No! This exists.
> +.B ENOTSOCK
> +Socket operation on non-socket
> .TP
> .B ENOTTY
> -Inappropriate I/O control operation
> +Not a typewriter
this is wrong
> +.TP
> +.B ENOTUNIQ
> +Name not unique on network
ok
> .TP
> .B ENXIO
> No such device or address
> .TP
> .B EOPNOTSUPP
> -Operation not supported on socket
> +Operation not supported on transport endpoint
POSIX differs. I stayed with POSIX.
(In passing ENOTSUP and EOPNOTSUPP have the same value on Linux;
POSIX.1 does not permit this.)
> .TP
> .B EOVERFLOW
> -Value too large to be stored in data type
> +Value too large for defined data type
POSIX differs. I stayed with POSIX.
> .TP
> .B EPERM
> Operation not permitted
> .TP
> +.B EPFNOSUPPORT
> +Protocol family not supported
ok
> +.TP
> .B EPIPE
> Broken pipe
> .TP
> @@ -281,39 +395,76 @@
> Protocol wrong type for socket
> .TP
> .B ERANGE
> -Result too large
> +Math result not representable
POSIX differs. I stayed with POSIX.
> +.TP
> +.B EREMCHG
> +Remote address changed
ok
> +.TP
> +.B EREMOTE
> +Object is remote
ok
> +.TP
> +.B EREMOTEIO
> +Remote I/O error
ok
> +.TP
> +.B ERESTART
> +Interrupted system call should be restarted
ok
> .TP
> .B EROFS
> Read-only file system
> .TP
> +.B ESHUTDOWN
> +Cannot send after transport endpoint shutdown
ok
> +.TP
> +.B ESOCKTNOSUPPORT
> +Socket type not supported
ok
> +.TP
> .B ESPIPE
> -Invalid seek
> +Illegal seek
POSIX differs. I stayed with POSIX.
> .TP
> .B ESRCH
> No such process
> .TP
> +.B ESRMNT
> +Srmount error
This is defined, but appears not to be used.
(I didn't add it)
> +.TP
> .B ESTALE
> -Stale file handle
> +Stale NFS file handle
Tricky -- you are right about the error message,
but the message itself is wrong, because the error
can occur on other file sytems also.
(not changed)
> .\" Can occur for NFS and for other file systems
> .\" ETIME is part of XSR option
> .TP
> +.B ESTRPIPE
> +Streams pipe error
ok
> +.TP
> .B ETIME
> -STREAM
> -.BR ioctl ()
> -timeout
> +Timer expired
POSIX differs, but Linux doesn't have streams, and the error is
used for various purposes. Changed as you proposed.
> .TP
> .B ETIMEDOUT
> -Operation timed out
> +Connection timed out
ok
> +.TP
> +.B ETOOMANYREFS
> +Too many references: cannot splice
This is defined, but appears not to be used.
(I didn't add it)
> .TP
> .B ETXTBSY
> Text file busy
> .TP
> -.B EWOULDBLOCK
> -Operation would block (may be same value as
> -.BR EAGAIN )
Absolutely not!!
> +.B EUCLEAN
> +Structure needs cleaning
ok
> +.TP
> +.B EUNATCH
> +Protocol driver not attached
ok
> +.TP
> +.B EUSERS
> +Too many users
ok
> +.TP
> +.B EWOULDBLOCK
> +Operation would block (might be same value as
> +.BR EAGAIN)
okay (except formatting was not quite right: .BR EAGAIN )
> .TP
> .B EXDEV
> -Improper link
> +Cross-device link
> +.TP
> +.B EXFULL
> +Exchange full
ok
2006-02-08 18:26:38 +00:00
|
|
|
.B EXFULL
|
2016-10-12 11:23:24 +00:00
|
|
|
Exchange full.
|
2004-12-17 12:20:07 +00:00
|
|
|
.SH NOTES
|
2004-11-03 13:51:07 +00:00
|
|
|
A common mistake is to do
|
ioctl_console.2, ioctl_getfsmap.2, ioctl_iflags.2, ioctl_list.2, ioctl_ns.2, kcmp.2, kexec_load.2, keyctl.2, link.2, mmap.2, modify_ldt.2, msgctl.2, poll.2, query_module.2, quotactl.2, recv.2, recvmmsg.2, sched_setscheduler.2, seccomp.2, select.2, semctl.2, semop.2, send.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sysinfo.2, timer_create.2, timerfd_create.2, uname.2, unshare.2, userfaultfd.2, ustat.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, backtrace.3, bswap.3, btree.3, clock_getcpuclockid.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dlinfo.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, fmemopen.3, fopencookie.3, frexp.3, fts.3, ftw.3, getaddrinfo.3, getaddrinfo_a.3, getcontext.3, getgrouplist.3, getifaddrs.3, getipnodebyname.3, getnameinfo.3, getopt.3, getprotoent_r.3, getpwent_r.3, getrpcent.3, getservent_r.3, getttyent.3, getumask.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, inet.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallopt.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, posix_openpt.3, printf.3, pthread_setname_np.3, pthread_setschedparam.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, sigvec.3, stdarg.3, strcat.3, strcpy.3, strftime.3, strtol.3, toupper.3, ttyslot.3, fuse.4, loop.4, st.4, elf.5, cgroup_namespaces.7, cgroups.7, feature_test_macros.7, inode.7, inotify.7, keyrings.7, man-pages.7, math_error.7, mount_namespaces.7, mq_overview.7, pthreads.7, sched.7, session-keyring.7, udplite.7, unix.7, vdso.7: Use consistent markup for code snippets
The preferred form is
.PP/.IP
.in +4n
.EX
<code>
.EE
.in
.PP/.IP
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:37:55 +00:00
|
|
|
.PP
|
2007-12-19 07:19:23 +00:00
|
|
|
.in +4n
|
ioctl_console.2, ioctl_getfsmap.2, ioctl_iflags.2, ioctl_list.2, ioctl_ns.2, kcmp.2, kexec_load.2, keyctl.2, link.2, mmap.2, modify_ldt.2, msgctl.2, poll.2, query_module.2, quotactl.2, recv.2, recvmmsg.2, sched_setscheduler.2, seccomp.2, select.2, semctl.2, semop.2, send.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sysinfo.2, timer_create.2, timerfd_create.2, uname.2, unshare.2, userfaultfd.2, ustat.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, backtrace.3, bswap.3, btree.3, clock_getcpuclockid.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dlinfo.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, fmemopen.3, fopencookie.3, frexp.3, fts.3, ftw.3, getaddrinfo.3, getaddrinfo_a.3, getcontext.3, getgrouplist.3, getifaddrs.3, getipnodebyname.3, getnameinfo.3, getopt.3, getprotoent_r.3, getpwent_r.3, getrpcent.3, getservent_r.3, getttyent.3, getumask.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, inet.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallopt.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, posix_openpt.3, printf.3, pthread_setname_np.3, pthread_setschedparam.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, sigvec.3, stdarg.3, strcat.3, strcpy.3, strftime.3, strtol.3, toupper.3, ttyslot.3, fuse.4, loop.4, st.4, elf.5, cgroup_namespaces.7, cgroups.7, feature_test_macros.7, inode.7, inotify.7, keyrings.7, man-pages.7, math_error.7, mount_namespaces.7, mq_overview.7, pthreads.7, sched.7, session-keyring.7, udplite.7, unix.7, vdso.7: Use consistent markup for code snippets
The preferred form is
.PP/.IP
.in +4n
.EX
<code>
.EE
.in
.PP/.IP
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:37:55 +00:00
|
|
|
.EX
|
2005-07-06 12:57:38 +00:00
|
|
|
if (somecall() == \-1) {
|
time.1, atexit.3, bsearch.3, dlopen.3, envz_add.3, errno.3, fmtmsg.3, getgrent_r.3, getline.3, getmntent.3, getnameinfo.3, getpass.3, getpwent_r.3, gets.3, isalpha.3, printf.3, puts.3, recno.3, scandir.3, stdarg.3, sysconf.3, termios.3, wordexp.3, null.4, core.5, dir_colors.5, issue.5, proc.5, termcap.5, utmp.5, ascii.7, cpuset.7, glob.7, man-pages.7, man.7, mdoc.7, mdoc.samples.7, regex.7: Revert 9f8e673e623d (whose global s%\\e%\\\\% caused problems)
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-09-26 21:56:54 +00:00
|
|
|
printf("somecall() failed\en");
|
2004-11-03 13:51:07 +00:00
|
|
|
if (errno == ...) { ... }
|
|
|
|
}
|
ioctl_console.2, ioctl_getfsmap.2, ioctl_iflags.2, ioctl_list.2, ioctl_ns.2, kcmp.2, kexec_load.2, keyctl.2, link.2, mmap.2, modify_ldt.2, msgctl.2, poll.2, query_module.2, quotactl.2, recv.2, recvmmsg.2, sched_setscheduler.2, seccomp.2, select.2, semctl.2, semop.2, send.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sysinfo.2, timer_create.2, timerfd_create.2, uname.2, unshare.2, userfaultfd.2, ustat.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, backtrace.3, bswap.3, btree.3, clock_getcpuclockid.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dlinfo.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, fmemopen.3, fopencookie.3, frexp.3, fts.3, ftw.3, getaddrinfo.3, getaddrinfo_a.3, getcontext.3, getgrouplist.3, getifaddrs.3, getipnodebyname.3, getnameinfo.3, getopt.3, getprotoent_r.3, getpwent_r.3, getrpcent.3, getservent_r.3, getttyent.3, getumask.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, inet.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallopt.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, posix_openpt.3, printf.3, pthread_setname_np.3, pthread_setschedparam.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, sigvec.3, stdarg.3, strcat.3, strcpy.3, strftime.3, strtol.3, toupper.3, ttyslot.3, fuse.4, loop.4, st.4, elf.5, cgroup_namespaces.7, cgroups.7, feature_test_macros.7, inode.7, inotify.7, keyrings.7, man-pages.7, math_error.7, mount_namespaces.7, mq_overview.7, pthreads.7, sched.7, session-keyring.7, udplite.7, unix.7, vdso.7: Use consistent markup for code snippets
The preferred form is
.PP/.IP
.in +4n
.EX
<code>
.EE
.in
.PP/.IP
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:37:55 +00:00
|
|
|
.EE
|
2007-12-19 07:19:23 +00:00
|
|
|
.in
|
ioctl_console.2, ioctl_getfsmap.2, ioctl_iflags.2, ioctl_list.2, ioctl_ns.2, kcmp.2, kexec_load.2, keyctl.2, link.2, mmap.2, modify_ldt.2, msgctl.2, poll.2, query_module.2, quotactl.2, recv.2, recvmmsg.2, sched_setscheduler.2, seccomp.2, select.2, semctl.2, semop.2, send.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sysinfo.2, timer_create.2, timerfd_create.2, uname.2, unshare.2, userfaultfd.2, ustat.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, backtrace.3, bswap.3, btree.3, clock_getcpuclockid.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dlinfo.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, fmemopen.3, fopencookie.3, frexp.3, fts.3, ftw.3, getaddrinfo.3, getaddrinfo_a.3, getcontext.3, getgrouplist.3, getifaddrs.3, getipnodebyname.3, getnameinfo.3, getopt.3, getprotoent_r.3, getpwent_r.3, getrpcent.3, getservent_r.3, getttyent.3, getumask.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, inet.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallopt.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, posix_openpt.3, printf.3, pthread_setname_np.3, pthread_setschedparam.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, sigvec.3, stdarg.3, strcat.3, strcpy.3, strftime.3, strtol.3, toupper.3, ttyslot.3, fuse.4, loop.4, st.4, elf.5, cgroup_namespaces.7, cgroups.7, feature_test_macros.7, inode.7, inotify.7, keyrings.7, man-pages.7, math_error.7, mount_namespaces.7, mq_overview.7, pthreads.7, sched.7, session-keyring.7, udplite.7, unix.7, vdso.7: Use consistent markup for code snippets
The preferred form is
.PP/.IP
.in +4n
.EX
<code>
.EE
.in
.PP/.IP
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:37:55 +00:00
|
|
|
.PP
|
2004-11-03 13:51:07 +00:00
|
|
|
where
|
|
|
|
.I errno
|
|
|
|
no longer needs to have the value it had upon return from
|
2005-10-19 07:07:02 +00:00
|
|
|
.IR somecall ()
|
2004-12-17 12:20:07 +00:00
|
|
|
(i.e., it may have been changed by the
|
2007-05-12 00:30:29 +00:00
|
|
|
.BR printf (3)).
|
2004-11-03 13:51:07 +00:00
|
|
|
If the value of
|
|
|
|
.I errno
|
|
|
|
should be preserved across a library call, it must be saved:
|
ioctl_console.2, ioctl_getfsmap.2, ioctl_iflags.2, ioctl_list.2, ioctl_ns.2, kcmp.2, kexec_load.2, keyctl.2, link.2, mmap.2, modify_ldt.2, msgctl.2, poll.2, query_module.2, quotactl.2, recv.2, recvmmsg.2, sched_setscheduler.2, seccomp.2, select.2, semctl.2, semop.2, send.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sysinfo.2, timer_create.2, timerfd_create.2, uname.2, unshare.2, userfaultfd.2, ustat.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, backtrace.3, bswap.3, btree.3, clock_getcpuclockid.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dlinfo.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, fmemopen.3, fopencookie.3, frexp.3, fts.3, ftw.3, getaddrinfo.3, getaddrinfo_a.3, getcontext.3, getgrouplist.3, getifaddrs.3, getipnodebyname.3, getnameinfo.3, getopt.3, getprotoent_r.3, getpwent_r.3, getrpcent.3, getservent_r.3, getttyent.3, getumask.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, inet.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallopt.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, posix_openpt.3, printf.3, pthread_setname_np.3, pthread_setschedparam.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, sigvec.3, stdarg.3, strcat.3, strcpy.3, strftime.3, strtol.3, toupper.3, ttyslot.3, fuse.4, loop.4, st.4, elf.5, cgroup_namespaces.7, cgroups.7, feature_test_macros.7, inode.7, inotify.7, keyrings.7, man-pages.7, math_error.7, mount_namespaces.7, mq_overview.7, pthreads.7, sched.7, session-keyring.7, udplite.7, unix.7, vdso.7: Use consistent markup for code snippets
The preferred form is
.PP/.IP
.in +4n
.EX
<code>
.EE
.in
.PP/.IP
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:37:55 +00:00
|
|
|
.PP
|
2007-12-19 07:19:23 +00:00
|
|
|
.in +4n
|
ioctl_console.2, ioctl_getfsmap.2, ioctl_iflags.2, ioctl_list.2, ioctl_ns.2, kcmp.2, kexec_load.2, keyctl.2, link.2, mmap.2, modify_ldt.2, msgctl.2, poll.2, query_module.2, quotactl.2, recv.2, recvmmsg.2, sched_setscheduler.2, seccomp.2, select.2, semctl.2, semop.2, send.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sysinfo.2, timer_create.2, timerfd_create.2, uname.2, unshare.2, userfaultfd.2, ustat.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, backtrace.3, bswap.3, btree.3, clock_getcpuclockid.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dlinfo.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, fmemopen.3, fopencookie.3, frexp.3, fts.3, ftw.3, getaddrinfo.3, getaddrinfo_a.3, getcontext.3, getgrouplist.3, getifaddrs.3, getipnodebyname.3, getnameinfo.3, getopt.3, getprotoent_r.3, getpwent_r.3, getrpcent.3, getservent_r.3, getttyent.3, getumask.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, inet.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallopt.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mtrace.3, newlocale.3, ntp_gettime.3, offsetof.3, posix_openpt.3, printf.3, pthread_setname_np.3, pthread_setschedparam.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, sigvec.3, stdarg.3, strcat.3, strcpy.3, strftime.3, strtol.3, toupper.3, ttyslot.3, fuse.4, loop.4, st.4, elf.5, cgroup_namespaces.7, cgroups.7, feature_test_macros.7, inode.7, inotify.7, keyrings.7, man-pages.7, math_error.7, mount_namespaces.7, mq_overview.7, pthreads.7, sched.7, session-keyring.7, udplite.7, unix.7, vdso.7: Use consistent markup for code snippets
The preferred form is
.PP/.IP
.in +4n
.EX
<code>
.EE
.in
.PP/.IP
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:37:55 +00:00
|
|
|
.EX
|
2005-07-06 12:57:38 +00:00
|
|
|
if (somecall() == \-1) {
|
2004-11-03 13:51:07 +00:00
|
|
|
int errsv = errno;
|
time.1, atexit.3, bsearch.3, dlopen.3, envz_add.3, errno.3, fmtmsg.3, getgrent_r.3, getline.3, getmntent.3, getnameinfo.3, getpass.3, getpwent_r.3, gets.3, isalpha.3, printf.3, puts.3, recno.3, scandir.3, stdarg.3, sysconf.3, termios.3, wordexp.3, null.4, core.5, dir_colors.5, issue.5, proc.5, termcap.5, utmp.5, ascii.7, cpuset.7, glob.7, man-pages.7, man.7, mdoc.7, mdoc.samples.7, regex.7: Revert 9f8e673e623d (whose global s%\\e%\\\\% caused problems)
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2012-09-26 21:56:54 +00:00
|
|
|
printf("somecall() failed\en");
|
2004-11-03 13:51:07 +00:00
|
|
|
if (errsv == ...) { ... }
|
|
|
|
}
|
execve.2, ioctl_console.2, ioctl_iflags.2, ioctl_ns.2, ioctl_userfaultfd.2, kcmp.2, kexec_load.2, keyctl.2, link.2, listxattr.2, membarrier.2, memfd_create.2, mmap.2, modify_ldt.2, mprotect.2, msgctl.2, nanosleep.2, open_by_handle_at.2, perf_event_open.2, poll.2, posix_fadvise.2, process_vm_readv.2, ptrace.2, query_module.2, quotactl.2, readdir.2, readv.2, recv.2, recvmmsg.2, request_key.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setattr.2, sched_setscheduler.2, seccomp.2, select.2, select_tut.2, semctl.2, semop.2, send.2, sendmmsg.2, set_thread_area.2, setns.2, shmctl.2, shmget.2, sigaction.2, sigaltstack.2, signal.2, sigwaitinfo.2, stat.2, statfs.2, statx.2, sync_file_range.2, syscall.2, sysctl.2, sysinfo.2, tee.2, timer_create.2, timer_settime.2, timerfd_create.2, unshare.2, userfaultfd.2, ustat.2, utime.2, utimensat.2, vmsplice.2, wait.2, adjtime.3, aio_init.3, backtrace.3, basename.3, bswap.3, btree.3, clock_getcpuclockid.3, cmsg.3, confstr.3, dbopen.3, dl_iterate_phdr.3, dladdr.3, dlinfo.3, dlopen.3, duplocale.3, encrypt.3, end.3, endian.3, err.3, errno.3, ether_aton.3, fgetgrent.3, fgetpwent.3, fmemopen.3, frexp.3, ftime.3, fts.3, getaddrinfo.3, getaddrinfo_a.3, getdate.3, getfsent.3, getgrent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, getifaddrs.3, getipnodebyname.3, getmntent.3, getnameinfo.3, getnetent.3, getopt.3, getprotoent.3, getprotoent_r.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getservent.3, getservent_r.3, getspnam.3, getttyent.3, glob.3, gnu_get_libc_version.3, hash.3, hsearch.3, if_nameindex.3, inet.3, inet_net_pton.3, inet_pton.3, insque.3, isalpha.3, makecontext.3, mallinfo.3, malloc_info.3, mallopt.3, matherr.3, mbstowcs.3, mcheck.3, memchr.3, mq_getattr.3, mq_open.3, mq_receive.3, mq_send.3, mtrace.3, newlocale.3, ntp_gettime.3, posix_openpt.3, printf.3, pthread_attr_init.3, pthread_attr_setschedparam.3, pthread_cancel.3, pthread_cleanup_push.3, pthread_cleanup_push_defer_np.3, pthread_create.3, pthread_getattr_default_np.3, pthread_getattr_np.3, pthread_getcpuclockid.3, pthread_setname_np.3, pthread_setschedparam.3, pthread_sigmask.3, pthread_tryjoin_np.3, readdir.3, realpath.3, recno.3, regex.3, rpc.3, scanf.3, sched_getcpu.3, sem_wait.3, setaliasent.3, sigqueue.3, statvfs.3, strcat.3, strcpy.3, strftime.3, strtok.3, strtol.3, strverscmp.3, toupper.3, ttyslot.3, xdr.3, fuse.4, loop.4, rtc.4, st.4, acct.5, core.5, elf.5, slabinfo.5, aio.7, arp.7, capabilities.7, cgroup_namespaces.7, cgroups.7, ddp.7, fanotify.7, feature_test_macros.7, inode.7, inotify.7, ip.7, keyrings.7, locale.7, mount_namespaces.7, namespaces.7, netdevice.7, netlink.7, packet.7, pkeys.7, pthreads.7, sched.7, session-keyring.7, sock_diag.7, socket.7, spufs.7, udplite.7, unix.7, user_namespaces.7, vdso.7, x25.7, ld.so.8: Use consistent markup for code snippets
Change .nf/.fi to .EX/.EE
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2017-08-18 19:52:46 +00:00
|
|
|
.EE
|
2007-12-19 07:19:23 +00:00
|
|
|
.in
|
2004-12-17 12:20:07 +00:00
|
|
|
.PP
|
2020-09-07 09:19:53 +00:00
|
|
|
Note that the POSIX threads APIs do
|
|
|
|
.I not
|
|
|
|
set
|
|
|
|
.I errno
|
|
|
|
on error.
|
|
|
|
Instead, on failure they return an error number as the function result.
|
|
|
|
These error numbers have the same meanings as the error numbers returned in
|
|
|
|
.I errno
|
|
|
|
by other APIs.
|
|
|
|
.PP
|
2017-11-23 09:25:45 +00:00
|
|
|
On some ancient systems,
|
|
|
|
.I <errno.h>
|
|
|
|
was not present or did not declare
|
|
|
|
.IR errno ,
|
|
|
|
so that it was necessary to declare
|
2004-12-17 12:20:07 +00:00
|
|
|
.I errno
|
|
|
|
manually
|
2007-04-12 22:42:49 +00:00
|
|
|
(i.e.,
|
2017-11-23 09:25:45 +00:00
|
|
|
.IR "extern int errno" ).
|
2004-12-17 12:20:07 +00:00
|
|
|
.BR "Do not do this" .
|
2017-11-23 09:25:45 +00:00
|
|
|
It long ago ceased to be necessary,
|
|
|
|
and it will cause problems with modern versions of the C library.
|
getent.1, intro.1, time.1, _exit.2, _syscall.2, accept.2, access.2, acct.2, adjtimex.2, alarm.2, alloc_hugepages.2, arch_prctl.2, bdflush.2, bind.2, brk.2, cacheflush.2, capget.2, chdir.2, chmod.2, chown.2, chroot.2, clock_getres.2, clock_nanosleep.2, clone.2, close.2, connect.2, create_module.2, delete_module.2, dup.2, epoll_create.2, epoll_ctl.2, epoll_wait.2, eventfd.2, execve.2, exit_group.2, faccessat.2, fchmodat.2, fchownat.2, fcntl.2, flock.2, fork.2, fstatat.2, fsync.2, futex.2, futimesat.2, get_kernel_syms.2, get_robust_list.2, get_thread_area.2, getcpu.2, getdents.2, getdomainname.2, getgid.2, getgroups.2, gethostname.2, getitimer.2, getpagesize.2, getpeername.2, getpid.2, getpriority.2, getresuid.2, getrlimit.2, getrusage.2, getsid.2, getsockname.2, getsockopt.2, gettid.2, gettimeofday.2, getuid.2, getunwind.2, getxattr.2, idle.2, init_module.2, inotify_add_watch.2, inotify_init.2, inotify_rm_watch.2, intro.2, io_cancel.2, io_destroy.2, io_getevents.2, io_setup.2, io_submit.2, ioctl.2, ioctl_list.2, ioperm.2, iopl.2, ioprio_set.2, ipc.2, kcmp.2, kill.2, killpg.2, link.2, linkat.2, listen.2, listxattr.2, llseek.2, lookup_dcookie.2, lseek.2, madvise.2, migrate_pages.2, mincore.2, mkdir.2, mkdirat.2, mknod.2, mknodat.2, mlock.2, mmap.2, mmap2.2, modify_ldt.2, mount.2, move_pages.2, mprotect.2, mq_getsetattr.2, mremap.2, msgctl.2, msgget.2, msgop.2, msync.2, nanosleep.2, nfsservctl.2, nice.2, open.2, openat.2, outb.2, pause.2, pciconfig_read.2, perf_event_open.2, perfmonctl.2, personality.2, pipe.2, pivot_root.2, poll.2, posix_fadvise.2, prctl.2, pread.2, process_vm_readv.2, ptrace.2, query_module.2, quotactl.2, read.2, readahead.2, readdir.2, readlink.2, readlinkat.2, readv.2, reboot.2, recv.2, remap_file_pages.2, removexattr.2, rename.2, renameat.2, rmdir.2, rt_sigqueueinfo.2, sched_get_priority_max.2, sched_rr_get_interval.2, sched_setaffinity.2, sched_setparam.2, sched_setscheduler.2, sched_yield.2, select.2, semctl.2, semget.2, semop.2, send.2, sendfile.2, set_thread_area.2, set_tid_address.2, seteuid.2, setfsgid.2, setfsuid.2, setgid.2, setpgid.2, setresuid.2, setreuid.2, setsid.2, setuid.2, setup.2, setxattr.2, shmctl.2, shmget.2, shmop.2, shutdown.2, sigaction.2, sigaltstack.2, signal.2, signalfd.2, sigpending.2, sigprocmask.2, sigreturn.2, sigsuspend.2, sigwaitinfo.2, socket.2, socketcall.2, socketpair.2, splice.2, stat.2, statfs.2, stime.2, swapon.2, symlink.2, symlinkat.2, sync.2, sync_file_range.2, sysctl.2, sysfs.2, sysinfo.2, syslog.2, tee.2, time.2, timerfd_create.2, times.2, tkill.2, truncate.2, umask.2, umount.2, uname.2, unimplemented.2, unlink.2, unlinkat.2, uselib.2, ustat.2, utime.2, utimensat.2, vfork.2, vhangup.2, vm86.2, vmsplice.2, wait.2, wait4.2, write.2, CPU_SET.3, INFINITY.3, MB_CUR_MAX.3, MB_LEN_MAX.3, __setfpucw.3, a64l.3, abort.3, abs.3, acos.3, acosh.3, addseverity.3, adjtime.3, aio_cancel.3, aio_error.3, aio_fsync.3, aio_read.3, aio_return.3, aio_suspend.3, aio_write.3, alloca.3, argz_add.3, asin.3, asinh.3, asprintf.3, assert.3, assert_perror.3, atan.3, atan2.3, atanh.3, atexit.3, atof.3, atoi.3, backtrace.3, basename.3, bcmp.3, bcopy.3, bindresvport.3, bsd_signal.3, bsearch.3, bstring.3, btowc.3, btree.3, byteorder.3, bzero.3, cabs.3, cacos.3, cacosh.3, canonicalize_file_name.3, carg.3, casin.3, casinh.3, catan.3, catanh.3, catgets.3, catopen.3, cbrt.3, ccos.3, ccosh.3, ceil.3, cerf.3, cexp.3, cexp2.3, cfree.3, cimag.3, clearenv.3, clock.3, clock_getcpuclockid.3, clog.3, clog10.3, clog2.3, closedir.3, cmsg.3, confstr.3, conj.3, copysign.3, cos.3, cosh.3, cpow.3, cproj.3, creal.3, crypt.3, csin.3, csinh.3, csqrt.3, ctan.3, ctanh.3, ctermid.3, ctime.3, daemon.3, dbopen.3, des_crypt.3, difftime.3, dirfd.3, div.3, dl_iterate_phdr.3, dlopen.3, dprintf.3, drand48.3, drand48_r.3, dysize.3, ecvt.3, ecvt_r.3, encrypt.3, end.3, endian.3, envz_add.3, erf.3, erfc.3, err.3, errno.3, error.3, ether_aton.3, euidaccess.3, exec.3, exit.3, exp.3, exp10.3, exp2.3, expm1.3, fabs.3, fclose.3, fcloseall.3, fdim.3, fenv.3, ferror.3, fexecve.3, fflush.3, ffs.3, fgetgrent.3, fgetpwent.3, fgetwc.3, fgetws.3, finite.3, flockfile.3, floor.3, fma.3, fmax.3, fmemopen.3, fmin.3, fmod.3, fmtmsg.3, fnmatch.3, fopen.3, fpathconf.3, fpclassify.3, fpurge.3, fputwc.3, fputws.3, fread.3, frexp.3, fseek.3, fseeko.3, ftime.3, ftok.3, fts.3, ftw.3, futimes.3, fwide.3, gamma.3, gcvt.3, getaddrinfo.3, getaddrinfo_a.3, getauxval.3, getcontext.3, getcwd.3, getdate.3, getdirentries.3, getdtablesize.3, getenv.3, getfsent.3, getgrent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getipnodebyname.3, getline.3, getloadavg.3, getlogin.3, getmntent.3, getnameinfo.3, getnetent.3, getnetent_r.3, getopt.3, getpass.3, getprotoent.3, getprotoent_r.3, getpt.3, getpw.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent.3, getrpcent_r.3, getrpcport.3, gets.3, getservent.3, getservent_r.3, getspnam.3, getttyent.3, getumask.3, getusershell.3, getutent.3, getw.3, getwchar.3, glob.3, grantpt.3, gsignal.3, hash.3, hsearch.3, hypot.3, iconv.3, iconv_close.3, iconv_open.3, ilogb.3, index.3, inet.3, inet_ntop.3, inet_pton.3, infnan.3, initgroups.3, insque.3, intro.3, isalpha.3, isatty.3, isgreater.3, iswalnum.3, iswalpha.3, iswblank.3, iswcntrl.3, iswctype.3, iswdigit.3, iswgraph.3, iswlower.3, iswprint.3, iswpunct.3, iswspace.3, iswupper.3, iswxdigit.3, j0.3, key_setsecret.3, ldexp.3, lgamma.3, lio_listio.3, localeconv.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, login.3, longjmp.3, lrint.3, lround.3, lsearch.3, lseek64.3, makecontext.3, makedev.3, malloc.3, malloc_hook.3, mblen.3, mbrlen.3, mbrtowc.3, mbsinit.3, mbsnrtowcs.3, mbsrtowcs.3, mbstowcs.3, mbtowc.3, memccpy.3, memchr.3, memcmp.3, memcpy.3, memfrob.3, memmem.3, memmove.3, mempcpy.3, memset.3, mkdtemp.3, mkfifo.3, mkfifoat.3, mkstemp.3, mktemp.3, modf.3, mpool.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_open.3, mq_receive.3, mq_send.3, mq_unlink.3, mtrace.3, nan.3, netlink.3, nextafter.3, nl_langinfo.3, offsetof.3, on_exit.3, opendir.3, openpty.3, perror.3, popen.3, posix_fallocate.3, posix_memalign.3, posix_openpt.3, pow.3, pow10.3, printf.3, profil.3, program_invocation_name.3, psignal.3, pthread_kill_other_threads_np.3, ptsname.3, putenv.3, putgrent.3, putpwent.3, puts.3, putwchar.3, qecvt.3, qsort.3, queue.3, raise.3, rand.3, random.3, random_r.3, rcmd.3, re_comp.3, readdir.3, realpath.3, recno.3, regex.3, remainder.3, remove.3, remquo.3, resolver.3, rewinddir.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, rtime.3, rtnetlink.3, scalb.3, scalbln.3, scandir.3, scandirat.3, scanf.3, seekdir.3, sem_close.3, sem_destroy.3, sem_getvalue.3, sem_init.3, sem_open.3, sem_post.3, sem_unlink.3, sem_wait.3, setaliasent.3, setbuf.3, setenv.3, setjmp.3, setlocale.3, setlogmask.3, setnetgrent.3, shm_open.3, siginterrupt.3, signbit.3, significand.3, sigpause.3, sigqueue.3, sigset.3, sigsetops.3, sigvec.3, sin.3, sincos.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stdarg.3, stdin.3, stdio.3, stdio_ext.3, stpcpy.3, stpncpy.3, strcasecmp.3, strcat.3, strchr.3, strcmp.3, strcoll.3, strcpy.3, strdup.3, strerror.3, strfmon.3, strfry.3, strftime.3, string.3, strlen.3, strnlen.3, strpbrk.3, strptime.3, strsep.3, strsignal.3, strspn.3, strstr.3, strtod.3, strtoimax.3, strtok.3, strtol.3, strtoul.3, strverscmp.3, strxfrm.3, swab.3, sysconf.3, syslog.3, system.3, sysv_signal.3, tan.3, tanh.3, tcgetpgrp.3, tcgetsid.3, telldir.3, tempnam.3, termios.3, tgamma.3, timegm.3, timeradd.3, tmpfile.3, tmpnam.3, toascii.3, toupper.3, towctrans.3, towlower.3, towupper.3, trunc.3, tsearch.3, ttyname.3, ttyslot.3, tzset.3, ualarm.3, ulimit.3, ungetwc.3, unlocked_stdio.3, unlockpt.3, updwtmp.3, usleep.3, wcpcpy.3, wcpncpy.3, wcrtomb.3, wcscasecmp.3, wcscat.3, wcschr.3, wcscmp.3, wcscpy.3, wcscspn.3, wcsdup.3, wcslen.3, wcsncasecmp.3, wcsncat.3, wcsncmp.3, wcsncpy.3, wcsnlen.3, wcsnrtombs.3, wcspbrk.3, wcsrchr.3, wcsrtombs.3, wcsspn.3, wcsstr.3, wcstoimax.3, wcstok.3, wcstombs.3, wcswidth.3, wctob.3, wctomb.3, wctrans.3, wctype.3, wcwidth.3, wmemchr.3, wmemcmp.3, wmemcpy.3, wmemmove.3, wmemset.3, wordexp.3, wprintf.3, xcrypt.3, xdr.3, y0.3, cciss.4, console.4, console_codes.4, console_ioctl.4, dsp56k.4, fd.4, full.4, hd.4, hpsa.4, initrd.4, intro.4, lp.4, mem.4, mouse.4, null.4, pts.4, ram.4, random.4, rtc.4, sk98lin.4, st.4, tty.4, ttyS.4, tty_ioctl.4, vcs.4, wavelan.4, acct.5, charmap.5, dir_colors.5, filesystems.5, ftpusers.5, group.5, host.conf.5, hosts.5, hosts.equiv.5, intro.5, issue.5, locale.5, motd.5, networks.5, nologin.5, nscd.conf.5, passwd.5, proc.5, protocols.5, resolv.conf.5, rpc.5, securetty.5, services.5, shells.5, termcap.5, ttytype.5, utmp.5, armscii-8.7, arp.7, ascii.7, bootparam.7, capabilities.7, charsets.7, complex.7, cp1251.7, credentials.7, ddp.7, environ.7, epoll.7, fifo.7, futex.7, glob.7, hier.7, icmp.7, inotify.7, intro.7, ip.7, ipv6.7, iso_8859-1.7, iso_8859-10.7, iso_8859-11.7, iso_8859-13.7, iso_8859-14.7, iso_8859-15.7, iso_8859-16.7, iso_8859-2.7, iso_8859-3.7, iso_8859-4.7, iso_8859-5.7, iso_8859-6.7, iso_8859-7.7, iso_8859-8.7, iso_8859-9.7, koi8-r.7, koi8-u.7, locale.7, mailaddr.7, man.7, mq_overview.7, netdevice.7, netlink.7, numa.7, packet.7, path_resolution.7, pipe.7, posixoptions.7, pthreads.7, pty.7, raw.7, regex.7, rtld-audit.7, rtnetlink.7, sem_overview.7, shm_overview.7, sigevent.7, signal.7, socket.7, standards.7, suffixes.7, svipc.7, tcp.7, termio.7, time.7, udp.7, udplite.7, unicode.7, unix.7, uri.7, utf-8.7, x25.7, nscd.8, sync.8, tzselect.8, zdump.8, zic.8: Global fix: remove unneeded double quotes in .SH headings
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2013-02-24 18:01:36 +00:00
|
|
|
.SH SEE ALSO
|
2014-08-25 16:40:57 +00:00
|
|
|
.BR errno (1), \" In the moreutils package
|
2005-12-14 12:09:39 +00:00
|
|
|
.BR err (3),
|
2006-04-28 06:47:38 +00:00
|
|
|
.BR error (3),
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR perror (3),
|
|
|
|
.BR strerror (3)
|