about summary refs log tree commit diff
path: root/manual/errno.texi
diff options
context:
space:
mode:
authorRical Jasan <ricaljasan@pacific.net>2017-06-15 21:12:39 -0700
committerRical Jasan <ricaljasan@pacific.net>2017-06-15 21:26:20 -0700
commitd08a7e4cbe43d5e4e4b14dea950fea623d96c1a1 (patch)
tree6f27987046ae0e8804f4d641c99ff1666652117a /manual/errno.texi
parent27691d5cec9b896ea0792151a27c6d7d7a4065ea (diff)
downloadglibc-d08a7e4cbe43d5e4e4b14dea950fea623d96c1a1.tar.gz
glibc-d08a7e4cbe43d5e4e4b14dea950fea623d96c1a1.tar.xz
glibc-d08a7e4cbe43d5e4e4b14dea950fea623d96c1a1.zip
manual: Replace summary.awk with summary.pl.
The Summary is now generated from @standards, and syntax-checking is
performed.  If invalid @standards syntax is detected, summary.pl will
fail, reporting all errors.  Failure and error reporting is disabled
for now, however, since much of the manual is still incomplete
wrt. header and standards annotations.

Note that the sorting order of the Summary has changed; summary.pl
respects the locale, like summary.awk did, but the use of LC_ALL=C is
introduced in the Makefile.  Other notable deviations are improved
detection of the annotated elements' names, which are used for
sorting, and improved detection of the @node used to reference into
the manual.  The most noticeable difference in the rendered Summary is
that entries may now contain multiple lines, one for each header and
standard combination.

summary.pl accepts a `--help' option, which details the expected
syntax of @standards.  If errors are reported, the user is directed to
this feature for further information.

	* manual/Makefile: Generate summary.texi with summary.pl.
	Force use of the C locale.  Update Perl dependency comment.
	* manual/header.texi: Update reference to summary.awk.
	* manual/macros.texi: Refer authors to `summary.pl --help'.
	* manual/summary.awk: Remove file.
	* manual/summary.pl: New file.  Generate summary.texi, and
	check for @standards-related syntax errors.
	* manual/argp.texi: Convert header and standards @comments to
	@standards.
	* manual/arith.texi: Likewise.
	* manual/charset.texi: Likewise.
	* manual/conf.texi: Likewise.
	* manual/creature.texi: Likewise.
	* manual/crypt.texi: Likewise.
	* manual/ctype.texi: Likewise.
	* manual/debug.texi: Likewise.
	* manual/errno.texi: Likewise.
	* manual/filesys.texi: Likewise.
	* manual/getopt.texi: Likewise.
	* manual/job.texi: Likewise.
	* manual/lang.texi: Likewise.
	* manual/llio.texi: Likewise.
	* manual/locale.texi: Likewise.
	* manual/math.texi: Likewise.
	* manual/memory.texi: Likewise.
	* manual/message.texi: Likewise.
	* manual/pattern.texi: Likewise.
	* manual/pipe.texi: Likewise.
	* manual/process.texi: Likewise.
	* manual/resource.texi: Likewise.
	* manual/search.texi: Likewise.
	* manual/setjmp.texi: Likewise.
	* manual/signal.texi: Likewise.
	* manual/socket.texi: Likewise.
	* manual/startup.texi: Likewise.
	* manual/stdio.texi: Likewise.
	* manual/string.texi: Likewise.
	* manual/sysinfo.texi: Likewise.
	* manual/syslog.texi: Likewise.
	* manual/terminal.texi: Likewise.
	* manual/threads.texi: Likewise.
	* manual/time.texi: Likewise.
	* manual/users.texi: Likewise.
Diffstat (limited to 'manual/errno.texi')
-rw-r--r--manual/errno.texi504
1 files changed, 168 insertions, 336 deletions
diff --git a/manual/errno.texi b/manual/errno.texi
index f4c07f0683..3e0b862c4e 100644
--- a/manual/errno.texi
+++ b/manual/errno.texi
@@ -36,9 +36,8 @@ variable @code{errno}.  This variable is declared in the header file
 @file{errno.h}.
 @pindex errno.h
 
-@comment errno.h
-@comment ISO
 @deftypevr {Variable} {volatile int} errno
+@standards{ISO, errno.h}
 The variable @code{errno} contains the system error number.  You can
 change the value of @code{errno}.
 
@@ -118,33 +117,29 @@ All of them expand into integer constant values.  Some of these error
 codes can't occur on @gnusystems{}, but they can occur using @theglibc{}
 on other systems.
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EPERM
+@standards{POSIX.1, errno.h}
 @errno{EPERM, 1, Operation not permitted}
 Only the owner of the file (or other resource)
 or processes with special privileges can perform the operation.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOENT
+@standards{POSIX.1, errno.h}
 @errno{ENOENT, 2, No such file or directory}
 This is a ``file doesn't exist'' error
 for ordinary files that are referenced in contexts where they are
 expected to already exist.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ESRCH
+@standards{POSIX.1, errno.h}
 @errno{ESRCH, 3, No such process}
 No process matches the specified process ID.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EINTR
+@standards{POSIX.1, errno.h}
 @errno{EINTR, 4, Interrupted system call}
 An asynchronous signal occurred and prevented
 completion of the call.  When this happens, you should try the call
@@ -155,16 +150,14 @@ rather than failing with @code{EINTR}; see @ref{Interrupted
 Primitives}.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EIO
+@standards{POSIX.1, errno.h}
 @errno{EIO, 5, Input/output error}
 Usually used for physical read or write errors.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENXIO
+@standards{POSIX.1, errno.h}
 @errno{ENXIO, 6, No such device or address}
 The system tried to use the device
 represented by a file you specified, and it couldn't find the device.
@@ -173,9 +166,8 @@ the physical device is missing or not correctly attached to the
 computer.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int E2BIG
+@standards{POSIX.1, errno.h}
 @errno{E2BIG, 7, Argument list too long}
 Used when the arguments passed to a new program
 being executed with one of the @code{exec} functions (@pxref{Executing a
@@ -183,35 +175,31 @@ File}) occupy too much memory space.  This condition never arises on
 @gnuhurdsystems{}.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOEXEC
+@standards{POSIX.1, errno.h}
 @errno{ENOEXEC, 8, Exec format error}
 Invalid executable file format.  This condition is detected by the
 @code{exec} functions; see @ref{Executing a File}.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EBADF
+@standards{POSIX.1, errno.h}
 @errno{EBADF, 9, Bad file descriptor}
 For example, I/O on a descriptor that has been
 closed or reading from a descriptor open only for writing (or vice
 versa).
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ECHILD
+@standards{POSIX.1, errno.h}
 @errno{ECHILD, 10, No child processes}
 This error happens on operations that are
 supposed to manipulate child processes, when there aren't any processes
 to manipulate.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EDEADLK
+@standards{POSIX.1, errno.h}
 @errno{EDEADLK, 11, Resource deadlock avoided}
 Allocating a system resource would have resulted in a
 deadlock situation.  The system does not guarantee that it will notice
@@ -219,98 +207,86 @@ all such situations.  This error means you got lucky and the system
 noticed; it might just hang.  @xref{File Locks}, for an example.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOMEM
+@standards{POSIX.1, errno.h}
 @errno{ENOMEM, 12, Cannot allocate memory}
 The system cannot allocate more virtual memory
 because its capacity is full.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EACCES
+@standards{POSIX.1, errno.h}
 @errno{EACCES, 13, Permission denied}
 The file permissions do not allow the attempted operation.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EFAULT
+@standards{POSIX.1, errno.h}
 @errno{EFAULT, 14, Bad address}
 An invalid pointer was detected.
 On @gnuhurdsystems{}, this error never happens; you get a signal instead.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENOTBLK
+@standards{BSD, errno.h}
 @errno{ENOTBLK, 15, Block device required}
 A file that isn't a block special file was given in a situation that
 requires one.  For example, trying to mount an ordinary file as a file
 system in Unix gives this error.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EBUSY
+@standards{POSIX.1, errno.h}
 @errno{EBUSY, 16, Device or resource busy}
 A system resource that can't be shared is already in use.
 For example, if you try to delete a file that is the root of a currently
 mounted filesystem, you get this error.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EEXIST
+@standards{POSIX.1, errno.h}
 @errno{EEXIST, 17, File exists}
 An existing file was specified in a context where it only
 makes sense to specify a new file.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EXDEV
+@standards{POSIX.1, errno.h}
 @errno{EXDEV, 18, Invalid cross-device link}
 An attempt to make an improper link across file systems was detected.
 This happens not only when you use @code{link} (@pxref{Hard Links}) but
 also when you rename a file with @code{rename} (@pxref{Renaming Files}).
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENODEV
+@standards{POSIX.1, errno.h}
 @errno{ENODEV, 19, No such device}
 The wrong type of device was given to a function that expects a
 particular sort of device.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOTDIR
+@standards{POSIX.1, errno.h}
 @errno{ENOTDIR, 20, Not a directory}
 A file that isn't a directory was specified when a directory is required.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EISDIR
+@standards{POSIX.1, errno.h}
 @errno{EISDIR, 21, Is a directory}
 You cannot open a directory for writing,
 or create or remove hard links to it.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EINVAL
+@standards{POSIX.1, errno.h}
 @errno{EINVAL, 22, Invalid argument}
 This is used to indicate various kinds of problems
 with passing the wrong argument to a library function.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EMFILE
+@standards{POSIX.1, errno.h}
 @errno{EMFILE, 24, Too many open files}
 The current process has too many files open and can't open any more.
 Duplicate descriptors do count toward this limit.
@@ -321,26 +297,23 @@ want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
 @pxref{Limits on Resources}.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENFILE
+@standards{POSIX.1, errno.h}
 @errno{ENFILE, 23, Too many open files in system}
 There are too many distinct file openings in the entire system.  Note
 that any number of linked channels count as just one file opening; see
 @ref{Linked Channels}.  This error never occurs on @gnuhurdsystems{}.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOTTY
+@standards{POSIX.1, errno.h}
 @errno{ENOTTY, 25, Inappropriate ioctl for device}
 Inappropriate I/O control operation, such as trying to set terminal
 modes on an ordinary file.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ETXTBSY
+@standards{BSD, errno.h}
 @errno{ETXTBSY, 26, Text file busy}
 An attempt to execute a file that is currently open for writing, or
 write to a file that is currently being executed.  Often using a
@@ -349,47 +322,41 @@ will cause this error.  (The name stands for ``text file busy''.)  This
 is not an error on @gnuhurdsystems{}; the text is copied as necessary.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EFBIG
+@standards{POSIX.1, errno.h}
 @errno{EFBIG, 27, File too large}
 The size of a file would be larger than allowed by the system.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOSPC
+@standards{POSIX.1, errno.h}
 @errno{ENOSPC, 28, No space left on device}
 Write operation on a file failed because the
 disk is full.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ESPIPE
+@standards{POSIX.1, errno.h}
 @errno{ESPIPE, 29, Illegal seek}
 Invalid seek operation (such as on a pipe).
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EROFS
+@standards{POSIX.1, errno.h}
 @errno{EROFS, 30, Read-only file system}
 An attempt was made to modify something on a read-only file system.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EMLINK
+@standards{POSIX.1, errno.h}
 @errno{EMLINK, 31, Too many links}
 The link count of a single file would become too large.
 @code{rename} can cause this error if the file being renamed already has
 as many links as it can take (@pxref{Renaming Files}).
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EPIPE
+@standards{POSIX.1, errno.h}
 @errno{EPIPE, 32, Broken pipe}
 There is no process reading from the other end of a pipe.
 Every library function that returns this error code also generates a
@@ -398,25 +365,22 @@ or blocked.  Thus, your program will never actually see @code{EPIPE}
 unless it has handled or blocked @code{SIGPIPE}.
 @end deftypevr
 
-@comment errno.h
-@comment ISO
 @deftypevr Macro int EDOM
+@standards{ISO, errno.h}
 @errno{EDOM, 33, Numerical argument out of domain}
 Used by mathematical functions when an argument value does
 not fall into the domain over which the function is defined.
 @end deftypevr
 
-@comment errno.h
-@comment ISO
 @deftypevr Macro int ERANGE
+@standards{ISO, errno.h}
 @errno{ERANGE, 34, Numerical result out of range}
 Used by mathematical functions when the result value is
 not representable because of overflow or underflow.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int EAGAIN
+@standards{POSIX.1, errno.h}
 @errno{EAGAIN, 35, Resource temporarily unavailable}
 The call might work if you try again
 later.  The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
@@ -449,9 +413,8 @@ and return to its command loop.
 @end itemize
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EWOULDBLOCK
+@standards{BSD, errno.h}
 @errno{EWOULDBLOCK, EAGAIN, Operation would block}
 In @theglibc{}, this is another name for @code{EAGAIN} (above).
 The values are always the same, on every operating system.
@@ -460,9 +423,8 @@ C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
 separate error code.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EINPROGRESS
+@standards{BSD, errno.h}
 @errno{EINPROGRESS, 36, Operation now in progress}
 An operation that cannot complete immediately was initiated on an object
 that has non-blocking mode selected.  Some functions that must always
@@ -474,63 +436,55 @@ use the @code{select} function to find out when the pending operation
 has completed; @pxref{Waiting for I/O}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EALREADY
+@standards{BSD, errno.h}
 @errno{EALREADY, 37, Operation already in progress}
 An operation is already in progress on an object that has non-blocking
 mode selected.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENOTSOCK
+@standards{BSD, errno.h}
 @errno{ENOTSOCK, 38, Socket operation on non-socket}
 A file that isn't a socket was specified when a socket is required.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EMSGSIZE
+@standards{BSD, errno.h}
 @errno{EMSGSIZE, 40, Message too long}
 The size of a message sent on a socket was larger than the supported
 maximum size.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPROTOTYPE
+@standards{BSD, errno.h}
 @errno{EPROTOTYPE, 41, Protocol wrong type for socket}
 The socket type does not support the requested communications protocol.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENOPROTOOPT
+@standards{BSD, errno.h}
 @errno{ENOPROTOOPT, 42, Protocol not available}
 You specified a socket option that doesn't make sense for the
 particular protocol being used by the socket.  @xref{Socket Options}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPROTONOSUPPORT
+@standards{BSD, errno.h}
 @errno{EPROTONOSUPPORT, 43, Protocol not supported}
 The socket domain does not support the requested communications protocol
 (perhaps because the requested protocol is completely invalid).
 @xref{Creating a Socket}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ESOCKTNOSUPPORT
+@standards{BSD, errno.h}
 @errno{ESOCKTNOSUPPORT, 44, Socket type not supported}
 The socket type is not supported.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EOPNOTSUPP
+@standards{BSD, errno.h}
 @errno{EOPNOTSUPP, 45, Operation not supported}
 The operation you requested is not supported.  Some socket functions
 don't make sense for all types of sockets, and others may not be
@@ -540,95 +494,83 @@ particular operation; it is a generic indication that the server knows
 nothing to do for that call.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPFNOSUPPORT
+@standards{BSD, errno.h}
 @errno{EPFNOSUPPORT, 46, Protocol family not supported}
 The socket communications protocol family you requested is not supported.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EAFNOSUPPORT
+@standards{BSD, errno.h}
 @errno{EAFNOSUPPORT, 47, Address family not supported by protocol}
 The address family specified for a socket is not supported; it is
 inconsistent with the protocol being used on the socket.  @xref{Sockets}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EADDRINUSE
+@standards{BSD, errno.h}
 @errno{EADDRINUSE, 48, Address already in use}
 The requested socket address is already in use.  @xref{Socket Addresses}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EADDRNOTAVAIL
+@standards{BSD, errno.h}
 @errno{EADDRNOTAVAIL, 49, Cannot assign requested address}
 The requested socket address is not available; for example, you tried
 to give a socket a name that doesn't match the local host name.
 @xref{Socket Addresses}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENETDOWN
+@standards{BSD, errno.h}
 @errno{ENETDOWN, 50, Network is down}
 A socket operation failed because the network was down.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENETUNREACH
+@standards{BSD, errno.h}
 @errno{ENETUNREACH, 51, Network is unreachable}
 A socket operation failed because the subnet containing the remote host
 was unreachable.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENETRESET
+@standards{BSD, errno.h}
 @errno{ENETRESET, 52, Network dropped connection on reset}
 A network connection was reset because the remote host crashed.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ECONNABORTED
+@standards{BSD, errno.h}
 @errno{ECONNABORTED, 53, Software caused connection abort}
 A network connection was aborted locally.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ECONNRESET
+@standards{BSD, errno.h}
 @errno{ECONNRESET, 54, Connection reset by peer}
 A network connection was closed for reasons outside the control of the
 local host, such as by the remote machine rebooting or an unrecoverable
 protocol violation.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENOBUFS
+@standards{BSD, errno.h}
 @errno{ENOBUFS, 55, No buffer space available}
 The kernel's buffers for I/O operations are all in use.  In GNU, this
 error is always synonymous with @code{ENOMEM}; you may get one or the
 other from network operations.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EISCONN
+@standards{BSD, errno.h}
 @errno{EISCONN, 56, Transport endpoint is already connected}
 You tried to connect a socket that is already connected.
 @xref{Connecting}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENOTCONN
+@standards{BSD, errno.h}
 @errno{ENOTCONN, 57, Transport endpoint is not connected}
 The socket is not connected to anything.  You get this error when you
 try to transmit data over a socket, without first specifying a
@@ -636,110 +578,96 @@ destination for the data.  For a connectionless socket (for datagram
 protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EDESTADDRREQ
+@standards{BSD, errno.h}
 @errno{EDESTADDRREQ, 39, Destination address required}
 No default destination address was set for the socket.  You get this
 error when you try to transmit data over a connectionless socket,
 without first specifying a destination for the data with @code{connect}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ESHUTDOWN
+@standards{BSD, errno.h}
 @errno{ESHUTDOWN, 58, Cannot send after transport endpoint shutdown}
 The socket has already been shut down.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ETOOMANYREFS
+@standards{BSD, errno.h}
 @errno{ETOOMANYREFS, 59, Too many references: cannot splice}
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ETIMEDOUT
+@standards{BSD, errno.h}
 @errno{ETIMEDOUT, 60, Connection timed out}
 A socket operation with a specified timeout received no response during
 the timeout period.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ECONNREFUSED
+@standards{BSD, errno.h}
 @errno{ECONNREFUSED, 61, Connection refused}
 A remote host refused to allow the network connection (typically because
 it is not running the requested service).
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ELOOP
+@standards{BSD, errno.h}
 @errno{ELOOP, 62, Too many levels of symbolic links}
 Too many levels of symbolic links were encountered in looking up a file name.
 This often indicates a cycle of symbolic links.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENAMETOOLONG
+@standards{POSIX.1, errno.h}
 @errno{ENAMETOOLONG, 63, File name too long}
 Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
 Files}) or host name too long (in @code{gethostname} or
 @code{sethostname}; @pxref{Host Identification}).
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EHOSTDOWN
+@standards{BSD, errno.h}
 @errno{EHOSTDOWN, 64, Host is down}
 The remote host for a requested network connection is down.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EHOSTUNREACH
+@standards{BSD, errno.h}
 @errno{EHOSTUNREACH, 65, No route to host}
 The remote host for a requested network connection is not reachable.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOTEMPTY
+@standards{POSIX.1, errno.h}
 @errno{ENOTEMPTY, 66, Directory not empty}
 Directory not empty, where an empty directory was expected.  Typically,
 this error occurs when you are trying to delete a directory.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPROCLIM
+@standards{BSD, errno.h}
 @errno{EPROCLIM, 67, Too many processes}
 This means that the per-user limit on new process would be exceeded by
 an attempted @code{fork}.  @xref{Limits on Resources}, for details on
 the @code{RLIMIT_NPROC} limit.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EUSERS
+@standards{BSD, errno.h}
 @errno{EUSERS, 68, Too many users}
 The file quota system is confused because there are too many users.
 @c This can probably happen in a GNU system when using NFS.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EDQUOT
+@standards{BSD, errno.h}
 @errno{EDQUOT, 69, Disk quota exceeded}
 The user's disk quota was exceeded.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ESTALE
+@standards{BSD, errno.h}
 @errno{ESTALE, 70, Stale file handle}
 This indicates an internal confusion in the
 file system which is due to file system rearrangements on the server host
@@ -748,9 +676,8 @@ Repairing this condition usually requires unmounting, possibly repairing
 and remounting the file system.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EREMOTE
+@standards{BSD, errno.h}
 @errno{EREMOTE, 71, Object is remote}
 An attempt was made to NFS-mount a remote file system with a file name that
 already specifies an NFS-mounted file.
@@ -758,39 +685,33 @@ already specifies an NFS-mounted file.
 properly on @gnuhurdsystems{}, making this error code impossible.)
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EBADRPC
+@standards{BSD, errno.h}
 @errno{EBADRPC, 72, RPC struct is bad}
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ERPCMISMATCH
+@standards{BSD, errno.h}
 @errno{ERPCMISMATCH, 73, RPC version wrong}
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPROGUNAVAIL
+@standards{BSD, errno.h}
 @errno{EPROGUNAVAIL, 74, RPC program not available}
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPROGMISMATCH
+@standards{BSD, errno.h}
 @errno{EPROGMISMATCH, 75, RPC program version wrong}
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EPROCUNAVAIL
+@standards{BSD, errno.h}
 @errno{EPROCUNAVAIL, 76, RPC bad procedure for program}
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOLCK
+@standards{POSIX.1, errno.h}
 @errno{ENOLCK, 77, No locks available}
 This is used by the file locking facilities; see
 @ref{File Locks}.  This error is never generated by @gnuhurdsystems{}, but
@@ -798,9 +719,8 @@ it can result from an operation to an NFS server running another
 operating system.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EFTYPE
+@standards{BSD, errno.h}
 @errno{EFTYPE, 79, Inappropriate file type or format}
 The file was the wrong type for the
 operation, or a data file had the wrong format.
@@ -809,21 +729,18 @@ On some systems @code{chmod} returns this error if you try to set the
 sticky bit on a non-directory file; @pxref{Setting Permissions}.
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int EAUTH
+@standards{BSD, errno.h}
 @errno{EAUTH, 80, Authentication error}
 @end deftypevr
 
-@comment errno.h
-@comment BSD
 @deftypevr Macro int ENEEDAUTH
+@standards{BSD, errno.h}
 @errno{ENEEDAUTH, 81, Need authenticator}
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOSYS
+@standards{POSIX.1, errno.h}
 @errno{ENOSYS, 78, Function not implemented}
 This indicates that the function called is
 not implemented at all, either in the C library itself or in the
@@ -832,9 +749,8 @@ particular function will always fail with @code{ENOSYS} unless you
 install a new version of the C library or the operating system.
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ENOTSUP
+@standards{POSIX.1, errno.h}
 @errno{ENOTSUP, 118, Not supported}
 A function returns this error when certain parameter
 values are valid, but the functionality they request is not available.
@@ -850,17 +766,15 @@ If the entire function is not available at all in the implementation,
 it returns @code{ENOSYS} instead.
 @end deftypevr
 
-@comment errno.h
-@comment ISO
 @deftypevr Macro int EILSEQ
+@standards{ISO, errno.h}
 @errno{EILSEQ, 106, Invalid or incomplete multibyte or wide character}
 While decoding a multibyte character the function came along an invalid
 or an incomplete sequence of bytes or the given wide character is invalid.
 @end deftypevr
 
-@comment errno.h
-@comment GNU
 @deftypevr Macro int EBACKGROUND
+@standards{GNU, errno.h}
 @errno{EBACKGROUND, 100, Inappropriate operation for background process}
 On @gnuhurdsystems{}, servers supporting the @code{term} protocol return
 this error for certain operations when the caller is not in the
@@ -870,114 +784,97 @@ it into a @code{SIGTTIN} or @code{SIGTTOU} signal.  @xref{Job Control},
 for information on process groups and these signals.
 @end deftypevr
 
-@comment errno.h
-@comment GNU
 @deftypevr Macro int EDIED
+@standards{GNU, errno.h}
 @errno{EDIED, 101, Translator died}
 On @gnuhurdsystems{}, opening a file returns this error when the file is
 translated by a program and the translator program dies while starting
 up, before it has connected to the file.
 @end deftypevr
 
-@comment errno.h
-@comment GNU
 @deftypevr Macro int ED
+@standards{GNU, errno.h}
 @errno{ED, 102, ?}
 The experienced user will know what is wrong.
 @c This error code is a joke.  Its perror text is part of the joke.
 @c Don't change it.
 @end deftypevr
 
-@comment errno.h
-@comment GNU
 @deftypevr Macro int EGREGIOUS
+@standards{GNU, errno.h}
 @errno{EGREGIOUS, 103, You really blew it this time}
 You did @strong{what}?
 @end deftypevr
 
-@comment errno.h
-@comment GNU
 @deftypevr Macro int EIEIO
+@standards{GNU, errno.h}
 @errno{EIEIO, 104, Computer bought the farm}
 Go home and have a glass of warm, dairy-fresh milk.
 @end deftypevr
 
-@comment errno.h
-@comment GNU
 @deftypevr Macro int EGRATUITOUS
+@standards{GNU, errno.h}
 @errno{EGRATUITOUS, 105, Gratuitous error}
 This error code has no purpose.
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int EBADMSG
+@standards{XOPEN, errno.h}
 @errno{EBADMSG, 107, Bad message}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int EIDRM
+@standards{XOPEN, errno.h}
 @errno{EIDRM, 108, Identifier removed}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int EMULTIHOP
+@standards{XOPEN, errno.h}
 @errno{EMULTIHOP, 109, Multihop attempted}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int ENODATA
+@standards{XOPEN, errno.h}
 @errno{ENODATA, 110, No data available}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int ENOLINK
+@standards{XOPEN, errno.h}
 @errno{ENOLINK, 111, Link has been severed}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int ENOMSG
+@standards{XOPEN, errno.h}
 @errno{ENOMSG, 112, No message of desired type}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int ENOSR
+@standards{XOPEN, errno.h}
 @errno{ENOSR, 113, Out of streams resources}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int ENOSTR
+@standards{XOPEN, errno.h}
 @errno{ENOSTR, 114, Device not a stream}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int EOVERFLOW
+@standards{XOPEN, errno.h}
 @errno{EOVERFLOW, 115, Value too large for defined data type}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int EPROTO
+@standards{XOPEN, errno.h}
 @errno{EPROTO, 116, Protocol error}
 @end deftypevr
 
-@comment errno.h
-@comment XOPEN
 @deftypevr Macro int ETIME
+@standards{XOPEN, errno.h}
 @errno{ETIME, 117, Timer expired}
 @end deftypevr
 
-@comment errno.h
-@comment POSIX.1
 @deftypevr Macro int ECANCELED
+@standards{POSIX.1, errno.h}
 @errno{ECANCELED, 119, Operation canceled}
 An asynchronous operation was canceled before it
 completed.  @xref{Asynchronous I/O}.  When you call @code{aio_cancel},
@@ -989,285 +886,238 @@ error; @pxref{Cancel AIO Operations}.
 @emph{The following error codes are defined by the Linux/i386 kernel.
 They are not yet documented.}
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ERESTART
+@standards{Linux???, errno.h}
 @errno{ERESTART, ???/85, Interrupted system call should be restarted}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ECHRNG
+@standards{Linux???, errno.h}
 @errno{ECHRNG, ???/44, Channel number out of range}
 @end deftypevr
 
-@comment errno.h
-@comment Obsolete
 @deftypevr Macro int EL2NSYNC
+@standards{Obsolete, errno.h}
 @errno{EL2NSYNC, ???/45, Level 2 not synchronized}
 @end deftypevr
 
-@comment errno.h
-@comment Obsolete
 @deftypevr Macro int EL3HLT
+@standards{Obsolete, errno.h}
 @errno{EL3HLT, ???/46, Level 3 halted}
 @end deftypevr
 
-@comment errno.h
-@comment Obsolete
 @deftypevr Macro int EL3RST
+@standards{Obsolete, errno.h}
 @errno{EL3RST, ???/47, Level 3 reset}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ELNRNG
+@standards{Linux???, errno.h}
 @errno{ELNRNG, ???/48, Link number out of range}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EUNATCH
+@standards{Linux???, errno.h}
 @errno{EUNATCH, ???/49, Protocol driver not attached}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENOCSI
+@standards{Linux???, errno.h}
 @errno{ENOCSI, ???/50, No CSI structure available}
 @end deftypevr
 
-@comment errno.h
-@comment Obsolete
 @deftypevr Macro int EL2HLT
+@standards{Obsolete, errno.h}
 @errno{EL2HLT, ???/51, Level 2 halted}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EBADE
+@standards{Linux???, errno.h}
 @errno{EBADE, ???/52, Invalid exchange}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EBADR
+@standards{Linux???, errno.h}
 @errno{EBADR, ???/53, Invalid request descriptor}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EXFULL
+@standards{Linux???, errno.h}
 @errno{EXFULL, ???/54, Exchange full}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENOANO
+@standards{Linux???, errno.h}
 @errno{ENOANO, ???/55, No anode}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EBADRQC
+@standards{Linux???, errno.h}
 @errno{EBADRQC, ???/56, Invalid request code}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EBADSLT
+@standards{Linux???, errno.h}
 @errno{EBADSLT, ???/57, Invalid slot}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EDEADLOCK
+@standards{Linux???, errno.h}
 @errno{EDEADLOCK, ???/58, File locking deadlock error}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EBFONT
+@standards{Linux???, errno.h}
 @errno{EBFONT, ???/59, Bad font file format}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENONET
+@standards{Linux???, errno.h}
 @errno{ENONET, ???/64, Machine is not on the network}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENOPKG
+@standards{Linux???, errno.h}
 @errno{ENOPKG, ???/65, Package not installed}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EADV
+@standards{Linux???, errno.h}
 @errno{EADV, ???/68, Advertise error}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ESRMNT
+@standards{Linux???, errno.h}
 @errno{ESRMNT, ???/69, Srmount error}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ECOMM
+@standards{Linux???, errno.h}
 @errno{ECOMM, ???/70, Communication error on send}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EDOTDOT
+@standards{Linux???, errno.h}
 @errno{EDOTDOT, ???/73, RFS specific error}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENOTUNIQ
+@standards{Linux???, errno.h}
 @errno{ENOTUNIQ, ???/76, Name not unique on network}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EBADFD
+@standards{Linux???, errno.h}
 @errno{EBADFD, ???/77, File descriptor in bad state}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EREMCHG
+@standards{Linux???, errno.h}
 @errno{EREMCHG, ???/78, Remote address changed}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ELIBACC
+@standards{Linux???, errno.h}
 @errno{ELIBACC, ???/79, Can not access a needed shared library}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ELIBBAD
+@standards{Linux???, errno.h}
 @errno{ELIBBAD, ???/80, Accessing a corrupted shared library}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ELIBSCN
+@standards{Linux???, errno.h}
 @errno{ELIBSCN, ???/81, .lib section in a.out corrupted}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ELIBMAX
+@standards{Linux???, errno.h}
 @errno{ELIBMAX, ???/82, Attempting to link in too many shared libraries}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ELIBEXEC
+@standards{Linux???, errno.h}
 @errno{ELIBEXEC, ???/83, Cannot exec a shared library directly}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ESTRPIPE
+@standards{Linux???, errno.h}
 @errno{ESTRPIPE, ???/86, Streams pipe error}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EUCLEAN
+@standards{Linux???, errno.h}
 @errno{EUCLEAN, ???/117, Structure needs cleaning}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENOTNAM
+@standards{Linux???, errno.h}
 @errno{ENOTNAM, ???/118, Not a XENIX named type file}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENAVAIL
+@standards{Linux???, errno.h}
 @errno{ENAVAIL, ???/119, No XENIX semaphores available}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EISNAM
+@standards{Linux???, errno.h}
 @errno{EISNAM, ???/120, Is a named type file}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EREMOTEIO
+@standards{Linux???, errno.h}
 @errno{EREMOTEIO, ???/121, Remote I/O error}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int ENOMEDIUM
+@standards{Linux???, errno.h}
 @errno{ENOMEDIUM, ???/???, No medium found}
 @end deftypevr
 
-@comment errno.h
-@comment Linux???
 @deftypevr Macro int EMEDIUMTYPE
+@standards{Linux???, errno.h}
 @errno{EMEDIUMTYPE, ???/???, Wrong medium type}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int ENOKEY
+@standards{Linux, errno.h}
 @errno{ENOKEY, ???/???, Required key not available}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int EKEYEXPIRED
+@standards{Linux, errno.h}
 @errno{EKEYEXPIRED, ???/???, Key has expired}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int EKEYREVOKED
+@standards{Linux, errno.h}
 @errno{EKEYREVOKED, ???/???, Key has been revoked}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int EKEYREJECTED
+@standards{Linux, errno.h}
 @errno{EKEYREJECTED, ???/???, Key was rejected by service}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int EOWNERDEAD
+@standards{Linux, errno.h}
 @errno{EOWNERDEAD, ???/???, Owner died}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int ENOTRECOVERABLE
+@standards{Linux, errno.h}
 @errno{ENOTRECOVERABLE, ???/???, State not recoverable}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int ERFKILL
+@standards{Linux, errno.h}
 @errno{ERFKILL, ???/???, Operation not possible due to RF-kill}
 @end deftypevr
 
-@comment errno.h
-@comment Linux
 @deftypevr Macro int EHWPOISON
+@standards{Linux, errno.h}
 @errno{EHWPOISON, ???/???, Memory page has hardware error}
 @end deftypevr
 
@@ -1282,9 +1132,8 @@ for a given error code; the variable
 @w{@code{program_invocation_short_name}} gives you convenient access to the
 name of the program that encountered the error.
 
-@comment string.h
-@comment ISO
 @deftypefun {char *} strerror (int @var{errnum})
+@standards{ISO, string.h}
 @safety{@prelim{}@mtunsafe{@mtasurace{:strerror}}@asunsafe{@ascuheap{} @ascuintl{}}@acunsafe{@acsmem{}}}
 @c Calls strerror_r with a static buffer allocated with malloc on the
 @c first use.
@@ -1302,9 +1151,8 @@ overwritten.  (But it's guaranteed that no library function ever calls
 The function @code{strerror} is declared in @file{string.h}.
 @end deftypefun
 
-@comment string.h
-@comment GNU
 @deftypefun {char *} strerror_r (int @var{errnum}, char *@var{buf}, size_t @var{n})
+@standards{GNU, string.h}
 @safety{@prelim{}@mtsafe{}@asunsafe{@ascuintl{}}@acunsafe{}}
 The @code{strerror_r} function works like @code{strerror} but instead of
 returning the error message in a statically allocated buffer shared by
@@ -1324,9 +1172,8 @@ The function @code{strerror_r} is a GNU extension and it is declared in
 @file{string.h}.
 @end deftypefun
 
-@comment stdio.h
-@comment ISO
 @deftypefun void perror (const char *@var{message})
+@standards{ISO, stdio.h}
 @safety{@prelim{}@mtsafe{@mtasurace{:stderr}}@asunsafe{@asucorrupt{} @ascuintl{} @ascuheap{} @asulock{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{} @acsfd{}}}
 @c Besides strerror_r's and some of fprintf's issues, if stderr is not
 @c oriented yet, create a new stream with a dup of stderr's fd and write
@@ -1362,9 +1209,8 @@ You can find that name in the variable
 @code{program_invocation_short_name}; the full file name is stored the
 variable @code{program_invocation_name}.
 
-@comment errno.h
-@comment GNU
 @deftypevar {char *} program_invocation_name
+@standards{GNU, errno.h}
 This variable's value is the name that was used to invoke the program
 running in the current process.  It is the same as @code{argv[0]}.  Note
 that this is not necessarily a useful file name; often it contains no
@@ -1373,9 +1219,8 @@ directory names.  @xref{Program Arguments}.
 This variable is a GNU extension and is declared in @file{errno.h}.
 @end deftypevar
 
-@comment errno.h
-@comment GNU
 @deftypevar {char *} program_invocation_short_name
+@standards{GNU, errno.h}
 This variable's value is the name that was used to invoke the program
 running in the current process, with directory names removed.  (That is
 to say, it is the same as @code{program_invocation_name} minus
@@ -1442,9 +1287,8 @@ encountered while reading the file.  For these occasions there are two
 functions available which are widely used throughout the GNU project.
 These functions are declared in @file{error.h}.
 
-@comment error.h
-@comment GNU
 @deftypefun void error (int @var{status}, int @var{errnum}, const char *@var{format}, @dots{})
+@standards{GNU, error.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @asuheap{} @asuintl{}}@acsafe{}}
 @c Cancellation is disabled throughout the execution.  It flushes stdout
 @c and then holds a lock on stderr while printing the program name and
@@ -1484,9 +1328,8 @@ the @var{status} value for its parameter and therefore never return.  If
 incremented by one to keep track of the number of errors reported.
 @end deftypefun
 
-@comment error.h
-@comment GNU
 @deftypefun void error_at_line (int @var{status}, int @var{errnum}, const char *@var{fname}, unsigned int @var{lineno}, const char *@var{format}, @dots{})
+@standards{GNU, error.h}
 @safety{@prelim{}@mtunsafe{@mtasurace{:error_at_line/error_one_per_line} @mtslocale{}}@asunsafe{@asucorrupt{} @asuheap{} @asuintl{}}@acunsafe{@acucorrupt{/error_one_per_line}}}
 @c The error_one_per_line variable is accessed (without any form of
 @c synchronization, but since it's an int used once, it should be safe
@@ -1525,9 +1368,8 @@ As mentioned above, the @code{error} and @code{error_at_line} functions
 can be customized by defining a variable named
 @code{error_print_progname}.
 
-@comment error.h
-@comment GNU
 @deftypevar {void (*error_print_progname)} (void)
+@standards{GNU, error.h}
 If the @code{error_print_progname} variable is defined to a non-zero
 value the function pointed to is called by @code{error} or
 @code{error_at_line}.  It is expected to print the program name or do
@@ -1539,17 +1381,15 @@ must be able to handle whatever orientation the stream has.
 The variable is global and shared by all threads.
 @end deftypevar
 
-@comment error.h
-@comment GNU
 @deftypevar {unsigned int} error_message_count
+@standards{GNU, error.h}
 The @code{error_message_count} variable is incremented whenever one of
 the functions @code{error} or @code{error_at_line} returns.  The
 variable is global and shared by all threads.
 @end deftypevar
 
-@comment error.h
-@comment GNU
 @deftypevar int error_one_per_line
+@standards{GNU, error.h}
 The @code{error_one_per_line} variable influences only
 @code{error_at_line}.  Normally the @code{error_at_line} function
 creates output for every invocation.  If @code{error_one_per_line} is
@@ -1598,9 +1438,8 @@ are used in BSD for the same purpose.  These functions are declared in
 @file{err.h}.  It is generally advised to not use these functions.  They
 are included only for compatibility.
 
-@comment err.h
-@comment BSD
 @deftypefun void warn (const char *@var{format}, @dots{})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Just calls vwarn with the va_list.
 The @code{warn} function is roughly equivalent to a call like
@@ -1612,9 +1451,8 @@ except that the global variables @code{error} respects and modifies
 are not used.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void vwarn (const char *@var{format}, va_list @var{ap})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c While holding stderr's recursive lock, it prints the programname, the
 @c given message, and the error string with fw?printf's %m.  When the
@@ -1625,9 +1463,8 @@ parameters for the handling of the format string @var{format} are passed
 in as a value of type @code{va_list}.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void warnx (const char *@var{format}, @dots{})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Same as warn, but without the strerror translation issues.
 The @code{warnx} function is roughly equivalent to a call like
@@ -1640,9 +1477,8 @@ are not used.  The difference to @code{warn} is that no error number
 string is printed.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void vwarnx (const char *@var{format}, va_list @var{ap})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Same as vwarn, but without the strerror translation issues.
 The @code{vwarnx} function is just like @code{warnx} except that the
@@ -1650,9 +1486,8 @@ parameters for the handling of the format string @var{format} are passed
 in as a value of type @code{va_list}.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void err (int @var{status}, const char *@var{format}, @dots{})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Same as warn followed by exit.
 The @code{err} function is roughly equivalent to a call like
@@ -1664,9 +1499,8 @@ except that the global variables @code{error} respects and modifies
 are not used and that the program is exited even if @var{status} is zero.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void verr (int @var{status}, const char *@var{format}, va_list @var{ap})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Same as vwarn followed by exit.
 The @code{verr} function is just like @code{err} except that the
@@ -1674,9 +1508,8 @@ parameters for the handling of the format string @var{format} are passed
 in as a value of type @code{va_list}.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void errx (int @var{status}, const char *@var{format}, @dots{})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Same as warnx followed by exit.
 The @code{errx} function is roughly equivalent to a call like
@@ -1690,9 +1523,8 @@ is zero.  The difference to @code{err} is that no error number
 string is printed.
 @end deftypefun
 
-@comment err.h
-@comment BSD
 @deftypefun void verrx (int @var{status}, const char *@var{format}, va_list @var{ap})
+@standards{BSD, err.h}
 @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}}
 @c Same as vwarnx followed by exit.
 The @code{verrx} function is just like @code{errx} except that the