* This code is derived from software contributed to Berkeley by
* Chris Torek.
*
- * %sccs.include.redist.c%
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
*
- * @(#)stdio.h 5.9 (Berkeley) %G%
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)stdio.h 5.17 (Berkeley) 6/3/91
*/
#ifndef _STDIO_H_
#include <sys/cdefs.h>
-#include <machine/types.h>
+#include <machine/ansi.h>
#ifdef _SIZE_T_
typedef _SIZE_T_ size_t;
#undef _SIZE_T_
/* operations */
void *_cookie; /* cookie passed to io functions */
- int (*_close) __P((void *_cookie));
- int (*_read) __P((void *_cookie, char *_buf, int _n));
- fpos_t (*_seek) __P((void *_cookie, fpos_t _offset, int _whence));
- int (*_write) __P((void *_cookie, const char *_buf, int _n));
+ int (*_close) __P((void *));
+ int (*_read) __P((void *, char *, int));
+ fpos_t (*_seek) __P((void *, fpos_t, int));
+ int (*_write) __P((void *, const char *, int));
/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
int _offset; /* current lseek offset */
} FILE;
+__BEGIN_DECLS
extern FILE __sF[];
+__END_DECLS
#define __SLBF 0x0001 /* line buffered */
#define __SNBF 0x0002 /* unbuffered */
/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
#ifndef _ANSI_SOURCE
-#define P_tmpdir "/usr/tmp/"
+#define P_tmpdir "/var/tmp/"
#endif
#define L_tmpnam 1024 /* XXX must be == PATH_MAX */
#define TMP_MAX 308915776
int fgetc __P((FILE *));
int fgetpos __P((FILE *, fpos_t *));
char *fgets __P((char *, size_t, FILE *));
-FILE *fopen __P((const char *_name, const char *_type));
+FILE *fopen __P((const char *, const char *));
int fprintf __P((FILE *, const char *, ...));
int fputc __P((int, FILE *));
int fputs __P((const char *, FILE *));
-int fread __P((void *, size_t _size, size_t _n, FILE *));
-FILE *freopen __P((const char *_name, const char *_type, FILE *_stream));
+int fread __P((void *, size_t, size_t, FILE *));
+FILE *freopen __P((const char *, const char *, FILE *));
int fscanf __P((FILE *, const char *, ...));
int fseek __P((FILE *, long, int));
int fsetpos __P((FILE *, const fpos_t *));
long ftell __P((const FILE *));
-int fwrite __P((const void *, size_t _size, size_t _n, FILE *));
+int fwrite __P((const void *, size_t, size_t, FILE *));
int getc __P((FILE *));
int getchar __P((void));
char *gets __P((char *));
+#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
+extern int sys_nerr; /* perror(3) external variables */
+extern char *sys_errlist[];
+#endif
void perror __P((const char *));
int printf __P((const char *, ...));
int putc __P((int, FILE *));
int putchar __P((int));
int puts __P((const char *));
int remove __P((const char *));
-int rename __P((const char *_old, const char *_new));
+int rename __P((const char *, const char *));
void rewind __P((FILE *));
int scanf __P((const char *, ...));
void setbuf __P((FILE *, char *));
#define L_ctermid 1024 /* size for ctermid(); PATH_MAX */
__BEGIN_DECLS
+char *ctermid __P((char *));
FILE *fdopen __P((int, const char *));
int fileno __P((FILE *));
__END_DECLS
+#endif /* not ANSI */
/*
* Routines that are purely local.
*/
+#if !defined (_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
__BEGIN_DECLS
char *fgetline __P((FILE *, size_t *));
int fpurge __P((FILE *));
int getw __P((FILE *));
int pclose __P((FILE *));
-FILE *popen __P((const char *_name, const char *_type));
+FILE *popen __P((const char *, const char *));
int putw __P((int, FILE *));
void setbuffer __P((FILE *, char *, int));
int setlinebuf __P((FILE *));
+char *tempnam __P((const char *, const char *));
int snprintf __P((char *, size_t, const char *, ...));
int vsnprintf __P((char *, size_t, const char *, _VA_LIST_));
+int vscanf __P((const char *, _VA_LIST_));
+int vsscanf __P((const char *, const char *, _VA_LIST_));
__END_DECLS
+/*
+ * This is a #define because the function is used internally and
+ * (unlike vfscanf) the name __svfscanf is guaranteed not to collide
+ * with a user function when _ANSI_SOURCE or _POSIX_SOURCE is defined.
+ */
+#define vfscanf __svfscanf
+
/*
* Stdio function-access interface.
*/
__BEGIN_DECLS
-FILE *funopen __P((const void *_cookie,
- int (*readfn)(void *_cookie, char *_buf, int _n),
- int (*writefn)(void *_cookie, const char *_buf, int _n),
- fpos_t (*seekfn)(void *_cookie, fpos_t _off, int _whence),
- int (*closefn)(void *_cookie)));
+FILE *funopen __P((const void *,
+ int (*)(void *, char *, int),
+ int (*)(void *, const char *, int),
+ fpos_t (*)(void *, fpos_t, int),
+ int (*)(void *)));
__END_DECLS
#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
-#endif /* !ANSI_SOURCE */
+#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
/*
* Functions internal to the implementation.
*/
+__BEGIN_DECLS
int __srget __P((FILE *));
+int __svfscanf __P((FILE *, const char *, _VA_LIST_));
int __swbuf __P((int, FILE *));
+__END_DECLS
/*
* The __sfoo macros are here so that we can
* define function versions in the C library.
*/
#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
-#ifdef __GNUC__
-static __inline int __sputc(int _c, FILE *_p) {
+#if defined(__GNUC__) && defined(__STDC__)
+static inline int __sputc(int _c, FILE *_p) {
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
return (*_p->_p++ = _c);
else