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