Add the source code for /usr/src/usr.bin from the Net/2 tape
[unix-history] / usr / src / include / stdio.h
index 130606f..5489652 100644 (file)
@@ -5,9 +5,35 @@
  * This code is derived from software contributed to Berkeley by
  * Chris Torek.
  *
  * 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.11 (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_
  */
 
 #ifndef        _STDIO_H_
@@ -15,7 +41,7 @@
 
 #include <sys/cdefs.h>
 
 
 #include <sys/cdefs.h>
 
-#include <machine/types.h>
+#include <machine/ansi.h>
 #ifdef _SIZE_T_
 typedef        _SIZE_T_        size_t;
 #undef _SIZE_T_
 #ifdef _SIZE_T_
 typedef        _SIZE_T_        size_t;
 #undef _SIZE_T_
@@ -98,7 +124,9 @@ typedef      struct __sFILE {
        int     _offset;        /* current lseek offset */
 } FILE;
 
        int     _offset;        /* current lseek offset */
 } FILE;
 
+__BEGIN_DECLS
 extern FILE __sF[];
 extern FILE __sF[];
+__END_DECLS
 
 #define        __SLBF  0x0001          /* line buffered */
 #define        __SNBF  0x0002          /* unbuffered */
 
 #define        __SLBF  0x0001          /* line buffered */
 #define        __SNBF  0x0002          /* unbuffered */
@@ -142,7 +170,7 @@ extern FILE __sF[];
 
 /* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
 #ifndef _ANSI_SOURCE
 
 /* 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
 #endif
 #define        L_tmpnam        1024    /* XXX must be == PATH_MAX */
 #define        TMP_MAX         308915776
@@ -187,6 +215,10 @@ int         fwrite __P((const void *, size_t, size_t, FILE *));
 int     getc __P((FILE *));
 int     getchar __P((void));
 char   *gets __P((char *));
 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 *));
 void    perror __P((const char *));
 int     printf __P((const char *, ...));
 int     putc __P((int, FILE *));
@@ -235,10 +267,20 @@ FILE      *popen __P((const char *, const char *));
 int     putw __P((int, FILE *));
 void    setbuffer __P((FILE *, char *, int));
 int     setlinebuf __P((FILE *));
 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     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
 
 __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.
  */
 /*
  * Stdio function-access interface.
  */
@@ -251,21 +293,24 @@ FILE      *funopen __P((const void *,
 __END_DECLS
 #define        fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
 #define        fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
 __END_DECLS
 #define        fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
 #define        fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
-#endif /* neither ANSI nor POSIX */
+#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
 
 /*
  * Functions internal to the implementation.
  */
 
 /*
  * Functions internal to the implementation.
  */
+__BEGIN_DECLS
 int    __srget __P((FILE *));
 int    __srget __P((FILE *));
+int    __svfscanf __P((FILE *, const char *, _VA_LIST_));
 int    __swbuf __P((int, FILE *));
 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++))
 
 /*
  * 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
        if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
                return (*_p->_p++ = _c);
        else