File Coverage

/usr/include/x86_64-linux-gnu/bits/stdio2.h
Criterion Covered Total %
statement 1 1 100.0
branch n/a
condition n/a
subroutine n/a
total 1 1 100.0


line stmt bran cond sub time code
1           /* Checking macros for stdio functions.
2           Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
3           This file is part of the GNU C Library.
4            
5           The GNU C Library is free software; you can redistribute it and/or
6           modify it under the terms of the GNU Lesser General Public
7           License as published by the Free Software Foundation; either
8           version 2.1 of the License, or (at your option) any later version.
9            
10           The GNU C Library is distributed in the hope that it will be useful,
11           but WITHOUT ANY WARRANTY; without even the implied warranty of
12           MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13           Lesser General Public License for more details.
14            
15           You should have received a copy of the GNU Lesser General Public
16           License along with the GNU C Library; if not, write to the Free
17           Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18           02111-1307 USA. */
19            
20           #ifndef _STDIO_H
21           # error "Never include directly; use instead."
22           #endif
23            
24           extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
25           __const char *__restrict __format, ...) __THROW;
26           extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
27           __const char *__restrict __format,
28           _G_va_list __ap) __THROW;
29            
30           #ifdef __va_arg_pack
31           __extern_always_inline int
32           __NTH (sprintf (char *__restrict __s, __const char *__restrict __fmt, ...))
33           {
34 114993         return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
35           __bos (__s), __fmt, __va_arg_pack ());
36           }
37           #elif !defined __cplusplus
38           # define sprintf(str, ...) \
39           __builtin___sprintf_chk (str, __USE_FORTIFY_LEVEL - 1, __bos (str), \
40           __VA_ARGS__)
41           #endif
42            
43           __extern_always_inline int
44           __NTH (vsprintf (char *__restrict __s, __const char *__restrict __fmt,
45           _G_va_list __ap))
46           {
47           return __builtin___vsprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
48           __bos (__s), __fmt, __ap);
49           }
50            
51           #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
52            
53           extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
54           size_t __slen, __const char *__restrict __format,
55           ...) __THROW;
56           extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
57           size_t __slen, __const char *__restrict __format,
58           _G_va_list __ap) __THROW;
59            
60           # ifdef __va_arg_pack
61           __extern_always_inline int
62           __NTH (snprintf (char *__restrict __s, size_t __n,
63           __const char *__restrict __fmt, ...))
64           {
65           return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
66           __bos (__s), __fmt, __va_arg_pack ());
67           }
68           # elif !defined __cplusplus
69           # define snprintf(str, len, ...) \
70           __builtin___snprintf_chk (str, len, __USE_FORTIFY_LEVEL - 1, __bos (str), \
71           __VA_ARGS__)
72           # endif
73            
74           __extern_always_inline int
75           __NTH (vsnprintf (char *__restrict __s, size_t __n,
76           __const char *__restrict __fmt, _G_va_list __ap))
77           {
78           return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
79           __bos (__s), __fmt, __ap);
80           }
81            
82           #endif
83            
84           #if __USE_FORTIFY_LEVEL > 1
85            
86           extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
87           __const char *__restrict __format, ...);
88           extern int __printf_chk (int __flag, __const char *__restrict __format, ...);
89           extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
90           __const char *__restrict __format, _G_va_list __ap);
91           extern int __vprintf_chk (int __flag, __const char *__restrict __format,
92           _G_va_list __ap);
93            
94           # ifdef __va_arg_pack
95           __extern_always_inline int
96           fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
97           {
98           return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
99           __va_arg_pack ());
100           }
101            
102           __extern_always_inline int
103           printf (__const char *__restrict __fmt, ...)
104           {
105           return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
106           }
107           # elif !defined __cplusplus
108           # define printf(...) \
109           __printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
110           # define fprintf(stream, ...) \
111           __fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
112           # endif
113            
114           __extern_always_inline int
115           vprintf (__const char *__restrict __fmt, _G_va_list __ap)
116           {
117           #ifdef __USE_EXTERN_INLINES
118           return __vfprintf_chk (stdout, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
119           #else
120           return __vprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
121           #endif
122           }
123            
124           __extern_always_inline int
125           vfprintf (FILE *__restrict __stream,
126           __const char *__restrict __fmt, _G_va_list __ap)
127           {
128           return __vfprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
129           }
130            
131           # ifdef __USE_GNU
132            
133           extern int __asprintf_chk (char **__restrict __ptr, int __flag,
134           __const char *__restrict __fmt, ...)
135           __THROW __attribute__ ((__format__ (__printf__, 3, 4))) __wur;
136           extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
137           __const char *__restrict __fmt, _G_va_list __arg)
138           __THROW __attribute__ ((__format__ (__printf__, 3, 0))) __wur;
139           extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt,
140           ...) __attribute__ ((__format__ (__printf__, 3, 4)));
141           extern int __vdprintf_chk (int __fd, int __flag,
142           __const char *__restrict __fmt, _G_va_list __arg)
143           __attribute__ ((__format__ (__printf__, 3, 0)));
144           extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
145           int __flag, __const char *__restrict __format,
146           ...)
147           __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
148           extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
149           int __flag,
150           __const char *__restrict __format,
151           _G_va_list __args)
152           __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
153            
154           # ifdef __va_arg_pack
155           __extern_always_inline int
156           __NTH (asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...))
157           {
158           return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
159           __va_arg_pack ());
160           }
161            
162           __extern_always_inline int
163           __NTH (__asprintf (char **__restrict __ptr, __const char *__restrict __fmt,
164           ...))
165           {
166           return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
167           __va_arg_pack ());
168           }
169            
170           __extern_always_inline int
171           dprintf (int __fd, __const char *__restrict __fmt, ...)
172           {
173           return __dprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt,
174           __va_arg_pack ());
175           }
176            
177           __extern_always_inline int
178           __NTH (obstack_printf (struct obstack *__restrict __obstack,
179           __const char *__restrict __fmt, ...))
180           {
181           return __obstack_printf_chk (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
182           __va_arg_pack ());
183           }
184           # elif !defined __cplusplus
185           # define asprintf(ptr, ...) \
186           __asprintf_chk (ptr, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
187           # define __asprintf(ptr, ...) \
188           __asprintf_chk (ptr, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
189           # define dprintf(fd, ...) \
190           __dprintf_chk (fd, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
191           # define obstack_printf(obstack, ...) \
192           __obstack_printf_chk (obstack, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
193           # endif
194            
195           __extern_always_inline int
196           __NTH (vasprintf (char **__restrict __ptr, __const char *__restrict __fmt,
197           _G_va_list __ap))
198           {
199           return __vasprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
200           }
201            
202           __extern_always_inline int
203           vdprintf (int __fd, __const char *__restrict __fmt, _G_va_list __ap)
204           {
205           return __vdprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
206           }
207            
208           __extern_always_inline int
209           __NTH (obstack_vprintf (struct obstack *__restrict __obstack,
210           __const char *__restrict __fmt, _G_va_list __ap))
211           {
212           return __obstack_vprintf_chk (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
213           __ap);
214           }
215            
216           # endif
217            
218           #endif
219            
220           extern char *__gets_chk (char *__str, size_t) __wur;
221           extern char *__REDIRECT (__gets_warn, (char *__str), gets)
222           __wur __warnattr ("please use fgets or getline instead, gets can't "
223           "specify buffer size");
224            
225           __extern_always_inline __wur char *
226           gets (char *__str)
227           {
228           if (__bos (__str) != (size_t) -1)
229           return __gets_chk (__str, __bos (__str));
230           return __gets_warn (__str);
231           }
232            
233           extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
234           FILE *__restrict __stream) __wur;
235           extern char *__REDIRECT (__fgets_alias,
236           (char *__restrict __s, int __n,
237           FILE *__restrict __stream), fgets) __wur;
238           extern char *__REDIRECT (__fgets_chk_warn,
239           (char *__restrict __s, size_t __size, int __n,
240           FILE *__restrict __stream), __fgets_chk)
241           __wur __warnattr ("fgets called with bigger size than length "
242           "of destination buffer");
243            
244           __extern_always_inline __wur char *
245           fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
246           {
247           if (__bos (__s) != (size_t) -1)
248           {
249           if (!__builtin_constant_p (__n) || __n <= 0)
250           return __fgets_chk (__s, __bos (__s), __n, __stream);
251            
252           if ((size_t) __n > __bos (__s))
253           return __fgets_chk_warn (__s, __bos (__s), __n, __stream);
254           }
255           return __fgets_alias (__s, __n, __stream);
256           }
257            
258           extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
259           size_t __size, size_t __n,
260           FILE *__restrict __stream) __wur;
261           extern size_t __REDIRECT (__fread_alias,
262           (void *__restrict __ptr, size_t __size,
263           size_t __n, FILE *__restrict __stream),
264           fread) __wur;
265           extern size_t __REDIRECT (__fread_chk_warn,
266           (void *__restrict __ptr, size_t __ptrlen,
267           size_t __size, size_t __n,
268           FILE *__restrict __stream),
269           __fread_chk)
270           __wur __warnattr ("fread called with bigger size * nmemb than length "
271           "of destination buffer");
272            
273           __extern_always_inline __wur size_t
274           fread (void *__restrict __ptr, size_t __size, size_t __n,
275           FILE *__restrict __stream)
276           {
277           if (__bos0 (__ptr) != (size_t) -1)
278           {
279           if (!__builtin_constant_p (__size)
280           || !__builtin_constant_p (__n)
281           || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
282           return __fread_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
283            
284           if (__size * __n > __bos0 (__ptr))
285           return __fread_chk_warn (__ptr, __bos0 (__ptr), __size, __n, __stream);
286           }
287           return __fread_alias (__ptr, __size, __n, __stream);
288           }
289            
290           #ifdef __USE_GNU
291           extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
292           int __n, FILE *__restrict __stream) __wur;
293           extern char *__REDIRECT (__fgets_unlocked_alias,
294           (char *__restrict __s, int __n,
295           FILE *__restrict __stream), fgets_unlocked) __wur;
296           extern char *__REDIRECT (__fgets_unlocked_chk_warn,
297           (char *__restrict __s, size_t __size, int __n,
298           FILE *__restrict __stream), __fgets_unlocked_chk)
299           __wur __warnattr ("fgets_unlocked called with bigger size than length "
300           "of destination buffer");
301            
302           __extern_always_inline __wur char *
303           fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
304           {
305           if (__bos (__s) != (size_t) -1)
306           {
307           if (!__builtin_constant_p (__n) || __n <= 0)
308           return __fgets_unlocked_chk (__s, __bos (__s), __n, __stream);
309            
310           if ((size_t) __n > __bos (__s))
311           return __fgets_unlocked_chk_warn (__s, __bos (__s), __n, __stream);
312           }
313           return __fgets_unlocked_alias (__s, __n, __stream);
314           }
315           #endif
316            
317           #ifdef __USE_MISC
318           # undef fread_unlocked
319           extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
320           size_t __size, size_t __n,
321           FILE *__restrict __stream) __wur;
322           extern size_t __REDIRECT (__fread_unlocked_alias,
323           (void *__restrict __ptr, size_t __size,
324           size_t __n, FILE *__restrict __stream),
325           fread_unlocked) __wur;
326           extern size_t __REDIRECT (__fread_unlocked_chk_warn,
327           (void *__restrict __ptr, size_t __ptrlen,
328           size_t __size, size_t __n,
329           FILE *__restrict __stream),
330           __fread_unlocked_chk)
331           __wur __warnattr ("fread_unlocked called with bigger size * nmemb than "
332           "length of destination buffer");
333            
334           __extern_always_inline __wur size_t
335           fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
336           FILE *__restrict __stream)
337           {
338           if (__bos0 (__ptr) != (size_t) -1)
339           {
340           if (!__builtin_constant_p (__size)
341           || !__builtin_constant_p (__n)
342           || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
343           return __fread_unlocked_chk (__ptr, __bos0 (__ptr), __size, __n,
344           __stream);
345            
346           if (__size * __n > __bos0 (__ptr))
347           return __fread_unlocked_chk_warn (__ptr, __bos0 (__ptr), __size, __n,
348           __stream);
349           }
350            
351           # ifdef __USE_EXTERN_INLINES
352           if (__builtin_constant_p (__size)
353           && __builtin_constant_p (__n)
354           && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
355           && __size * __n <= 8)
356           {
357           size_t __cnt = __size * __n;
358           char *__cptr = (char *) __ptr;
359           if (__cnt == 0)
360           return 0;
361            
362           for (; __cnt > 0; --__cnt)
363           {
364           int __c = _IO_getc_unlocked (__stream);
365           if (__c == EOF)
366           break;
367           *__cptr++ = __c;
368           }
369           return (__cptr - (char *) __ptr) / __size;
370           }
371           # endif
372           return __fread_unlocked_alias (__ptr, __size, __n, __stream);
373           }
374           #endif