Provided by: explain_0.52.D002-1_amd64 bug

NAME

       explain_write - explain write(2) errors

SYNOPSIS

       #include <libexplain/write.h>
       const char *explain_write(int fildes, const void *data, long data_size);
       const char *explain_errno_write(int errnum, int fildes, const void *data, long data_size);
       void  explain_message_write(char *message, int message_size, int fildes, const void *data,
       long data_size);
       void explain_message_errno_write(char *message, int message_size, int errnum, int  fildes,
       const void *data, long data_size);

DESCRIPTION

       These functions may be used to obtain explanations for write(2) errors .

   explain_write
       const char *explain_write(int fildes, const void *data, long data_size);

       The explain_write function may be used to obtain a human readable explanation of what went
       wrong in a write(2) system call.  The least the message  will  contain  is  the  value  of
       strerror(errno),  but usually it will do much better, and indicate the underlying cause in
       more detail.

       The error number will be picked up from the errno global variable.

       This function is intended to be used in a fashion similar to the following example:
              sszie_t n = write(fd, data, data_size);
              if (n < 0)
              {
                  fprintf(stderr, '%s0, explain_read(fd, data, data_size));
                  exit(EXIT_FAILURE);
              }

       fildes  The original fildes, exactly as passed to the write(2) system call.

       data    The original data, exactly as passed to the write(2) system call.

       data_size
               The original data_size, exactly as passed to the write(2) 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_errno_write
       const char *explain_errno_write(int errnum, int fildes, const void *data, long data_size);

       The explain_errno_write function may be used to obtain a  human  readable  explanation  of
       what  went  wrong  in  a  write(2) 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:
              sszie_t n = write(fd, data, data_size);
              if (n < 0)
              {
                  int err = errno;
                  fprintf(stderr, '%s0, explain_errno_read(errnum, fd, data,
                      data_size));
                  exit(EXIT_FAILURE);
              }

       errnum  The  error value to be decoded, usually obtain 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.

       fildes  The orginal fildes, exactly as passed to the write(2) system call.

       data    The original data, exactly as passed to the write(2) system call.

       data_size
               The original data_size, exactly as passed to the write(2) 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_write
       void explain_message_write(char *message, int message_size, int fildes, const void  *data,
       long data_size);

       The  explain_message_write  function may be used to obtain a human readable explanation of
       what went wrong in a write(2) system call.  The least the  message  will  contain  is  the
       value  of strerror(errno), but usually it will do much better, and indicate the underlying
       cause in more detail.

       The error number will be picked up from the errno global variable.

       This function is intended to be used in a fashion similar to the following example:
              sszie_t n = write(fd, data, data_size);
              if (n < 0)
              {
                  char message[3000];
                  explain_message_read(message, sizeof(message), fd, data,
                      data_size));
                  fprintf(stderr, '%s0, message);
                  exit(EXIT_FAILURE);
              }

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

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

       fildes  The original fildes, exactly as passed to the write(2) system call.

       data    The original data, exactly as passed to the write(2) system call.

       data_size
               The original data_size, exactly as passed to the write(2) system call.

       Note: Given a suitably thread safe buffer, this function is thread safe.

   explain_message_errno_write
       void explain_message_errno_write(char * message, int message_size, int errnum, int fildes,
       const void *data, long data_size);

       The  explain_message_errno_write  function  may  be  used  to  obtain  a  human   readable
       explanation  of  what  went  wrong  in a write(2) 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:
              sszie_t n = write(fd, data, data_size);
              if (n < 0)
              {
                  int err = errno;
                  char message[3000];
                  explain_message_errno_read(message, sizeof(message), errno,
                      fd, data, data_size));
                  fprintf(stderr, '%s0, message);
                  exit(EXIT_FAILURE);
              }

       message The  location  in  which  to store the returned message.  Because a message return
               buffer has been 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 obtain 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.

       fildes  The original fildes, exactly as passed to the write(2) system call.

       data    The original data, exactly as passed to the write(2) system call.

       data_size
               The original data_size, exactly as passed to the write(2) system call.

       Note: Given a suitably thread safe buffer, this function is thread safe.

COPYRIGHT

       libexplain version 0.52
       Copyright (C) 2008 Peter Miller

AUTHOR

       Written by Peter Miller <pmiller@opensource.org.au>

                                                                                 explain_write(3)