gethostent_r()

Updated: April 19, 2023

Read the next line of the host database file

Synopsis:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

struct hostent * gethostent_r( FILE ** hostf,
                               struct hostent * result,
                               char * buffer,
                               int buflen,
                               int * h_errnop );

Arguments:

hostf
NULL, or the address of the FILE * pointer associated with the host database file.
result
A pointer to a struct hostent where the function can store the host entry.
buffer
A pointer to a buffer that the function can use during the operation to store host database entries; buffer should be large enough to hold all of the data associated with the host entry. A 2 KB buffer is usually more than enough; a 256-byte buffer is safe in most cases.
buflen
The length of the area pointed to by buffer.
h_errnop
A pointer to a location where the function can store an herrno value if an error occurs.

Library:

libsocket

Use the -l socket option to qcc to link against this library.

Description:

The gethostent_r() function is a thread-safe version of the gethostent() function. This function gets the local host's entry. If the pointer pointed to by hostf is NULL, gethostent_r() opens /etc/hosts and returns its file pointer in hostf for later use. It's the calling process's responsibility to close the host file with fclose().

Note: The first time that you call gethostent_r(), pass NULL in the pointer pointed to by hostf.

Returns:

A pointer to result, or NULL if an error occurred.

Errors:

If an error occurs, the int pointed to by h_errnop is set to:

ERANGE
The supplied buffer isn't large enough to store the result.
HOST_NOT_FOUND
Authoritative answer: Unknown host.
NO_ADDRESS
No address associated with name, look for an MX record.
NO_DATA
Valid name, no data record of the requested type. The name is known to the name server, but has no IP associated with it—this isn't a temporary error. Another type of request to the name server using this domain name will result in an answer (e.g., a mail-forwarder may be registered for this domain).
NO_RECOVERY
Unknown server error. An unexpected server failure was encountered. This is a nonrecoverable network error.
TRY_AGAIN
Nonauthoritative answer: Host name lookup failure. This is usually a temporary error and means that the local server didn't receive a response from an authoritative server. A retry at some later time may succeed.

Files:

/etc/hosts
Local host database file.

Classification:

Unix

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes