]> git.ipfire.org Git - thirdparty/glibc.git/blame - include/stdio.h
Fix -Wempty-body warnings in glibc.
[thirdparty/glibc.git] / include / stdio.h
CommitLineData
6796bc80 1#ifndef _STDIO_H
a4fea3f2
ZW
2# if !defined _ISOMAC && defined _IO_MTSAFE_IO
3# include <stdio-lock.h>
4# endif
199fc19d
ZW
5# include <libio/stdio.h>
6# ifndef _ISOMAC
a4fea3f2 7# define _LIBC_STDIO_H 1
6c6c962a 8# include <libio/libio.h>
bdbf022d
UD
9
10/* Now define the internal interfaces. */
b15549e6 11
2e0a6909 12extern int __fcloseall (void) attribute_hidden;
aaa8d85c 13extern int __snprintf (char *__restrict __s, size_t __maxlen,
a784e502 14 const char *__restrict __format, ...)
bdbf022d 15 __attribute__ ((__format__ (__printf__, 3, 4)));
61158ffa 16libc_hidden_proto (__snprintf)
aaa8d85c 17extern int __vfscanf (FILE *__restrict __s,
a784e502 18 const char *__restrict __format,
63fb8f9a 19 __gnuc_va_list __arg)
bdbf022d 20 __attribute__ ((__format__ (__scanf__, 2, 0)));
a20d8dbe 21libc_hidden_proto (__vfscanf)
a784e502 22extern int __vscanf (const char *__restrict __format,
63fb8f9a 23 __gnuc_va_list __arg)
bdbf022d 24 __attribute__ ((__format__ (__scanf__, 1, 0)));
9964a145
ZW
25extern __ssize_t __getline (char **__lineptr, size_t *__n,
26 FILE *__stream) attribute_hidden;
a784e502
UD
27extern int __vsscanf (const char *__restrict __s,
28 const char *__restrict __format,
63fb8f9a 29 __gnuc_va_list __arg)
bfce746a 30 __attribute__ ((__format__ (__scanf__, 2, 0)));
bdbf022d 31
b5cc329c
UD
32extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW;
33extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
34 __THROW;
35extern int __vsprintf_chk (char *, int, size_t, const char *,
63fb8f9a 36 __gnuc_va_list) __THROW;
b5cc329c 37extern int __vsnprintf_chk (char *, size_t, int, size_t, const char *,
63fb8f9a 38 __gnuc_va_list) __THROW;
b5cc329c
UD
39extern int __printf_chk (int, const char *, ...);
40extern int __fprintf_chk (FILE *, int, const char *, ...);
63fb8f9a
ZW
41extern int __vprintf_chk (int, const char *, __gnuc_va_list);
42extern int __vfprintf_chk (FILE *, int, const char *, __gnuc_va_list);
553cc5f9
UD
43extern char *__fgets_unlocked_chk (char *buf, size_t size, int n, FILE *fp);
44extern char *__fgets_chk (char *buf, size_t size, int n, FILE *fp);
dff37515 45extern int __asprintf_chk (char **, int, const char *, ...) __THROW;
63fb8f9a 46extern int __vasprintf_chk (char **, int, const char *, __gnuc_va_list) __THROW;
dff37515 47extern int __dprintf_chk (int, int, const char *, ...);
63fb8f9a 48extern int __vdprintf_chk (int, int, const char *, __gnuc_va_list);
dff37515
UD
49extern int __obstack_printf_chk (struct obstack *, int, const char *, ...)
50 __THROW;
51extern int __obstack_vprintf_chk (struct obstack *, int, const char *,
63fb8f9a 52 __gnuc_va_list) __THROW;
b5cc329c 53
874aa523 54extern int __isoc99_fscanf (FILE *__restrict __stream,
a784e502
UD
55 const char *__restrict __format, ...) __wur;
56extern int __isoc99_scanf (const char *__restrict __format, ...) __wur;
57extern int __isoc99_sscanf (const char *__restrict __s,
58 const char *__restrict __format, ...) __THROW;
874aa523 59extern int __isoc99_vfscanf (FILE *__restrict __s,
a784e502 60 const char *__restrict __format,
63fb8f9a 61 __gnuc_va_list __arg) __wur;
a784e502 62extern int __isoc99_vscanf (const char *__restrict __format,
63fb8f9a 63 __gnuc_va_list __arg) __wur;
a784e502
UD
64extern int __isoc99_vsscanf (const char *__restrict __s,
65 const char *__restrict __format,
63fb8f9a 66 __gnuc_va_list __arg) __THROW;
03992356 67libc_hidden_proto (__isoc99_sscanf)
874aa523
UD
68libc_hidden_proto (__isoc99_vsscanf)
69libc_hidden_proto (__isoc99_vfscanf)
70
03992356
ZW
71/* Internal uses of sscanf should call the C99-compliant version.
72 Unfortunately, symbol redirection is not transitive, so the
73 __REDIRECT in the public header does not link up with the above
74 libc_hidden_proto. Bridge the gap with a macro. */
75# if !__GLIBC_USE (DEPRECATED_SCANF)
76# undef sscanf
77# define sscanf __isoc99_sscanf
78# endif
79
ed073f0e
AJ
80/* Prototypes for compatibility functions. */
81extern FILE *__new_tmpfile (void);
82extern FILE *__old_tmpfile (void);
83
ab58d620
UD
84# define __need_size_t
85# include <stddef.h>
199fc19d
ZW
86
87# include <bits/types/wint_t.h>
88
992af677 89/* Generate a unique file name (and possibly open it). */
aaa8d85c 90extern int __path_search (char *__tmpl, size_t __tmpl_len,
a784e502 91 const char *__dir, const char *__pfx,
2e0a6909 92 int __try_tempdir) attribute_hidden;
992af677 93
7f3146e7 94extern int __gen_tempname (char *__tmpl, int __suffixlen, int __flags,
2e0a6909 95 int __kind) attribute_hidden;
2e65ca2b 96/* The __kind argument to __gen_tempname may be one of: */
ab58d620 97# define __GT_FILE 0 /* create a file */
d7e23b02
UD
98# define __GT_DIR 1 /* create a directory */
99# define __GT_NOCREATE 2 /* just find a name not currently in use */
992af677 100
ed421fca
L
101enum __libc_message_action
102{
103 do_message = 0, /* Print message. */
104 do_abort = 1 << 0, /* Abort. */
105 do_backtrace = 1 << 1 /* Backtrace. */
106};
107
a6e8926f
PP
108/* Print out MESSAGE (which should end with a newline) on the error output
109 and abort. */
a784e502 110extern void __libc_fatal (const char *__message)
992af677 111 __attribute__ ((__noreturn__));
ed421fca 112extern void __libc_message (enum __libc_message_action action,
2e0a6909 113 const char *__fnt, ...) attribute_hidden;
1b0bfc69 114extern void __fortify_fail (const char *msg) __attribute__ ((__noreturn__));
ed421fca 115extern void __fortify_fail_abort (_Bool, const char *msg)
8bcdb7e0 116 __attribute__ ((__noreturn__)) attribute_hidden;
3a50811c 117libc_hidden_proto (__fortify_fail)
ed421fca 118libc_hidden_proto (__fortify_fail_abort)
992af677 119
d4b0774f 120/* Acquire ownership of STREAM. */
2e0a6909 121extern void __flockfile (FILE *__stream) attribute_hidden;
d4b0774f
AJ
122
123/* Relinquish the ownership granted for STREAM. */
2e0a6909 124extern void __funlockfile (FILE *__stream) attribute_hidden;
d1646309 125
dd040747
AJ
126/* Try to acquire ownership of STREAM but do not block if it is not
127 possible. */
128extern int __ftrylockfile (FILE *__stream);
129
30ac923d 130extern int __getc_unlocked (FILE *__fp) attribute_hidden;
03bac9ac
AJ
131extern wint_t __getwc_unlocked (FILE *__fp);
132
8a259a23 133extern int __fxprintf (FILE *__fp, const char *__fmt, ...)
2e0a6909 134 __attribute__ ((__format__ (__printf__, 2, 3))) attribute_hidden;
544ce845 135extern int __fxprintf_nocancel (FILE *__fp, const char *__fmt, ...)
2e0a6909 136 __attribute__ ((__format__ (__printf__, 2, 3))) attribute_hidden;
fdb16de3
FW
137int __vfxprintf (FILE *__fp, const char *__fmt, __gnuc_va_list)
138 attribute_hidden;
03bac9ac 139
3f5e3f5d
FW
140/* Read the next line from FP into BUFFER, of LENGTH bytes. LINE will
141 include the line terminator and a NUL terminator. On success,
142 return the length of the line, including the line terminator, but
143 excluding the NUL termintor. On EOF, return zero and write a NUL
144 terminator. On error, return -1 and set errno. If the total byte
145 count (line and both terminators) exceeds LENGTH, return -1 and set
146 errno to ERANGE (but do not mark the stream as failed).
147
148 The behavior is undefined if FP is not seekable, or if the stream
149 is already in an error state. */
150ssize_t __libc_readline_unlocked (FILE *fp, char *buffer, size_t length);
151libc_hidden_proto (__libc_readline_unlocked);
152
a784e502 153extern const char *const _sys_errlist_internal[] attribute_hidden;
1897bc3f 154extern int _sys_nerr_internal attribute_hidden;
77fe0b9c 155
d18ea0c5 156libc_hidden_proto (__asprintf)
4f41c682 157# if IS_IN (libc)
9964a145 158extern FILE *_IO_new_fopen (const char*, const char*);
3ba06713 159# define fopen(fname, mode) _IO_new_fopen (fname, mode)
9964a145 160extern FILE *_IO_new_fdopen (int, const char*);
3ba06713 161# define fdopen(fd, mode) _IO_new_fdopen (fd, mode)
9964a145 162extern int _IO_new_fclose (FILE*);
3ba06713 163# define fclose(fp) _IO_new_fclose (fp)
9964a145 164extern int _IO_fputs (const char*, FILE*);
3ba06713 165libc_hidden_proto (_IO_fputs)
499b3153
JM
166/* The compiler may optimize calls to fprintf into calls to fputs.
167 Use libc_hidden_proto to ensure that those calls, not redirected by
168 the fputs macro, also do not go through the PLT. */
169libc_hidden_proto (fputs)
3ba06713 170# define fputs(str, fp) _IO_fputs (str, fp)
9964a145 171extern int _IO_new_fsetpos (FILE *, const __fpos_t *);
3ba06713 172# define fsetpos(fp, posp) _IO_new_fsetpos (fp, posp)
9964a145 173extern int _IO_new_fgetpos (FILE *, __fpos_t *);
3ba06713 174# define fgetpos(fp, posp) _IO_new_fgetpos (fp, posp)
6b87a564
UD
175# endif
176
b9b91868 177libc_hidden_proto (dprintf)
be7dc2b7
JM
178extern __typeof (dprintf) __dprintf
179 __attribute__ ((__format__ (__printf__, 2, 3)));
180libc_hidden_proto (__dprintf)
b9b91868
RM
181libc_hidden_proto (fprintf)
182libc_hidden_proto (vfprintf)
183libc_hidden_proto (sprintf)
b9b91868
RM
184libc_hidden_proto (fwrite)
185libc_hidden_proto (perror)
186libc_hidden_proto (remove)
187libc_hidden_proto (rewind)
3ba06713 188libc_hidden_proto (fileno)
5a6fa4d7
JM
189extern __typeof (fileno) __fileno;
190libc_hidden_proto (__fileno)
3ba06713
UD
191libc_hidden_proto (fwrite)
192libc_hidden_proto (fseek)
5a6fa4d7
JM
193extern __typeof (ftello) __ftello;
194libc_hidden_proto (__ftello)
3f5e3f5d
FW
195extern __typeof (fseeko64) __fseeko64;
196libc_hidden_proto (__fseeko64)
197extern __typeof (ftello64) __ftello64;
198libc_hidden_proto (__ftello64)
5182cbc5 199libc_hidden_proto (fflush)
3ba06713 200libc_hidden_proto (fflush_unlocked)
eb1fae6a
JM
201extern __typeof (fflush_unlocked) __fflush_unlocked;
202libc_hidden_proto (__fflush_unlocked)
5a6fa4d7
JM
203extern __typeof (fread_unlocked) __fread_unlocked;
204libc_hidden_proto (__fread_unlocked)
3ba06713
UD
205libc_hidden_proto (fwrite_unlocked)
206libc_hidden_proto (fgets_unlocked)
c4eae752
JM
207extern __typeof (fgets_unlocked) __fgets_unlocked;
208libc_hidden_proto (__fgets_unlocked)
3ba06713 209libc_hidden_proto (fputs_unlocked)
3164bf09
JM
210extern __typeof (fputs_unlocked) __fputs_unlocked;
211libc_hidden_proto (__fputs_unlocked)
7fc03cf3
JM
212libc_hidden_proto (feof_unlocked)
213extern __typeof (feof_unlocked) __feof_unlocked attribute_hidden;
ec481ad8
JM
214libc_hidden_proto (ferror_unlocked)
215extern __typeof (ferror_unlocked) __ferror_unlocked attribute_hidden;
30ac923d 216libc_hidden_proto (getc_unlocked)
039c721a
JM
217libc_hidden_proto (fputc_unlocked)
218libc_hidden_proto (putc_unlocked)
219extern __typeof (putc_unlocked) __putc_unlocked attribute_hidden;
a99e59d7 220libc_hidden_proto (fmemopen)
711f67a7 221/* The prototype needs repeating instead of using __typeof to use
3ac3ff32 222 __THROW in C++ tests. */
711f67a7
JM
223extern FILE *__open_memstream (char **, size_t *) __THROW __wur;
224libc_hidden_proto (__open_memstream)
9d79e037 225libc_hidden_proto (__libc_fatal)
2193ce87 226rtld_hidden_proto (__libc_fatal)
b5cc329c 227libc_hidden_proto (__vsprintf_chk)
b15549e6 228
fdb7d390
AZ
229extern FILE * __fmemopen (void *buf, size_t len, const char *mode);
230libc_hidden_proto (__fmemopen)
231
e0d2eb5a
AZ
232extern int __gen_tempfd (int flags);
233libc_hidden_proto (__gen_tempfd)
234
7fc03cf3
JM
235# ifdef __USE_EXTERN_INLINES
236__extern_inline int
237__NTH (__feof_unlocked (FILE *__stream))
238{
239 return __feof_unlocked_body (__stream);
240}
ec481ad8
JM
241
242__extern_inline int
243__NTH (__ferror_unlocked (FILE *__stream))
244{
245 return __ferror_unlocked_body (__stream);
246}
30ac923d
JM
247
248__extern_inline int
249__getc_unlocked (FILE *__fp)
250{
251 return __getc_unlocked_body (__fp);
252}
039c721a
JM
253
254__extern_inline int
255__putc_unlocked (int __c, FILE *__stream)
256{
257 return __putc_unlocked_body (__c, __stream);
258}
7fc03cf3
JM
259# endif
260
d6da5cb6
FW
261extern __typeof (renameat) __renameat;
262libc_hidden_proto (__renameat)
263
199fc19d
ZW
264# endif /* not _ISOMAC */
265#endif /* stdio.h */