int
hesiod_init(void **context)
char
**hesiod_resolve(void *context, const char *name, const char *type)
void
hesiod_free_list(void *context, char **list)
char
*hesiod_to_bind(void *context, const char *name, const char *type)
void
hesiod_end(void *context)
context,
an opaque object which stores information used internally by the
library between calls.
hesiod_init()
initializes a context, storing a pointer to the context in the
location pointed to by the
context
argument.
hesiod_end()
frees the resources used by a context.
hesiod_resolve()
is the primary interface to the library. If successful, it returns a
list of one or more strings giving the records matching
name
and
type.
The last element of the list is followed by a
NULL
pointer. It is the caller's responsibility to call
hesiod_free_list()
to free the resources used by the returned list.
hesiod_to_bind()
converts
name
and
type
into the DNS name used by
hesiod_resolve().
It is the caller's responsibility to free the returned string using
free(3).
)
returns 0; otherwise it returns -1 and sets
errno
to indicate the error. On failure,
hesiod_resolve()
and
hesiod_to_bind()
return
NULL
and set the global variable
errno
to indicate the error.
HES_DOMAIN
is set, it will override the domain in the Hesiod configuration file.
If the environment variable
HESIOD_CONFIG
is set, it specifies the location of the Hesiod configuration file.
ENOMEMENOEXEC)
failed because the Hesiod configuration file was invalid.
ECONNREFUSED)
failed because no name server could be contacted to answer the query.
EMSGSIZE)
or
hesiod_to_bind()
failed because the query or response was too big to fit into the
packet buffers.
ENOENT)
failed because the name server had no text records matching
name
and
type,
or
hesiod_to_bind()
failed because the
name
argument had a domain extension which could not be resolved with type
``rhs-extension''
in the local Hesiod domain.
errno
values set by the Hesiod functions are not particularly indicative of
what went wrong, especially for
ENOEXEC
and
ENOENT.