home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.13 / usr / include / stdio.h < prev   
C/C++ Source or Header  |  1998-08-19  |  10KB  |  360 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef _STDIO_H
  12. #define _STDIO_H
  13. #ident    "@(#)sgs-head:i386/head/stdio.h    2.34.7.27"
  14.  
  15. #if defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE) \
  16.     || defined(_FILE_OFFSET_BITS) \
  17.     || __STDC__ - 0 == 0 && !defined(_XOPEN_SOURCE) \
  18.         && !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
  19. #include <sys/types.h>
  20. typedef long        fpos32_t;
  21. typedef long long    fpos64_t;
  22. #endif
  23.  
  24. #ifndef _FILE_OFFSET_BITS
  25. typedef long        fpos_t;
  26. #elif _FILE_OFFSET_BITS - 0 == 32
  27. typedef fpos32_t    fpos_t;
  28. #elif _FILE_OFFSET_BITS - 0 == 64
  29. typedef fpos64_t    fpos_t;
  30. #else
  31. #error "_FILE_OFFSET_BITS, if defined, must be 32 or 64"
  32. #endif
  33.  
  34. #ifndef _SIZE_T
  35. #   define _SIZE_T
  36.     typedef unsigned int    size_t;
  37. #endif
  38.  
  39. #ifndef NULL
  40. #   define NULL    0
  41. #endif
  42.  
  43. #ifndef EOF
  44. #   define EOF    (-1)
  45. #endif
  46.  
  47. #define SEEK_SET    0
  48. #define SEEK_CUR    1
  49. #define SEEK_END    2
  50.  
  51. #define TMP_MAX        17576    /* 26 * 26 * 26 */
  52.  
  53. #define BUFSIZ        1024    /* default buffer size */
  54. #define FOPEN_MAX    60    /* at least this many FILEs available */
  55. #define FILENAME_MAX    1024    /* max # of characters in a path name */
  56.  
  57. #define _IOFBF        0000    /* full buffered */
  58. #define _IOLBF        0100    /* line buffered */
  59. #define _IONBF        0004    /* not buffered */
  60. #define _IOEOF        0020    /* EOF reached on read */
  61. #define _IOERR        0040    /* I/O error from system */
  62.  
  63. #define _IOREAD        0001    /* currently reading */
  64. #define _IOWRT        0002    /* currently writing */
  65. #define _IORW        0200    /* opened for reading and writing */
  66. #define _IOMYBUF    0010    /* stdio malloc()'d buffer */
  67.  
  68. #if __STDC__ - 0 == 0 || defined(_XOPEN_SOURCE) \
  69.     || defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE)
  70. #   define L_ctermid    9
  71. #   define L_cuserid    9
  72. #endif
  73.  
  74. #if defined(_XOPEN_SOURCE) || (__STDC__ - 0 == 0 \
  75.     && !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE))
  76. #   define P_tmpdir    "/var/tmp/"
  77. #endif
  78.  
  79. #define L_tmpnam    25    /* (sizeof(P_tmpdir) + 15) */
  80.  
  81. typedef struct _FILE_
  82. {
  83.     int        __cnt;        /* num. avail. characters in buffer */
  84.     unsigned char    *__ptr;        /* next character from/to here */
  85.     unsigned char    *__base;    /* the buffer (not really) */
  86.     unsigned char    __flag;        /* the state of the stream */
  87.     unsigned char    __file;        /* file descriptor (not necessarily) */
  88.     unsigned char    __buf[2];    /* micro buffer as a fall-back */
  89. } FILE;
  90.  
  91. #ifndef _VA_LIST
  92. #   if #machine(i860)
  93.     struct _va_list
  94.     {
  95.         unsigned    _ireg_used;
  96.         unsigned    _freg_used;
  97.         long        *_reg_base;
  98.         long        *_mem_ptr;
  99.     };
  100. #    define _VA_LIST struct _va_list
  101. #   else
  102. #    define _VA_LIST void *
  103. #   endif
  104. #endif
  105.  
  106. #if defined(_XOPEN_SOURCE) && !defined(__VA_LIST)
  107. #   define __VA_LIST
  108.     typedef _VA_LIST    va_list;
  109. #endif
  110.  
  111. #define stdin    (&__iob[0])
  112. #define stdout    (&__iob[1])
  113. #define stderr    (&__iob[2])
  114.  
  115. #ifdef __cplusplus
  116. extern "C" {
  117. #endif
  118.  
  119. extern FILE    __iob[];
  120.  
  121. extern int    remove(const char *);
  122. extern int    rename(const char *, const char *);
  123. extern FILE    *tmpfile(void);
  124. extern char    *tmpnam(char *);
  125. extern int    fclose(FILE *);
  126. extern int    fflush(FILE *);
  127. extern FILE    *fopen(const char *, const char *);
  128. extern FILE    *freopen(const char *, const char *, FILE *);
  129. extern void    setbuf(FILE *, char *);
  130. extern int    setvbuf(FILE *, char *, int, size_t);
  131.         /*PRINTFLIKE2*/
  132. extern int    fprintf(FILE *, const char *, ...);
  133.         /*SCANFLIKE2*/
  134. extern int    fscanf(FILE *, const char *, ...);
  135.         /*PRINTFLIKE1*/
  136. extern int    printf(const char *, ...);
  137.         /*SCANFLIKE1*/
  138. extern int    scanf(const char *, ...);
  139.         /*PRINTFLIKE2*/
  140. extern int    sprintf(char *, const char *, ...);
  141.         /*SCANFLIKE2*/
  142. extern int    sscanf(const char *, const char *, ...);
  143. extern int    vfprintf(FILE *, const char *, _VA_LIST);
  144. extern int    vprintf(const char *, _VA_LIST);
  145. extern int    vsprintf(char *, const char *, _VA_LIST);
  146. extern int    fgetc(FILE *);
  147. extern char    *fgets(char *, int, FILE *);
  148. extern int    fputc(int, FILE *);
  149. extern int    fputs(const char *, FILE *);
  150. extern int    getc(FILE *);
  151. extern int    getchar(void);
  152. extern char    *gets(char *);
  153. extern int    putc(int, FILE *);
  154. extern int    putchar(int);
  155. extern int    puts(const char *);
  156. extern int    ungetc(int, FILE *);
  157. extern size_t    fread(void *, size_t, size_t, FILE *);
  158. extern size_t    fwrite(const void *, size_t, size_t, FILE *);
  159. extern int    fgetpos(FILE *, fpos_t *);
  160. extern int    fseek(FILE *, long, int);
  161. extern int    fsetpos(FILE *, const fpos_t *);
  162. extern long    ftell(FILE *);
  163. extern void    rewind(FILE *);
  164. extern void    clearerr(FILE *);
  165. extern int    feof(FILE *);
  166. extern int    ferror(FILE *);
  167. extern void    perror(const char *);
  168.  
  169. extern int    __filbuf(FILE *);
  170. extern int    __flsbuf(int, FILE *);
  171.  
  172. #ifndef __cplusplus
  173.     #pragma int_to_unsigned fread
  174.     #pragma int_to_unsigned fwrite
  175. #endif
  176.  
  177. #if !#lint(on)
  178.  
  179. #ifndef _REENTRANT
  180. #   define getc(p)    (--((FILE *)(p))->__cnt < 0 ? __filbuf(p) \
  181.                 : (int)*((FILE *)(p))->__ptr++)
  182. #   define putc(x, p)    (--((FILE *)(p))->__cnt < 0 ? __flsbuf(x, p) \
  183.                 : (int)(*((FILE *)(p))->__ptr++ = (x)))
  184. #endif
  185.  
  186. #define getchar()    getc(stdin)
  187. #define putchar(x)    putc((x), stdout)
  188.  
  189. #ifdef __cplusplus
  190. #define feof(p)   ((p)->__flag & _IOEOF)
  191. #define ferror(p) ((p)->__flag & _IOERR)
  192. #else /* use sizeof and cast to make these act more like C functions */
  193. #define feof(p)   ((void)sizeof(__filbuf(p)), ((FILE *)(p))->__flag & _IOEOF)
  194. #define ferror(p) ((void)sizeof(__filbuf(p)), ((FILE *)(p))->__flag & _IOERR)
  195. #endif /*__cplusplus*/
  196.  
  197. #endif /*#lint(on)*/
  198.  
  199. #if __STDC__ - 0 == 0 || defined(_XOPEN_SOURCE) \
  200.     || defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE)
  201. extern char    *ctermid(char *);
  202. extern FILE    *fdopen(int, const char *);
  203. extern int    fileno(FILE *);
  204. #endif
  205.  
  206. #if defined(_XOPEN_SOURCE) || (__STDC__ - 0 == 0 \
  207.     && !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE))
  208. extern FILE    *popen(const char *, const char *);
  209. extern char    *cuserid(char *);
  210. extern char    *tempnam(const char *, const char *);
  211. extern char    *optarg;
  212. extern int    optind, opterr, optopt;
  213. extern int    getopt(int, char *const *, const char *);
  214. extern int    getw(FILE *);
  215. extern int    putw(int, FILE *);
  216. extern int    pclose(FILE *);
  217. #endif
  218.  
  219. #ifdef _REENTRANT
  220.  
  221. extern int    getc_unlocked(FILE *);
  222. extern int    getchar_unlocked(void);
  223. extern int    putc_unlocked(int, FILE *);
  224. extern int    putchar_unlocked(int);
  225.  
  226. #if !#lint(on)
  227. #   define getc_unlocked(p)    (--((FILE *)(p))->__cnt < 0 ? __filbuf(p) \
  228.                     : (int)*((FILE *)(p))->__ptr++)
  229. #   define putc_unlocked(x, p)    (--((FILE *)(p))->__cnt < 0 ? __flsbuf(x, p) \
  230.                     : (int)(*((FILE *)(p))->__ptr++ = (x)))
  231. #   define getchar_unlocked()    getc_unlocked(stdin)
  232. #   define putchar_unlocked(x)    putc_unlocked((x), stdout)
  233. #endif
  234.  
  235. extern void    flockfile(FILE *);
  236. extern int    ftrylockfile(FILE *);
  237. extern void    funlockfile(FILE *);
  238.  
  239. #endif /*_REENTRANT*/
  240.  
  241. #if defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE) \
  242.     || defined(_FILE_OFFSET_BITS) \
  243.     || __STDC__ - 0 == 0 && !defined(_XOPEN_SOURCE) \
  244.         && !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
  245.  
  246. extern int    fseeko(FILE *, n_off_t, int);
  247. extern n_off_t    ftello(FILE *);
  248.  
  249. extern int    fgetpos32(FILE *, fpos32_t *);
  250. extern FILE    *fopen32(const char *, const char *);
  251. extern FILE    *freopen32(const char *, const char *, FILE *);
  252. extern int    fseeko32(FILE *, off32_t, int);
  253. extern int    fsetpos32(FILE *, const fpos32_t *);
  254. extern off32_t    ftello32(FILE *);
  255. extern FILE    *tmpfile32(void);
  256.  
  257. extern int    fgetpos64(FILE *, fpos64_t *);
  258. extern FILE    *fopen64(const char *, const char *);
  259. extern FILE    *freopen64(const char *, const char *, FILE *);
  260. extern int    fseeko64(FILE *, off64_t, int);
  261. extern int    fsetpos64(FILE *, const fpos64_t *);
  262. extern off64_t    ftello64(FILE *);
  263. extern FILE    *tmpfile64(void);
  264.  
  265. #if _FILE_OFFSET_BITS - 0 == 32
  266.  
  267. #undef fgetpos
  268. #define fgetpos    fgetpos32
  269. #undef fopen
  270. #define fopen    fopen32
  271. #undef freopen
  272. #define freopen    freopen32
  273. #undef fseeko
  274. #define fseeko    fseeko32
  275. #undef fsetpos
  276. #define fsetpos    fsetpos32
  277. #undef ftello
  278. #define ftello    ftello32
  279. #undef tmpfile
  280. #define tmpfile    tmpfile32
  281.  
  282. #elif _FILE_OFFSET_BITS - 0 == 64
  283.  
  284. #undef fgetpos
  285. #define fgetpos    fgetpos64
  286. #undef fopen
  287. #define fopen    fopen64
  288. #undef freopen
  289. #define freopen    freopen64
  290. #undef fseeko
  291. #define fseeko    fseeko64
  292. #undef fsetpos
  293. #define fsetpos    fsetpos64
  294. #undef ftello
  295. #define ftello    ftello64
  296. #undef tmpfile
  297. #define tmpfile    tmpfile64
  298.  
  299. #endif /*_FILE_OFFSET_BITS*/
  300.  
  301. #endif /*defined(_LARGEFILE_SOURCE) || ...*/
  302.  
  303. #if __STDC__ - 0 == 0 && !defined(_XOPEN_SOURCE) \
  304.     && !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
  305.  
  306. #ifndef _WCHAR_T
  307. #   define _WCHAR_T
  308.     typedef long    wchar_t;
  309. #endif
  310.  
  311. #ifndef _WINT_T
  312. #   define _WINT_T
  313.     typedef long    wint_t;
  314. #endif
  315.  
  316. extern int    system(const char *);
  317. extern int    fwide(FILE *, int);
  318. extern wint_t    fgetwc(FILE *);
  319. extern wchar_t    *fgetws(wchar_t *, int, FILE *);
  320. extern wint_t    fputwc(wint_t, FILE *);
  321. extern int    fputws(const wchar_t *, FILE *);
  322. extern wint_t    getwc(FILE *);
  323. extern wint_t    getwchar(void);
  324. extern wint_t    putwc(wint_t, FILE *);
  325. extern wint_t    putwchar(wint_t);
  326. extern wint_t    ungetwc(wint_t, FILE *);
  327.         /*WPRINTFLIKE2*/
  328. extern int    fwprintf(FILE *, const wchar_t *, ...);
  329.         /*WSCANFLIKE2*/
  330. extern int    fwscanf(FILE *, const wchar_t *, ...);
  331.         /*WPRINTFLIKE1*/
  332. extern int    wprintf(const wchar_t *, ...);
  333.         /*WSCANFLIKE1*/
  334. extern int    wscanf(const wchar_t *, ...);
  335.         /*WPRINTFLIKE3*/
  336. extern int    swprintf(wchar_t *, size_t, const wchar_t *, ...);
  337.         /*WSCANFLIKE2*/
  338. extern int    swscanf(const wchar_t *, const wchar_t *, ...);
  339. extern int    vfwprintf(FILE *, const wchar_t *, _VA_LIST);
  340. extern int    vfwscanf(FILE *, const wchar_t *, _VA_LIST);
  341. extern int    vwprintf(const wchar_t *, _VA_LIST);
  342. extern int    vwscanf(const wchar_t *, _VA_LIST);
  343. extern int    vswprintf(wchar_t *, size_t, const wchar_t *, _VA_LIST);
  344. extern int    vswscanf(const wchar_t *, const wchar_t *, _VA_LIST);
  345. extern void    funflush(FILE *);
  346.         /*PRINTFLIKE3*/
  347. extern int    snprintf(char *, size_t, const char *, ...);
  348. extern int    vsnprintf(char *, size_t, const char *, _VA_LIST);
  349. extern int    vfscanf(FILE *, const char *, _VA_LIST);
  350. extern int    vscanf(const char *, _VA_LIST);
  351. extern int    vsscanf(const char *, const char *, _VA_LIST);
  352.  
  353. #endif /*__STDC__ - 0 == 0 && ...*/
  354.  
  355. #ifdef __cplusplus
  356. }
  357. #endif
  358.  
  359. #endif /*_STDIO_H*/
  360.