2 # if !defined _ISOMAC && defined _IO_MTSAFE_IO
3 # include <stdio-lock.h>
5 # include <libio/stdio.h>
7 # define _LIBC_STDIO_H 1
8 # include <libio/libio.h>
10 /* Now define the internal interfaces. */
12 extern int __fcloseall (void) attribute_hidden
;
13 extern int __snprintf (char *__restrict __s
, size_t __maxlen
,
14 const char *__restrict __format
, ...)
15 __attribute__ ((__format__ (__printf__
, 3, 4)));
16 libc_hidden_proto (__snprintf
)
17 extern int __vsnprintf (char *__restrict __s
, size_t __maxlen
,
18 const char *__restrict __format
, __gnuc_va_list __arg
)
19 __attribute__ ((__format__ (__printf__
, 3, 0)));
20 extern int __vfscanf (FILE *__restrict __s
,
21 const char *__restrict __format
,
23 __attribute__ ((__format__ (__scanf__
, 2, 0)));
24 libc_hidden_proto (__vfscanf
)
25 extern int __vscanf (const char *__restrict __format
,
27 __attribute__ ((__format__ (__scanf__
, 1, 0)));
28 extern __ssize_t
__getline (char **__lineptr
, size_t *__n
,
29 FILE *__stream
) attribute_hidden
;
30 extern int __vsscanf (const char *__restrict __s
,
31 const char *__restrict __format
,
33 __attribute__ ((__format__ (__scanf__
, 2, 0)));
35 extern int __sprintf_chk (char *, int, size_t, const char *, ...) __THROW
;
36 extern int __snprintf_chk (char *, size_t, int, size_t, const char *, ...)
38 extern int __vsprintf_chk (char *, int, size_t, const char *,
39 __gnuc_va_list
) __THROW
;
40 extern int __vsnprintf_chk (char *, size_t, int, size_t, const char *,
41 __gnuc_va_list
) __THROW
;
42 extern int __printf_chk (int, const char *, ...);
43 extern int __fprintf_chk (FILE *, int, const char *, ...);
44 extern int __vprintf_chk (int, const char *, __gnuc_va_list
);
45 extern int __vfprintf_chk (FILE *, int, const char *, __gnuc_va_list
);
46 extern char *__fgets_unlocked_chk (char *buf
, size_t size
, int n
, FILE *fp
);
47 extern char *__fgets_chk (char *buf
, size_t size
, int n
, FILE *fp
);
48 extern int __asprintf_chk (char **, int, const char *, ...) __THROW
;
49 extern int __vasprintf_chk (char **, int, const char *, __gnuc_va_list
) __THROW
;
50 extern int __dprintf_chk (int, int, const char *, ...);
51 extern int __vdprintf_chk (int, int, const char *, __gnuc_va_list
);
52 extern int __obstack_printf_chk (struct obstack
*, int, const char *, ...)
54 extern int __obstack_vprintf_chk (struct obstack
*, int, const char *,
55 __gnuc_va_list
) __THROW
;
57 extern int __isoc99_fscanf (FILE *__restrict __stream
,
58 const char *__restrict __format
, ...) __wur
;
59 extern int __isoc99_scanf (const char *__restrict __format
, ...) __wur
;
60 extern int __isoc99_sscanf (const char *__restrict __s
,
61 const char *__restrict __format
, ...) __THROW
;
62 extern int __isoc99_vfscanf (FILE *__restrict __s
,
63 const char *__restrict __format
,
64 __gnuc_va_list __arg
) __wur
;
65 extern int __isoc99_vscanf (const char *__restrict __format
,
66 __gnuc_va_list __arg
) __wur
;
67 extern int __isoc99_vsscanf (const char *__restrict __s
,
68 const char *__restrict __format
,
69 __gnuc_va_list __arg
) __THROW
;
70 libc_hidden_proto (__isoc99_vsscanf
)
71 libc_hidden_proto (__isoc99_vfscanf
)
73 /* Prototypes for compatibility functions. */
74 extern FILE *__new_tmpfile (void);
75 extern FILE *__old_tmpfile (void);
77 # define __need_size_t
80 # include <bits/types/wint_t.h>
82 /* Generate a unique file name (and possibly open it). */
83 extern int __path_search (char *__tmpl
, size_t __tmpl_len
,
84 const char *__dir
, const char *__pfx
,
85 int __try_tempdir
) attribute_hidden
;
87 extern int __gen_tempname (char *__tmpl
, int __suffixlen
, int __flags
,
88 int __kind
) attribute_hidden
;
89 /* The __kind argument to __gen_tempname may be one of: */
90 # define __GT_FILE 0 /* create a file */
91 # define __GT_DIR 1 /* create a directory */
92 # define __GT_NOCREATE 2 /* just find a name not currently in use */
94 enum __libc_message_action
96 do_message
= 0, /* Print message. */
97 do_abort
= 1 << 0, /* Abort. */
98 do_backtrace
= 1 << 1 /* Backtrace. */
101 /* Print out MESSAGE on the error output and abort. */
102 extern void __libc_fatal (const char *__message
)
103 __attribute__ ((__noreturn__
));
104 extern void __libc_message (enum __libc_message_action action
,
105 const char *__fnt
, ...) attribute_hidden
;
106 extern void __fortify_fail (const char *msg
) __attribute__ ((__noreturn__
));
107 extern void __fortify_fail_abort (_Bool
, const char *msg
)
108 __attribute__ ((__noreturn__
)) attribute_hidden
;
109 libc_hidden_proto (__fortify_fail
)
110 libc_hidden_proto (__fortify_fail_abort
)
112 /* Acquire ownership of STREAM. */
113 extern void __flockfile (FILE *__stream
) attribute_hidden
;
115 /* Relinquish the ownership granted for STREAM. */
116 extern void __funlockfile (FILE *__stream
) attribute_hidden
;
118 /* Try to acquire ownership of STREAM but do not block if it is not
120 extern int __ftrylockfile (FILE *__stream
);
122 extern int __getc_unlocked (FILE *__fp
) attribute_hidden
;
123 extern wint_t __getwc_unlocked (FILE *__fp
);
125 extern int __fxprintf (FILE *__fp
, const char *__fmt
, ...)
126 __attribute__ ((__format__ (__printf__
, 2, 3))) attribute_hidden
;
127 extern int __fxprintf_nocancel (FILE *__fp
, const char *__fmt
, ...)
128 __attribute__ ((__format__ (__printf__
, 2, 3))) attribute_hidden
;
130 extern const char *const _sys_errlist_internal
[] attribute_hidden
;
131 extern int _sys_nerr_internal attribute_hidden
;
133 libc_hidden_proto (__asprintf
)
135 extern FILE *_IO_new_fopen (const char*, const char*);
136 # define fopen(fname, mode) _IO_new_fopen (fname, mode)
137 extern FILE *_IO_new_fdopen (int, const char*);
138 # define fdopen(fd, mode) _IO_new_fdopen (fd, mode)
139 extern int _IO_new_fclose (FILE*);
140 # define fclose(fp) _IO_new_fclose (fp)
141 extern int _IO_fputs (const char*, FILE*);
142 libc_hidden_proto (_IO_fputs
)
143 /* The compiler may optimize calls to fprintf into calls to fputs.
144 Use libc_hidden_proto to ensure that those calls, not redirected by
145 the fputs macro, also do not go through the PLT. */
146 libc_hidden_proto (fputs
)
147 # define fputs(str, fp) _IO_fputs (str, fp)
148 extern int _IO_new_fsetpos (FILE *, const __fpos_t
*);
149 # define fsetpos(fp, posp) _IO_new_fsetpos (fp, posp)
150 extern int _IO_new_fgetpos (FILE *, __fpos_t
*);
151 # define fgetpos(fp, posp) _IO_new_fgetpos (fp, posp)
154 libc_hidden_proto (dprintf
)
155 extern __typeof (dprintf
) __dprintf
156 __attribute__ ((__format__ (__printf__
, 2, 3)));
157 libc_hidden_proto (__dprintf
)
158 libc_hidden_proto (fprintf
)
159 libc_hidden_proto (vfprintf
)
160 libc_hidden_proto (sprintf
)
161 libc_hidden_proto (sscanf
)
162 libc_hidden_proto (fwrite
)
163 libc_hidden_proto (perror
)
164 libc_hidden_proto (remove
)
165 libc_hidden_proto (rewind
)
166 libc_hidden_proto (fileno
)
167 extern __typeof (fileno
) __fileno
;
168 libc_hidden_proto (__fileno
)
169 libc_hidden_proto (fwrite
)
170 libc_hidden_proto (fseek
)
171 extern __typeof (ftello
) __ftello
;
172 libc_hidden_proto (__ftello
)
173 libc_hidden_proto (fflush
)
174 libc_hidden_proto (fflush_unlocked
)
175 extern __typeof (fflush_unlocked
) __fflush_unlocked
;
176 libc_hidden_proto (__fflush_unlocked
)
177 extern __typeof (fread_unlocked
) __fread_unlocked
;
178 libc_hidden_proto (__fread_unlocked
)
179 libc_hidden_proto (fwrite_unlocked
)
180 libc_hidden_proto (fgets_unlocked
)
181 extern __typeof (fgets_unlocked
) __fgets_unlocked
;
182 libc_hidden_proto (__fgets_unlocked
)
183 libc_hidden_proto (fputs_unlocked
)
184 extern __typeof (fputs_unlocked
) __fputs_unlocked
;
185 libc_hidden_proto (__fputs_unlocked
)
186 libc_hidden_proto (feof_unlocked
)
187 extern __typeof (feof_unlocked
) __feof_unlocked attribute_hidden
;
188 libc_hidden_proto (ferror_unlocked
)
189 extern __typeof (ferror_unlocked
) __ferror_unlocked attribute_hidden
;
190 libc_hidden_proto (getc_unlocked
)
191 libc_hidden_proto (fputc_unlocked
)
192 libc_hidden_proto (putc_unlocked
)
193 extern __typeof (putc_unlocked
) __putc_unlocked attribute_hidden
;
194 libc_hidden_proto (fmemopen
)
195 /* The prototype needs repeating instead of using __typeof to use
196 __THROW in C++ tests. */
197 extern FILE *__open_memstream (char **, size_t *) __THROW __wur
;
198 libc_hidden_proto (__open_memstream
)
199 libc_hidden_proto (__libc_fatal
)
200 rtld_hidden_proto (__libc_fatal
)
201 libc_hidden_proto (__vsprintf_chk
)
202 libc_hidden_proto (__vsnprintf_chk
)
203 libc_hidden_proto (__vfprintf_chk
)
204 libc_hidden_proto (__vasprintf_chk
)
205 libc_hidden_proto (__vdprintf_chk
)
206 libc_hidden_proto (__obstack_vprintf_chk
)
208 extern FILE * __fmemopen (void *buf
, size_t len
, const char *mode
);
209 libc_hidden_proto (__fmemopen
)
211 extern int __gen_tempfd (int flags
);
212 libc_hidden_proto (__gen_tempfd
)
214 # ifdef __USE_EXTERN_INLINES
216 __NTH (__feof_unlocked (FILE *__stream
))
218 return __feof_unlocked_body (__stream
);
222 __NTH (__ferror_unlocked (FILE *__stream
))
224 return __ferror_unlocked_body (__stream
);
228 __getc_unlocked (FILE *__fp
)
230 return __getc_unlocked_body (__fp
);
234 __putc_unlocked (int __c
, FILE *__stream
)
236 return __putc_unlocked_body (__c
, __stream
);
240 # endif /* not _ISOMAC */