stdio.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* University Copyright- Copyright (c) 1982, 1986, 1988
* The Regents of the University of California
* All Rights Reserved
*
* University Acknowledgment- Portions of this document are derived from
* software developed by the University of California, Berkeley, and its
* contributors.
*/
/*
* User-visible pieces of the ANSI C standard I/O package.
*/
#ifndef _STDIO_H
#define _STDIO_H
#pragma ident "%Z%%M% %I% %E% SMI"
#include <sys/feature_tests.h>
#include <sys/va_list.h>
#include <stdio_tag.h>
#include <stdio_impl.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef BSD
#define BSD
#endif
#ifndef _SIZE_T
#define _SIZE_T
#if !defined(_LP64) && defined(__cplusplus)
typedef unsigned int size_t;
#else
typedef unsigned long size_t;
#endif
#endif
#ifndef _SSIZE_T
#define _SSIZE_T
#if !defined(_LP64) && defined(__cplusplus)
typedef int ssize_t;
#else
typedef long ssize_t;
#endif
#endif
typedef long fpos_t;
#ifndef NULL
#define NULL 0
#endif
#if defined(__STDC__)
#if #machine(pdp11)
#define BUFSIZ 512
#define _STDIO_REVERSE
#elif #machine(u370)
#define BUFSIZ 4096
#define _STDIO_REVERSE
#define _STDIO_ALLOCATE
#else
#define BUFSIZ 1024
#endif
#else /* !defined(__STDC__) */
#if pdp11 || u370
#if pdp11
#define BUFSIZ 512
#define _STDIO_REVERSE
#else /* u370 */
#define BUFSIZ 4096
#define _STDIO_REVERSE
#define _STDIO_ALLOCATE
#endif
#else
#define BUFSIZ 1024
#endif
#endif /* __STDC__ */
#if defined(__i386)
#define _NFILE 60 /* initial number of streams: Intel x86 ABI */
#else
#define _NFILE 20 /* initial number of streams: SPARC ABI and default */
#endif
#define _SBFSIZ 8 /* compatibility with shared libs */
#define _IOFBF 0000 /* full buffered */
#define _IOLBF 0100 /* line buffered */
#define _IONBF 0004 /* not buffered */
#define _IOEOF 0020 /* EOF reached on read */
#define _IOERR 0040 /* I/O error from system */
#define _IOREAD 0001 /* currently reading */
#define _IOWRT 0002 /* currently writing */
#define _IORW 0200 /* opened for reading and writing */
#define _IOMYBUF 0010 /* stdio malloc()'d buffer */
#ifndef EOF
#define EOF (-1)
#endif
#define FOPEN_MAX _NFILE
#define FILENAME_MAX 1024 /* max # of characters in a path name */
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
#define TMP_MAX 17576 /* 26 * 26 * 26 */
#if !defined(_STRICT_STDC) || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
#define L_ctermid 9
#define L_cuserid 9
#define P_tmpdir "/var/tmp/"
#endif
#define L_tmpnam 25 /* (sizeof(P_tmpdir) + 15) */
#if defined(__STDC__)
#define stdin (&__iob[0])
#define stdout (&__iob[1])
#define stderr (&__iob[2])
#else
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
#endif
#ifndef _FILEDEFED
#define _FILEDEFED
typedef __FILE FILE;
#endif
#if defined(__STDC__)
extern FILE __iob[_NFILE];
#else
extern FILE _iob[_NFILE];
#endif
extern FILE *_lastbuf;
extern unsigned char *_bufendtab[];
#ifndef _STDIO_ALLOCATE
extern unsigned char _sibuf[], _sobuf[];
#endif
/* Large file interfaces */
/* transition back from explicit 64-bit offset to implicit (64-bit) offset */
#if defined(_LP64) && defined(_LARGEFILE64_SOURCE)
#ifdef __PRAGMA_REDEFINE_EXTNAME
#pragma redefine_extname fopen64 fopen
#pragma redefine_extname freopen64 freopen
#else
#define fopen64 fopen
#define freopen64 freopen
#endif
#endif
/* transition from 32-bit offset to explicit 64-bit offset */
#if !defined(_LP64) && (_FILE_OFFSET_BITS == 64)
#ifdef __PRAGMA_REDEFINE_EXTNAME
#pragma redefine_extname fopen fopen64
#pragma redefine_extname freopen freopen64
#else
#define fopen fopen64
#define freopen freopen64
#endif
#endif
#if defined(__STDC__)
extern int remove(const char *);
extern int rename(const char *, const char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern void setbuffer(FILE *, char *, int);
extern int setlinebuf(FILE *);
extern int setvbuf(FILE *, char *, int, size_t);
/* PRINTFLIKE2 */
extern int fprintf(FILE *, const char *, ...);
/* SCANFLIKE2 */
extern int fscanf(FILE *, const char *, ...);
/* PRINTFLIKE1 */
extern int printf(const char *, ...);
/* SCANFLIKE1 */
extern int scanf(const char *, ...);
/* PRINTFLIKE2 */
extern char *sprintf(const char *, const char *, ...);
/* SCANFLIKE2 */
extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, __va_list);
extern int vprintf(const char *, __va_list);
extern char *vsprintf(char *, char *, __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);
extern int getc(FILE *);
extern int getchar(void);
extern char *gets(char *);
extern int putc(int, FILE *);
extern int putchar(int);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);
extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);
extern void perror(const char *);
extern int __filbuf(FILE *);
extern int __flsbuf(int, FILE *);
#if !defined(_STRICT_STDC) || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
/* non-ANSI standard compilation */
extern FILE *fdopen(int, const char *);
extern FILE *popen(const char *, const char *);
extern char *ctermid(char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);
extern int system(const char *);
extern int fileno(FILE *);
#endif /* !defined(_STRICT_STDC) */
#else /* !defined __STDC__ */
#define _bufend(p) _bufendtab[fileno(p)]
#define _bufsiz(p) (_bufend(p) - (p)->_base)
extern FILE *fopen(), *fdopen(), *freopen(), *popen();
extern long ftell();
extern void rewind(), setbuf(), setbuffer();
extern int setlinebuf();
extern char *ctermid(), *cuserid(), *fgets(), *gets(), *sprintf(),
*vsprintf();
extern int fclose(), fflush(), fread(), fwrite(), fseek(), fgetc(),
getw(), pclose(), printf(), fprintf(),
vprintf(), vfprintf(), fputc(), putw(),
puts(), fputs(), scanf(), fscanf(), sscanf(),
setvbuf(), system(), ungetc();
extern int fileno();
extern int getc(), getchar(), putc(), putchar(), feof(), ferror();
extern void clearerr();
#endif /* __STDC__ */
#ifndef __lint
#ifndef _LP64
#ifdef __STDC__
#define getc(p) (--(p)->_cnt < 0 ? __filbuf(p) : (int)*(p)->_ptr++)
#define putc(x, p) (--(p)->_cnt < 0 ? __flsbuf((x), (p)) \
: (int)(*(p)->_ptr++ = (x)))
#else /* __STDC__ */
#define getc(p) (--(p)->_cnt < 0 ? _filbuf(p) : (int)*(p)->_ptr++)
#define putc(x, p) (--(p)->_cnt < 0 ? \
_flsbuf((unsigned char) (x), (p)) : \
(int)(*(p)->_ptr++ = (unsigned char)(x)))
#endif /* __STDC__ */
#define clearerr(p) ((void) ((p)->_flag &= ~(_IOERR | _IOEOF)))
#define feof(p) ((p)->_flag & _IOEOF)
#define ferror(p) ((p)->_flag & _IOERR)
#endif /* _LP64 */
#define getchar() getc(stdin)
#define putchar(x) putc((x), stdout)
#endif /* __lint */
#if defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
!defined(__PRAGMA_REDEFINE_EXTNAME))
#if defined(__STDC__)
extern FILE *fopen64(const char *, const char *);
extern FILE *freopen64(const char *, const char *, FILE *);
#else
extern FILE *fopen64(), *freopen64();
#endif
#endif /* _LARGEFILE64_SOURCE... */
#ifdef __cplusplus
}
#endif
#endif /* _STDIO_H */