.lf 1 ./man/man3/explain_setenv.3 .\" .\" libexplain - Explain errno values returned by libc functions .\" Copyright (C) 2010, 2011 Peter Miller .\" .\" This program is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by the .\" Free Software Foundation; either version 3 of the License, or (at your .\" option) any later version. .\" .\" This program is distributed in the hope that it will be useful,but .\" WITHOUT ANY WARRANTY; without even the implied warranty .\" ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNULesser General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License along .\" with this program. If not, see . .\" .ds n) explain_setenv .cp 0 \" Solaris defaults to ''.cp 1'', sheesh. .TH explain_setenv 3 .SH NAME explain_setenv \- explain \f[I]setenv\fP(3) errors .if require_index \{ .\} .SH SYNOPSIS #include .sp 0.3 .ad l const char *explain_setenv(const char *name, const char *value, int overwrite); .br const char *explain_errno_setenv(int errnum, const char *name, const char *value, int overwrite); .br void explain_message_setenv(char *message, int message_size, const char *name, const char *value, int overwrite); .br void explain_message_errno_setenv(char *message, int message_size, int errnum, const char *name, const char *value, int overwrite); .ad b .SH DESCRIPTION These functions may be used to obtain explanations for errors returned by the \f[I]setenv\fP(3) system call. .\" ---------------------------------------------------- .SS explain_setenv .ad l const char *explain_setenv(const char *name, const char *value, int overwrite); .ad b .PP The \f[B]explain_setenv\fP function is used to obtain an explanation of an error returned by the \f[I]setenv\fP(3) system call. The least the message will contain is the value of \f[CW]strerror(errno)\fP, but usually it will do much better, and indicate the underlying cause in more detail. .PP The \f[I]errno\fP global variable will be used to obtain the error value to be decoded. .TP 8n \f[I]name\fP The original name, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]value\fP The original value, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]overwrite\fP The original overwrite, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n 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. .PP \f[B]Note:\fP This function is \f[B]not\fP thread safe, because it shares a return buffer across all threads, and many other functions in this library. .PP \f[B]Example:\fP This function is intended to be used in a fashion similar to the following example: .RS .ft CW .fi .ad l if (setenv(name, value, overwrite) < 0) .ad b .nf { .fi .ad l .in +4n fprintf(stderr, "%s\en", explain_setenv(name, value, overwrite)); .in -4n .nf exit(EXIT_FAILURE); } .fi .ft R .ad b .RE .PP The above code example is available pre\[hy]packaged as the \f[I]explain_setenv_or_die\fP(3) function. .\" ---------------------------------------------------- .SS explain_errno_setenv .ad l const char *explain_errno_setenv(int errnum, const char *name, const char *value, int overwrite); .ad b .PP The \f[B]explain_errno_setenv\fP function is used to obtain an explanation of an error returned by the \f[I]setenv\fP(3) system call. The least the message will contain is the value of \f[CW]strerror(errno)\fP, but usually it will do much better, and indicate the underlying cause in more detail. .TP 8n \f[I]errnum\fP The error value to be decoded, usually obtained from the \f[I]errno\fP global variable just before this function is called. This is necessary if you need to call \f[B]any\fP code between the system call to be explained and this function, because many libc functions will alter the value of \f[I]errno\fP. .TP 8n \f[I]name\fP The original name, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]value\fP The original value, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]overwrite\fP The original overwrite, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n 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. .PP \f[B]Note:\fP This function is \f[B]not\fP thread safe, because it shares a return buffer across all threads, and many other functions in this library. .PP \f[B]Example:\fP This function is intended to be used in a fashion similar to the following example: .RS .ft CW .fi .ad l if (setenv(name, value, overwrite) < 0) .ad b .nf { int err = errno; .fi .ad l .in +4n fprintf(stderr, "%s\en", explain_errno_setenv(err, name, value, overwrite)); .in -4n .nf exit(EXIT_FAILURE); } .fi .ft R .ad b .RE .PP The above code example is available pre\[hy]packaged as the \f[I]explain_setenv_or_die\fP(3) function. .\" ---------------------------------------------------- .SS explain_message_setenv .ad l void explain_message_setenv(char *message, int message_size, const char *name, const char *value, int overwrite); .ad b .PP The \f[B]explain_message_setenv\fP function is used to obtain an explanation of an error returned by the \f[I]setenv\fP(3) system call. The least the message will contain is the value of \f[CW]strerror(errno)\fP, but usually it will do much better, and indicate the underlying cause in more detail. .PP The \f[I]errno\fP global variable will be used to obtain the error value to be decoded. .TP 8n \f[I]message\fP The location in which to store the returned message. If a suitable message return buffer is supplied, this function is thread safe. .TP 8n \f[I]message_size\fP The size in bytes of the location in which to store the returned message. .TP 8n \f[I]name\fP The original name, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]value\fP The original value, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]overwrite\fP The original overwrite, exactly as passed to the \f[I]setenv\fP(3) system call. .PP \f[B]Example:\fP This function is intended to be used in a fashion similar to the following example: .RS .ft CW .fi .ad l if (setenv(name, value, overwrite) < 0) .ad b .nf { char message[3000]; .in +4n .fi .ad l explain_message_setenv(message, sizeof(message), name, value, overwrite); .nf .in -4n fprintf(stderr, "%s\en", message); exit(EXIT_FAILURE); } .fi .ft R .ad b .RE .PP The above code example is available pre\[hy]packaged as the \f[I]explain_setenv_or_die\fP(3) function. .\" ---------------------------------------------------- .SS explain_message_errno_setenv .ad l void explain_message_errno_setenv(char *message, int message_size, int errnum, const char *name, const char *value, int overwrite); .ad b .PP The \f[B]explain_message_errno_setenv\fP function is used to obtain an explanation of an error returned by the \f[I]setenv\fP(3) system call. The least the message will contain is the value of \f[CW]strerror(errno)\fP, but usually it will do much better, and indicate the underlying cause in more detail. .TP 8n \f[I]message\fP The location in which to store the returned message. If a suitable message return buffer is supplied, this function is thread safe. .TP 8n \f[I]message_size\fP The size in bytes of the location in which to store the returned message. .TP 8n \f[I]errnum\fP The error value to be decoded, usually obtained from the \f[I]errno\fP global variable just before this function is called. This is necessary if you need to call \f[B]any\fP code between the system call to be explained and this function, because many libc functions will alter the value of \f[I]errno\fP. .TP 8n \f[I]name\fP The original name, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]value\fP The original value, exactly as passed to the \f[I]setenv\fP(3) system call. .TP 8n \f[I]overwrite\fP The original overwrite, exactly as passed to the \f[I]setenv\fP(3) system call. .PP \f[B]Example:\fP This function is intended to be used in a fashion similar to the following example: .RS .ft CW .fi .ad l if (setenv(name, value, overwrite) < 0) .ad b .nf { int err = errno; char message[3000]; .in +4n .fi .ad l explain_message_errno_setenv(message, sizeof(message), err, name, value, overwrite); .nf .in -4n fprintf(stderr, "%s\en", message); exit(EXIT_FAILURE); } .fi .ft R .ad b .RE .PP The above code example is available pre\[hy]packaged as the \f[I]explain_setenv_or_die\fP(3) function. .\" ---------------------------------------------------- .SH SEE ALSO .TP 8n \f[I]setenv\fP(3) change or add an environment variable .TP 8n \f[I]explain_setenv_or_die\fP(3) change or add an environment variable and report errors .\" ---------------------------------------------------- .SH COPYRIGHT .lf 1 ./etc/version.so .ds v) 1.4 .ds V) 1.4.D001 .ds Y) 2008, 2009, 2010, 2011, 2012, 2013, 2014 .lf 306 ./man/man3/explain_setenv.3 .if n .ds C) (C) .if t .ds C) \(co libexplain version \*(v) .br Copyright \*(C) 2010 Peter Miller .\" vim: set ts=8 sw=4 et