1explain_fprintf(3) Library Functions Manual explain_fprintf(3)
2
3
4
6 explain_fprintf - explain fprintf(3) errors
7
9 #include <libexplain/fprintf.h>
10 const char *explain_fprintf(FILE *fp, const char *format, ...);
11 const char *explain_errno_fprintf(int errnum, FILE *fp, const char
12 *format, ...);
13 void explain_message_fprintf(char *message, int message_size, FILE *fp,
14 const char *format, ....);
15 void explain_message_errno_fprintf(char *message, int message_size, int
16 errnum, FILE *fp, const char *format, ...);
17
19 These functions may be used to obtain explanations for errors returned
20 by the fprintf(3) system call.
21
22 explain_fprintf
23 const char *explain_fprintf(FILE *fp, const char *format, ...);
24
25 The explain_fprintf function is used to obtain an explanation of an
26 error returned by the fprintf(3) system call. The least the message
27 will contain is the value of strerror(errno), but usually it will do
28 much better, and indicate the underlying cause in more detail.
29
30 The errno global variable will be used to obtain the error value to be
31 decoded.
32
33 fp The original fp, exactly as passed to the fprintf(3) system
34 call.
35
36 format The original format, exactly as passed to the fprintf(3) system
37 call.
38
39 Returns:
40 The message explaining the error. This message buffer is shared
41 by all libexplain functions which do not supply a buffer in
42 their argument list. This will be overwritten by the next call
43 to any libexplain function which shares this buffer, including
44 other threads.
45
46 Note: This function is not thread safe, because it shares a return buf‐
47 fer across all threads, and many other functions in this library.
48
49 Example: This function is intended to be used in a fashion similar to
50 the following example:
51 errno = EINVAL;
52 int result = fprintf(fp, format, ...);
53 if (result < 0)
54 {
55 fprintf(stderr, "%s\n", explain_fprintf(fp, format, ...));
56 exit(EXIT_FAILURE);
57 }
58
59 The above code example is available pre‐packaged as the
60 explain_fprintf_or_die(3) function.
61
62 explain_errno_fprintf
63 const char *explain_errno_fprintf(int errnum, FILE *fp, const char
64 *format, ...);
65
66 The explain_errno_fprintf function is used to obtain an explanation of
67 an error returned by the fprintf(3) system call. The least the message
68 will contain is the value of strerror(errno), but usually it will do
69 much better, and indicate the underlying cause in more detail.
70
71 errnum The error value to be decoded, usually obtained from the errno
72 global variable just before this function is called. This is
73 necessary if you need to call any code between the system call
74 to be explained and this function, because many libc functions
75 will alter the value of errno.
76
77 fp The original fp, exactly as passed to the fprintf(3) system
78 call.
79
80 format The original format, exactly as passed to the fprintf(3) system
81 call.
82
83 Returns:
84 The message explaining the error. This message buffer is shared
85 by all libexplain functions which do not supply a buffer in
86 their argument list. This will be overwritten by the next call
87 to any libexplain function which shares this buffer, including
88 other threads.
89
90 Note: This function is not thread safe, because it shares a return buf‐
91 fer across all threads, and many other functions in this library.
92
93 Example: This function is intended to be used in a fashion similar to
94 the following example:
95 errno = EINVAL;
96 int result = fprintf(fp, format, ...);
97 if (result < 0)
98 {
99 int err = errno;
100 fprintf(stderr, "%s\n", explain_errno_fprintf(err, fp, for‐
101 mat, ...));
102 exit(EXIT_FAILURE);
103 }
104
105 The above code example is available pre‐packaged as the
106 explain_fprintf_or_die(3) function.
107
108 explain_message_fprintf
109 void explain_message_fprintf(char *message, int message_size, FILE *fp,
110 const char *format, ...);
111
112 The explain_message_fprintf function is used to obtain an explanation
113 of an error returned by the fprintf(3) system call. The least the mes‐
114 sage will contain is the value of strerror(errno), but usually it will
115 do much better, and indicate the underlying cause in more detail.
116
117 The errno global variable will be used to obtain the error value to be
118 decoded.
119
120 message The location in which to store the returned message. If a suit‐
121 able message return buffer is supplied, this function is thread
122 safe.
123
124 message_size
125 The size in bytes of the location in which to store the
126 returned message.
127
128 fp The original fp, exactly as passed to the fprintf(3) system
129 call.
130
131 format The original format, exactly as passed to the fprintf(3) system
132 call.
133
134 Example: This function is intended to be used in a fashion similar to
135 the following example:
136 errno = EINVAL;
137 int result = fprintf(fp, format, ...);
138 if (result < 0)
139 {
140 char message[3000];
141 explain_message_fprintf(message, sizeof(message), fp, for‐
142 mat, ...);
143 fprintf(stderr, "%s\n", message);
144 exit(EXIT_FAILURE);
145 }
146
147 The above code example is available pre‐packaged as the
148 explain_fprintf_or_die(3) function.
149
150 explain_message_errno_fprintf
151 void explain_message_errno_fprintf(char *message, int message_size, int
152 errnum, FILE *fp, const char *format, ...);
153
154 The explain_message_errno_fprintf function is used to obtain an expla‐
155 nation of an error returned by the fprintf(3) system call. The least
156 the message will contain is the value of strerror(errno), but usually
157 it will do much better, and indicate the underlying cause in more
158 detail.
159
160 message The location in which to store the returned message. If a suit‐
161 able message return buffer is supplied, this function is thread
162 safe.
163
164 message_size
165 The size in bytes of the location in which to store the
166 returned message.
167
168 errnum The error value to be decoded, usually obtained from the errno
169 global variable just before this function is called. This is
170 necessary if you need to call any code between the system call
171 to be explained and this function, because many libc functions
172 will alter the value of errno.
173
174 fp The original fp, exactly as passed to the fprintf(3) system
175 call.
176
177 format The original format, exactly as passed to the fprintf(3) system
178 call.
179
180 Example: This function is intended to be used in a fashion similar to
181 the following example:
182 errno = EINVAL;
183 int result = fprintf(fp, format, ...);
184 if (result < 0)
185 {
186 int err = errno;
187 char message[3000];
188 explain_message_errno_fprintf(message, sizeof(message), err,
189 fp, format, ...);
190 fprintf(stderr, "%s\n", message);
191 exit(EXIT_FAILURE);
192 }
193
194 The above code example is available pre‐packaged as the
195 explain_fprintf_or_die(3) function.
196
198 fprintf(3)
199 formatted output conversion
200
201 explain_fprintf_or_die(3)
202 formatted output conversion and report errors
203
205 libexplain version 0.40
206 Copyright (C) 2010 Peter Miller
207
208
209
210 explain_fprintf(3)