Man Linux: Main Page and Category List

NAME

       explain_getaddrinfo - explain getaddrinfo(3) errors

SYNOPSIS

       #include <libexplain/getaddrinfo.h>
       const  char  *explain_errcode_getaddrinfo(int errnum, const char *node,
       const char *service, const  struct  addrinfo  *hints,  struct  addrinfo
       **res);
       void     explain_message_errcode_getaddrinfo(char     *message,     int
       message_size, int errnum, const char *node, const char *service,  const
       struct addrinfo *hints, struct addrinfo **res);

DESCRIPTION

       These  functions may be used to obtain explanations for errors returned
       by the getaddrinfo(3) system call.

   explain_errcode_getaddrinfo
       const char *explain_errcode_getaddrinfo(int errnum, const  char  *node,
       const  char  *service,  const  struct  addrinfo *hints, struct addrinfo
       **res);

       The  explain_errcode_getaddrinfo  function  is  used   to   obtain   an
       explanation  of  an  error  returned by the getaddrinfo(3) system call.
       The   least   the   message   will   contain   is    the    value    of
       gai_strerror(errcode), but usually it will do much better, and indicate
       the underlying cause in more detail.

       This function is intended to be  used  in  a  fashion  similar  to  the
       following example:
              int errcode = getaddrinfo(node, service, hints, res);
              if (errncode == GAI_SYSTEM)
                  errcode = errno;
              if (errcode)
              {
                  fprintf(stderr, "%s\n", explain_errcode_getaddrinfo(errcode,
                      node, service, hints, res));
                  exit(EXIT_FAILURE);
              }

       The      above     code     example     is     available     as     the
       explain_getaddrinfo_or_die(3) function.

       errnum  The error value to be decoded, usually obtained from the  errno
               global  variable  just before this function is called.  This is
               necessary if you need to call any code between the system  call
               to  be explained and this function, because many libc functions
               will alter the value of errno.

       node    The original node, exactly  as  passed  to  the  getaddrinfo(3)
               system call.

       service The  original  service, exactly as passed to the getaddrinfo(3)
               system call.

       hints   The original hints, exactly as  passed  to  the  getaddrinfo(3)
               system call.

       res     The  original  res,  exactly  as  passed  to the getaddrinfo(3)
               system call.

       Returns:
               The message explaining  the  error.   This  message  buffer  is
               shared by all libexplain functions which do not supply a buffer
               in their argument list.  This will be overwritten by  the  next
               call  to  any  libexplain  function  which  shares this buffer,
               including other threads.

       Note: This function is not thread safe,  because  it  shares  a  return
       buffer across all threads, and many other functions in this library.

   explain_message_errno_getaddrinfo
       void explain_message_errno_getaddrinfo(char *message, int message_size,
       int errnum,  const  char  *node,  const  char  *service,  const  struct
       addrinfo *hints, struct addrinfo **res);

       The explain_message_errno_getaddrinfo function may be used to obtain an
       explanation of an error returned by  the  getaddrinfo(3)  system  call.
       The  least  the  message will contain is the value of strerror(errnum),
       but usually it will do much better, and indicate the  underlying  cause
       in more detail.

       This  function  is  intended  to  be  used  in a fashion similar to the
       following example:
              int errcode = getaddrinfo(node, service, hints, res);
              if (errnode == EAI_SYSTEM)
                  errcode = errno;
              if (errcode)
              {
                  char message[3000];
                  explain_message_errcode_getaddrinfo(message, sizeof(message),
                      errcode, node, service, hints, res);
                  fprintf(stderr, "%s\n", message);
                  exit(EXIT_FAILURE);
              }

       The   above   code   example   is   available   pre-packaged   as   the
       explain_getaddrinfo_or_die(3) function.

       message The  location  in  which  to  store the returned message.  If a
               suitable message return buffer is supplied,  this  function  is
               thread safe.

       message_size
               The  size  in  bytes  of  the  location  in  which to store the
               returned message.

       errnum  The error value to be decoded, usually obtained from the  errno
               global  variable  just before this function is called.  This is
               necessary if you need to call any code between the system  call
               to  be explained and this function, because many libc functions
               will alter the value of errno.

       node    The original node, exactly  as  passed  to  the  getaddrinfo(3)
               system call.

       service The  original  service, exactly as passed to the getaddrinfo(3)
               system call.

       hints   The original hints, exactly as  passed  to  the  getaddrinfo(3)
               system call.

       res     The  original  res,  exactly  as  passed  to the getaddrinfo(3)
               system call.

SEE ALSO

       getaddrinfo(3)
               network address and

       explain_getaddrinfo_or_die(3)
               network address and and report errors

COPYRIGHT

       libexplain version 0.19
       Copyright (C) 2008 Peter Miller

                                                        explain_getaddrinfo(3)