explain_write(3) | Library Functions Manual | explain_write(3) |
explain_write - explain write(2) errors
#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);
These functions may be used to obtain explanations for write(2) errors .
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); }
Note: This function is not thread safe, because it shares a return buffer across all threads, and many other functions in this library.
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); }
Note: This function is not thread safe, because it shares a return buffer across all threads, and many other functions in this library.
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); }
Note: Given a suitably thread safe buffer, this function is thread safe.
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); }
Note: Given a suitably thread safe buffer, this function is thread safe.
libexplain version 1.4
Copyright (C) 2008 Peter Miller
Written by Peter Miller <pmiller@opensource.org.au>