aboutsummaryrefslogtreecommitdiff
path: root/manual/socket.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/socket.texi
parent27691d5cec9b896ea0792151a27c6d7d7a4065ea (diff)
downloadglibc-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/socket.texi')
-rw-r--r--manual/socket.texi348
1 files changed, 117 insertions, 231 deletions
diff --git a/manual/socket.texi b/manual/socket.texi
index 21b672badc..79eb4208be 100644
--- a/manual/socket.texi
+++ b/manual/socket.texi
@@ -161,9 +161,8 @@ supported socket types. The symbolic constants listed here are
defined in @file{sys/socket.h}.
@pindex sys/socket.h
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int SOCK_STREAM
+@standards{BSD, sys/socket.h}
The @code{SOCK_STREAM} style is like a pipe (@pxref{Pipes and FIFOs}).
It operates over a connection with a particular remote socket and
transmits data reliably as a stream of bytes.
@@ -171,9 +170,8 @@ transmits data reliably as a stream of bytes.
Use of this style is covered in detail in @ref{Connections}.
@end deftypevr
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int SOCK_DGRAM
+@standards{BSD, sys/socket.h}
The @code{SOCK_DGRAM} style is used for sending
individually-addressed packets unreliably.
It is the diametrical opposite of @code{SOCK_STREAM}.
@@ -199,9 +197,8 @@ sockets.
@ignore
@c This appears to be only for the NS domain, which we aren't
@c discussing and probably won't support either.
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int SOCK_SEQPACKET
+@standards{BSD, sys/socket.h}
This style is like @code{SOCK_STREAM} except that the data are
structured into packets.
@@ -216,9 +213,8 @@ Many protocols do not support this communication style.
@end ignore
@ignore
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int SOCK_RDM
+@standards{BSD, sys/socket.h}
This style is a reliable version of @code{SOCK_DGRAM}: it sends
individually addressed packets, but guarantees that each packet sent
arrives exactly once.
@@ -228,9 +224,8 @@ by any operating system.
@end deftypevr
@end ignore
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int SOCK_RAW
+@standards{BSD, sys/socket.h}
This style provides access to low-level network protocols and
interfaces. Ordinary user programs usually have no need to use this
style.
@@ -304,9 +299,8 @@ you which data type to use to understand the address fully.
The symbols in this section are defined in the header file
@file{sys/socket.h}.
-@comment sys/socket.h
-@comment BSD
@deftp {Data Type} {struct sockaddr}
+@standards{BSD, sys/socket.h}
The @code{struct sockaddr} type itself has the following members:
@table @code
@@ -326,16 +320,15 @@ Each of them corresponds to a @samp{PF_} symbol which designates the
corresponding namespace. Here is a list of address format names:
@vtable @code
-@comment sys/socket.h
-@comment POSIX
@item AF_LOCAL
+@standards{POSIX, sys/socket.h}
This designates the address format that goes with the local namespace.
(@code{PF_LOCAL} is the name of that namespace.) @xref{Local Namespace
Details}, for information about this address format.
-@comment sys/socket.h
-@comment BSD, Unix98
@item AF_UNIX
+@standards{BSD, sys/socket.h}
+@standards{Unix98, sys/socket.h}
This is a synonym for @code{AF_LOCAL}. Although @code{AF_LOCAL} is
mandated by POSIX.1g, @code{AF_UNIX} is portable to more systems.
@code{AF_UNIX} was the traditional name stemming from BSD, so even most
@@ -343,28 +336,24 @@ POSIX systems support it. It is also the name of choice in the Unix98
specification. (The same is true for @code{PF_UNIX}
vs. @code{PF_LOCAL}).
-@comment sys/socket.h
-@comment GNU
@item AF_FILE
+@standards{GNU, sys/socket.h}
This is another synonym for @code{AF_LOCAL}, for compatibility.
(@code{PF_FILE} is likewise a synonym for @code{PF_LOCAL}.)
-@comment sys/socket.h
-@comment BSD
@item AF_INET
+@standards{BSD, sys/socket.h}
This designates the address format that goes with the Internet
namespace. (@code{PF_INET} is the name of that namespace.)
@xref{Internet Address Formats}.
-@comment sys/socket.h
-@comment IPv6 Basic API
@item AF_INET6
+@standards{IPv6 Basic API, sys/socket.h}
This is similar to @code{AF_INET}, but refers to the IPv6 protocol.
(@code{PF_INET6} is the name of the corresponding namespace.)
-@comment sys/socket.h
-@comment BSD
@item AF_UNSPEC
+@standards{BSD, sys/socket.h}
This designates no particular address format. It is used only in rare
cases, such as to clear out the default destination address of a
``connected'' datagram socket. @xref{Sending Datagrams}.
@@ -386,9 +375,8 @@ Use the @code{bind} function to assign an address to a socket. The
prototype for @code{bind} is in the header file @file{sys/socket.h}.
For examples of use, see @ref{Local Socket Example}, or see @ref{Inet Example}.
-@comment sys/socket.h
-@comment BSD
@deftypefun int bind (int @var{socket}, struct sockaddr *@var{addr}, socklen_t @var{length})
+@standards{BSD, sys/socket.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Direct syscall, except on Hurd.
The @code{bind} function assigns an address to the socket
@@ -436,9 +424,8 @@ Use the function @code{getsockname} to examine the address of an
Internet socket. The prototype for this function is in the header file
@file{sys/socket.h}.
-@comment sys/socket.h
-@comment BSD
@deftypefun int getsockname (int @var{socket}, struct sockaddr *@var{addr}, socklen_t *@var{length-ptr})
+@standards{BSD, sys/socket.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsmem{/hurd}}}
@c Direct syscall, except on Hurd, where it seems like it might leak
@c VM if cancelled.
@@ -492,15 +479,14 @@ an arbitrarily-assigned small positive integer.
The following functions, constants and data types are declared in the
header file @file{net/if.h}.
-@comment net/if.h
@deftypevr Constant size_t IFNAMSIZ
+@standards{???, net/if.h}
This constant defines the maximum buffer size needed to hold an
interface name, including its terminating zero byte.
@end deftypevr
-@comment net/if.h
-@comment IPv6 basic API
@deftypefun {unsigned int} if_nametoindex (const char *@var{ifname})
+@standards{IPv6 basic API, net/if.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{} @acsfd{}}}
@c It opens a socket to use ioctl on the fd to get the index.
@c opensock may call socket and access multiple times until it finds a
@@ -513,9 +499,8 @@ This function yields the interface index corresponding to a particular
name. If no interface exists with the name given, it returns 0.
@end deftypefun
-@comment net/if.h
-@comment IPv6 basic API
@deftypefun {char *} if_indextoname (unsigned int @var{ifindex}, char *@var{ifname})
+@standards{IPv6 basic API, net/if.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{} @acsfd{}}}
@c It opens a socket with opensock to use ioctl on the fd to get the
@c name from the index.
@@ -526,9 +511,8 @@ invalid, the function's return value is a null pointer, otherwise it is
@code{ifname}.
@end deftypefun
-@comment net/if.h
-@comment IPv6 basic API
@deftp {Data Type} {struct if_nameindex}
+@standards{IPv6 basic API, net/if.h}
This data type is used to hold the information about a single
interface. It has the following members:
@@ -542,9 +526,8 @@ This is the null-terminated index name.
@end table
@end deftp
-@comment net/if.h
-@comment IPv6 basic API
@deftypefun {struct if_nameindex *} if_nameindex (void)
+@standards{IPv6 basic API, net/if.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{/hurd}}@acunsafe{@aculock{/hurd} @acsfd{} @acsmem{}}}
@c if_nameindex @ascuheap @asulock/hurd @aculock/hurd @acsfd @acsmem
@c [linux]
@@ -587,9 +570,8 @@ The returned structure must be freed with @code{if_freenameindex} after
use.
@end deftypefun
-@comment net/if.h
-@comment IPv6 basic API
@deftypefun void if_freenameindex (struct if_nameindex *@var{ptr})
+@standards{IPv6 basic API, net/if.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
@c if_freenameindex @ascuheap @acsmem
@c free dup @ascuheap @acsmem
@@ -653,23 +635,20 @@ To create a socket in the local namespace, use the constant
@code{PF_LOCAL} as the @var{namespace} argument to @code{socket} or
@code{socketpair}. This constant is defined in @file{sys/socket.h}.
-@comment sys/socket.h
-@comment POSIX
@deftypevr Macro int PF_LOCAL
+@standards{POSIX, sys/socket.h}
This designates the local namespace, in which socket addresses are local
names, and its associated family of protocols. @code{PF_LOCAL} is the
macro used by POSIX.1g.
@end deftypevr
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int PF_UNIX
+@standards{BSD, sys/socket.h}
This is a synonym for @code{PF_LOCAL}, for compatibility's sake.
@end deftypevr
-@comment sys/socket.h
-@comment GNU
@deftypevr Macro int PF_FILE
+@standards{GNU, sys/socket.h}
This is a synonym for @code{PF_LOCAL}, for compatibility's sake.
@end deftypevr
@@ -677,9 +656,8 @@ The structure for specifying socket names in the local namespace is
defined in the header file @file{sys/un.h}:
@pindex sys/un.h
-@comment sys/un.h
-@comment BSD
@deftp {Data Type} {struct sockaddr_un}
+@standards{BSD, sys/un.h}
This structure is used to specify local namespace socket addresses. It has
the following members:
@@ -704,9 +682,8 @@ the local namespace as the sum of the size of the @code{sun_family}
component and the string length (@emph{not} the allocation size!) of
the file name string. This can be done using the macro @code{SUN_LEN}:
-@comment sys/un.h
-@comment BSD
@deftypefn {Macro} int SUN_LEN (@emph{struct sockaddr_un *} @var{ptr})
+@standards{BSD, sys/un.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro computes the length of the socket address in the local namespace.
@end deftypefn
@@ -740,16 +717,14 @@ To create a socket in the IPv4 Internet namespace, use the symbolic name
macro @code{PF_INET6}. These macros are defined in @file{sys/socket.h}.
@pindex sys/socket.h
-@comment sys/socket.h
-@comment BSD
@deftypevr Macro int PF_INET
+@standards{BSD, sys/socket.h}
This designates the IPv4 Internet namespace and associated family of
protocols.
@end deftypevr
-@comment sys/socket.h
-@comment X/Open
@deftypevr Macro int PF_INET6
+@standards{X/Open, sys/socket.h}
This designates the IPv6 Internet namespace and associated family of
protocols.
@end deftypevr
@@ -796,9 +771,8 @@ The data types for representing socket addresses in the Internet namespace
are defined in the header file @file{netinet/in.h}.
@pindex netinet/in.h
-@comment netinet/in.h
-@comment BSD
@deftp {Data Type} {struct sockaddr_in}
+@standards{BSD, netinet/in.h}
This is the data type used to represent socket addresses in the
Internet namespace. It has the following members:
@@ -1002,17 +976,15 @@ The following basic definitions for Internet addresses are declared in
the header file @file{netinet/in.h}:
@pindex netinet/in.h
-@comment netinet/in.h
-@comment BSD
@deftp {Data Type} {struct in_addr}
+@standards{BSD, netinet/in.h}
This data type is used in certain contexts to contain an IPv4 Internet
host address. It has just one field, named @code{s_addr}, which records
the host address number as an @code{uint32_t}.
@end deftp
-@comment netinet/in.h
-@comment BSD
@deftypevr Macro {uint32_t} INADDR_LOOPBACK
+@standards{BSD, netinet/in.h}
You can use this constant to stand for ``the address of this machine,''
instead of finding its actual address. It is the IPv4 Internet address
@samp{127.0.0.1}, which is usually called @samp{localhost}. This
@@ -1022,47 +994,41 @@ specially, avoiding any network traffic for the case of one machine
talking to itself.
@end deftypevr
-@comment netinet/in.h
-@comment BSD
@deftypevr Macro {uint32_t} INADDR_ANY
+@standards{BSD, netinet/in.h}
You can use this constant to stand for ``any incoming address'' when
binding to an address. @xref{Setting Address}. This is the usual
address to give in the @code{sin_addr} member of @w{@code{struct
sockaddr_in}} when you want to accept Internet connections.
@end deftypevr
-@comment netinet/in.h
-@comment BSD
@deftypevr Macro {uint32_t} INADDR_BROADCAST
+@standards{BSD, netinet/in.h}
This constant is the address you use to send a broadcast message.
@c !!! broadcast needs further documented
@end deftypevr
-@comment netinet/in.h
-@comment BSD
@deftypevr Macro {uint32_t} INADDR_NONE
+@standards{BSD, netinet/in.h}
This constant is returned by some functions to indicate an error.
@end deftypevr
-@comment netinet/in.h
-@comment IPv6 basic API
@deftp {Data Type} {struct in6_addr}
+@standards{IPv6 basic API, netinet/in.h}
This data type is used to store an IPv6 address. It stores 128 bits of
data, which can be accessed (via a union) in a variety of ways.
@end deftp
-@comment netinet/in.h
-@comment IPv6 basic API
@deftypevr Constant {struct in6_addr} in6addr_loopback
+@standards{IPv6 basic API, netinet/in.h}
This constant is the IPv6 address @samp{::1}, the loopback address. See
above for a description of what this means. The macro
@code{IN6ADDR_LOOPBACK_INIT} is provided to allow you to initialize your
own variables to this value.
@end deftypevr
-@comment netinet/in.h
-@comment IPv6 basic API
@deftypevr Constant {struct in6_addr} in6addr_any
+@standards{IPv6 basic API, netinet/in.h}
This constant is the IPv6 address @samp{::}, the unspecified address. See
above for a description of what this means. The macro
@code{IN6ADDR_ANY_INIT} is provided to allow you to initialize your
@@ -1080,9 +1046,8 @@ addresses in network byte order, and network numbers and
local-address-within-network numbers in host byte order. @xref{Byte
Order}, for an explanation of network and host byte order.
-@comment arpa/inet.h
-@comment BSD
@deftypefun int inet_aton (const char *@var{name}, struct in_addr *@var{addr})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c inet_aton @mtslocale
@c isdigit dup @mtslocale
@@ -1096,9 +1061,8 @@ it in the @code{struct in_addr} that @var{addr} points to.
@code{inet_aton} returns nonzero if the address is valid, zero if not.
@end deftypefun
-@comment arpa/inet.h
-@comment BSD
@deftypefun {uint32_t} inet_addr (const char *@var{name})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c inet_addr @mtslocale
@c inet_aton dup @mtslocale
@@ -1111,9 +1075,8 @@ is obsolete because @code{INADDR_NONE} is a valid address
indicate error return.
@end deftypefun
-@comment arpa/inet.h
-@comment BSD
@deftypefun {uint32_t} inet_network (const char *@var{name})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c inet_network @mtslocale
@c isdigit dup @mtslocale
@@ -1130,9 +1093,8 @@ types. It doesn't work with classless addresses and shouldn't be used
anymore.
@end deftypefun
-@comment arpa/inet.h
-@comment BSD
@deftypefun {char *} inet_ntoa (struct in_addr @var{addr})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asurace{}}@acsafe{}}
@c inet_ntoa @mtslocale @asurace
@c writes to a thread-local static buffer
@@ -1152,9 +1114,8 @@ described below should be used since it handles both IPv4 and IPv6
addresses.
@end deftypefun
-@comment arpa/inet.h
-@comment BSD
@deftypefun {struct in_addr} inet_makeaddr (uint32_t @var{net}, uint32_t @var{local})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c inet_makeaddr ok
@c htonl dup ok
@@ -1163,9 +1124,8 @@ number @var{net} with the local-address-within-network number
@var{local}.
@end deftypefun
-@comment arpa/inet.h
-@comment BSD
@deftypefun uint32_t inet_lnaof (struct in_addr @var{addr})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c inet_lnaof ok
@c ntohl dup ok
@@ -1179,9 +1139,8 @@ types. It doesn't work with classless addresses and shouldn't be used
anymore.
@end deftypefun
-@comment arpa/inet.h
-@comment BSD
@deftypefun uint32_t inet_netof (struct in_addr @var{addr})
+@standards{BSD, arpa/inet.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c inet_netof ok
@c ntohl dup ok
@@ -1195,9 +1154,8 @@ types. It doesn't work with classless addresses and shouldn't be used
anymore.
@end deftypefun
-@comment arpa/inet.h
-@comment IPv6 basic API
@deftypefun int inet_pton (int @var{af}, const char *@var{cp}, void *@var{buf})
+@standards{IPv6 basic API, arpa/inet.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c inet_pton @mtslocale
@c inet_pton4 ok
@@ -1216,9 +1174,8 @@ address being converted. @var{cp} is a pointer to the input string, and
responsibility to make sure the buffer is large enough.
@end deftypefun
-@comment arpa/inet.h
-@comment IPv6 basic API
@deftypefun {const char *} inet_ntop (int @var{af}, const void *@var{cp}, char *@var{buf}, socklen_t @var{len})
+@standards{IPv6 basic API, arpa/inet.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c inet_ntop @mtslocale
@c inet_ntop4 @mtslocale
@@ -1259,9 +1216,8 @@ The functions and other symbols for accessing this database are declared
in @file{netdb.h}. They are BSD features, defined unconditionally if
you include @file{netdb.h}.
-@comment netdb.h
-@comment BSD
@deftp {Data Type} {struct hostent}
+@standards{BSD, netdb.h}
This data type is used to represent an entry in the hosts database. It
has the following members:
@@ -1309,9 +1265,8 @@ statically-allocated structure; you must copy the information if you
need to save it across calls. You can also use @code{getaddrinfo} and
@code{getnameinfo} to obtain this information.
-@comment netdb.h
-@comment BSD
@deftypefun {struct hostent *} gethostbyname (const char *@var{name})
+@standards{BSD, netdb.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:hostbyname} @mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @asucorrupt{} @ascuheap{} @asulock{}}@acunsafe{@aculock{} @acucorrupt{} @acsmem{} @acsfd{}}}
@c gethostbyname @mtasurace:hostbyname @mtsenv @mtslocale @ascudlopen @ascuplugin @asucorrupt @ascuheap @asulock @aculock @acucorrupt @acsmem @acsfd
@c libc_lock_lock dup @asulock @aculock
@@ -1381,9 +1336,8 @@ The @code{gethostbyname} function returns information about the host
named @var{name}. If the lookup fails, it returns a null pointer.
@end deftypefun
-@comment netdb.h
-@comment IPv6 Basic API
@deftypefun {struct hostent *} gethostbyname2 (const char *@var{name}, int @var{af})
+@standards{IPv6 Basic API, netdb.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:hostbyname2} @mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @asucorrupt{} @ascuheap{} @asulock{}}@acunsafe{@aculock{} @acucorrupt{} @acsmem{} @acsfd{}}}
@c gethostbyname2 @mtasurace:hostbyname2 @mtsenv @mtslocale @ascudlopen @ascuplugin @asucorrupt @ascuheap @asulock @aculock @acucorrupt @acsmem @acsfd
@c libc_lock_lock dup @asulock @aculock
@@ -1399,9 +1353,8 @@ allows the caller to specify the desired address family (e.g.@:
@code{AF_INET} or @code{AF_INET6}) of the result.
@end deftypefun
-@comment netdb.h
-@comment BSD
@deftypefun {struct hostent *} gethostbyaddr (const void *@var{addr}, socklen_t @var{length}, int @var{format})
+@standards{BSD, netdb.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:hostbyaddr} @mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @asucorrupt{} @ascuheap{} @asulock{}}@acunsafe{@aculock{} @acucorrupt{} @acsmem{} @acsfd{}}}
@c gethostbyaddr @mtasurace:hostbyaddr @mtsenv @mtslocale @ascudlopen @ascuplugin @asucorrupt @ascuheap @asulock @aculock @acucorrupt @acsmem @acsfd
@c libc_lock_lock dup @asulock @aculock
@@ -1432,25 +1385,21 @@ with other systems.)
Here are the error codes that you may find in @code{h_errno}:
@vtable @code
-@comment netdb.h
-@comment BSD
@item HOST_NOT_FOUND
+@standards{BSD, netdb.h}
No such host is known in the database.
-@comment netdb.h
-@comment BSD
@item TRY_AGAIN
+@standards{BSD, netdb.h}
This condition happens when the name server could not be contacted. If
you try again later, you may succeed then.
-@comment netdb.h
-@comment BSD
@item NO_RECOVERY
+@standards{BSD, netdb.h}
A non-recoverable error occurred.
-@comment netdb.h
-@comment BSD
@item NO_ADDRESS
+@standards{BSD, netdb.h}
The host database contains an entry for the name, but it doesn't have an
associated Internet address.
@end vtable
@@ -1460,9 +1409,8 @@ reentrant and therefore unusable in multi-threaded applications.
Therefore provides @theglibc{} a new set of functions which can be
used in this context.
-@comment netdb.h
-@comment GNU
@deftypefun int gethostbyname_r (const char *restrict @var{name}, struct hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t @var{buflen}, struct hostent **restrict @var{result}, int *restrict @var{h_errnop})
+@standards{GNU, netdb.h}
@safety{@prelim{}@mtsafe{@mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @asucorrupt{} @ascuheap{} @asulock{}}@acunsafe{@aculock{} @acucorrupt{} @acsmem{} @acsfd{}}}
@c gethostbyname_r @mtsenv @mtslocale @ascudlopen @ascuplugin @asucorrupt @ascuheap @asulock @aculock @acucorrupt @acsmem @acsfd
@c nss_hostname_digits_dots dup @mtsenv @mtslocale @ascuheap @asulock @aculock @acsmem @acsfd
@@ -1585,9 +1533,8 @@ gethostname (char *host)
@end smallexample
@end deftypefun
-@comment netdb.h
-@comment GNU
@deftypefun int gethostbyname2_r (const char *@var{name}, int @var{af}, struct hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t @var{buflen}, struct hostent **restrict @var{result}, int *restrict @var{h_errnop})
+@standards{GNU, netdb.h}
@safety{@prelim{}@mtsafe{@mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @asucorrupt{} @ascuheap{} @asulock{}}@acunsafe{@aculock{} @acucorrupt{} @acsmem{} @acsfd{}}}
@c gethostbyname2_r @mtsenv @mtslocale @ascudlopen @ascuplugin @asucorrupt @ascuheap @asulock @aculock @acucorrupt @acsmem @acsfd
@c nss_hostname_digits_dots dup @mtsenv @mtslocale @ascuheap @asulock @aculock @acsmem @acsfd
@@ -1604,9 +1551,8 @@ allows the caller to specify the desired address family (e.g.@:
@code{AF_INET} or @code{AF_INET6}) for the result.
@end deftypefun
-@comment netdb.h
-@comment GNU
@deftypefun int gethostbyaddr_r (const void *@var{addr}, socklen_t @var{length}, int @var{format}, struct hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t @var{buflen}, struct hostent **restrict @var{result}, int *restrict @var{h_errnop})
+@standards{GNU, netdb.h}
@safety{@prelim{}@mtsafe{@mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @asucorrupt{} @ascuheap{} @asulock{}}@acunsafe{@aculock{} @acucorrupt{} @acsmem{} @acsfd{}}}
@c gethostbyaddr_r @mtsenv @mtslocale @ascudlopen @ascuplugin @asucorrupt @ascuheap @asulock @aculock @acucorrupt @acsmem @acsfd
@c memcmp dup ok
@@ -1641,9 +1587,8 @@ You can also scan the entire hosts database one entry at a time using
@code{sethostent}, @code{gethostent} and @code{endhostent}. Be careful
when using these functions because they are not reentrant.
-@comment netdb.h
-@comment BSD
@deftypefun void sethostent (int @var{stayopen})
+@standards{BSD, netdb.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:hostent} @mtsenv{} @mtslocale{}}@asunsafe{@ascudlopen{} @ascuplugin{} @ascuheap{} @asulock{}}@acunsafe{@acucorrupt{} @aculock{} @acsfd{} @acsmem{}}}
@c sethostent @mtasurace:hostent @mtsenv @mtslocale @ascudlopen @ascuplugin @ascuheap @asulock @acucorrupt @aculock @acsfd @acsmem
@c libc_lock_lock dup @asulock @aculock
@@ -1668,9 +1613,8 @@ efficiency if you call those functions several times, by avoiding
reopening the database for each call.</