home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / h.z / STDIO.H < prev    next >
C/C++ Source or Header  |  1996-11-06  |  13KB  |  336 lines

  1. /*
  2.  *  stdio.h    Standard I/O functions
  3.  *
  4.  *  Copyright by WATCOM International Corp. 1988-1996.  All rights reserved.
  5.  */
  6. #ifndef _STDIO_H_INCLUDED
  7. #define _STDIO_H_INCLUDED
  8. #if !defined(_ENABLE_AUTODEPEND)
  9.   #pragma read_only_file;
  10. #endif
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #ifndef _COMDEF_H_INCLUDED
  16.  #include <_comdef.h>
  17. #endif
  18.  
  19. #if defined(_M_IX86)
  20.   #pragma pack(__push,1);
  21. #else
  22.   #pragma pack(__push,8);
  23. #endif
  24.  
  25. #ifndef _WCHAR_T_DEFINED
  26. #define _WCHAR_T_DEFINED
  27. #define _WCHAR_T_DEFINED_
  28. #ifdef __cplusplus
  29. typedef long char wchar_t;
  30. #else
  31. typedef unsigned short wchar_t;
  32. #endif
  33. #endif
  34.  
  35. #ifndef _WCTYPE_T_DEFINED
  36. #define _WCTYPE_T_DEFINED
  37. #define _WCTYPE_T_DEFINED_
  38. typedef wchar_t wint_t;
  39. typedef wchar_t wctype_t;
  40. #endif
  41.  
  42. #ifndef _SIZE_T_DEFINED
  43. #define _SIZE_T_DEFINED
  44. #define _SIZE_T_DEFINED_
  45. typedef unsigned size_t;
  46. #endif
  47.  
  48. #ifndef NULL
  49.  #if defined(__SMALL__) || defined(__MEDIUM__) || defined(__386__) || defined(__AXP__) || defined(__PPC__)
  50.   #define NULL   0
  51.  #else
  52.   #define NULL   0L
  53.  #endif
  54. #endif
  55.  
  56. #ifndef _VA_LIST_DEFINED
  57. #define _VA_LIST_DEFINED
  58. #if defined(__PPC__)
  59.  #if defined(__NT__)
  60.     typedef char * __va_list;
  61.  #else
  62.     typedef struct {
  63.       char  __gpr;
  64.       char  __fpr;
  65.       char  __reserved[2];
  66.       char *__input_arg_area;
  67.       char *__reg_save_area;
  68.     } __va_list;
  69.   #endif
  70. #elif defined(__AXP__)
  71.   typedef struct {
  72.     char *__base;
  73.     int   __offset;
  74.   } __va_list;
  75. #elif defined(__HUGE__) || defined(__SW_ZU)
  76.   typedef char _WCFAR *__va_list[1];
  77. #else
  78.   typedef char *__va_list[1];
  79. #endif
  80. #endif
  81.  
  82. #if defined(__386__) || defined(__AXP__) || defined(__PPC__)
  83.  #define BUFSIZ     4096
  84. #else
  85.  #define BUFSIZ     512
  86. #endif
  87. #define _NFILES     20    /* number of files that can be handled */
  88. #define FILENAME_MAX    80
  89.  
  90. struct __stream_link;
  91. typedef struct    __iobuf {
  92.     unsigned char     *_ptr;        /* next character position */
  93.     int              _cnt;        /* number of characters left */
  94.     struct __stream_link *_link;     /* location of associated struct */
  95.     unsigned          _flag;    /* mode of file access */
  96.     int              _handle;    /* file handle */
  97.     unsigned          _bufsize;    /* size of buffer */
  98.     unsigned short      _ungotten;    /* used by ungetc and ungetwc */
  99. } FILE;
  100.  
  101. typedef long    fpos_t;
  102.  
  103. #if !defined(NO_EXT_KEYS) /* extensions enabled */
  104.  #define FOPEN_MAX    _NFILES
  105.  #define OPEN_MAX    FOPEN_MAX
  106.  #if defined(__OS2__) || defined(__NT__)
  107.   #define PATH_MAX    259 /* maximum length of full pathname excl. '\0' */
  108.  #else
  109.   #define PATH_MAX    143 /* maximum length of full pathname excl. '\0' */
  110.  #endif
  111. #else            /* extensions not enabled */
  112.  #define FOPEN_MAX    (_NFILES-2)
  113. #endif
  114.  
  115. #if defined(__FUNCTION_DATA_ACCESS)
  116.  #define __iob (*__get_iob_ptr())
  117. #elif defined(__SW_BR) || defined(_RTDLL) 
  118.  #define __iob __iob_br
  119. #endif
  120. _WCRTLINK extern FILE _WCDATA __iob[];
  121. /*
  122.  *  Define macros to access the three default file pointer (and descriptors)
  123.  *  provided to each process by default.  They will always occupy the
  124.  *  first three file pointers in each processes' table.
  125.  */
  126. #define stdin    ((FILE *)&__iob[0])    /* standard input file    */
  127. #define stdout    ((FILE *)&__iob[1])    /* standard output file */
  128. #define stderr    ((FILE *)&__iob[2])    /* standard error file    */
  129. #ifndef NO_EXT_KEYS    /* extensions enabled */
  130. #if !defined(__NT__)
  131. #define stdaux    ((FILE *)&__iob[3])    /* standard auxiliary file  */
  132. #define stdprn    ((FILE *)&__iob[4])    /* standard printer file  */
  133. #endif
  134. #endif
  135.  
  136. /* values for _flag field in FILE struct and _iomode array */
  137.  
  138. #define _READ    0x0001    /* file opened for reading */
  139. #define _WRITE    0x0002    /* file opened for writing */
  140. #define _UNGET    0x0004    /* ungetc has been done */
  141. #define _BIGBUF 0x0008    /* big buffer allocated */
  142. #define _EOF    0x0010    /* EOF has occurred */
  143. #define _SFERR    0x0020    /* error has occurred on this file */
  144. #define _APPEND 0x0080    /* file opened for append */
  145. #define _BINARY 0x0040    /* file is binary, skip CRLF processing */
  146. #define _IOFBF    0x0100    /* full buffering */
  147. #define _IOLBF    0x0200    /* line buffering */
  148. #define _IONBF    0x0400    /* no buffering */
  149. #define _TMPFIL 0x0800    /* this is a temporary file */
  150. #define _DIRTY    0x1000    /* buffer has been modified */
  151. #define _ISTTY    0x2000    /* is console device */
  152. #define _DYNAMIC 0x4000 /* FILE is dynamically allocated   */
  153. #define _FILEEXT 0x8000 /* lseek with positive offset has been done */
  154. #define _COMMIT 0x0001    /* extended flag: commit OS buffers on flush */
  155.  
  156. #define EOF        (-1)        /*  End of File/Error return code   */
  157. #define WEOF        ((wint_t)(-1))    /*  EOF equivalent for wide chars   */
  158.  
  159. #define SEEK_SET    0            /*  Seek relative to start of file  */
  160. #define SEEK_CUR    1            /*  Seek relative to current positn */
  161. #define SEEK_END    2            /*  Seek relative to end of file    */
  162.  
  163. #define _NOT_ORIENTED    0        /* stream not yet oriented */
  164. #define _BYTE_ORIENTED    1        /* byte-oriented stream */
  165. #define _WIDE_ORIENTED    2        /* wide-oriented stream */
  166.  
  167. #define L_tmpnam    13
  168. #define _P_tmpdir   "\\"        /* used by _tempnam */
  169. #define _wP_tmpdir  L"\\"        /* used by _wtempnam */
  170. #define TMP_MAX     (26*26*26)        /*  Max times tmpnam can be called  */
  171.  
  172. _WCRTLINK extern void    clearerr( FILE *__fp );
  173. _WCRTLINK extern int    fclose( FILE *__fp );
  174. _WCRTLINK extern int    feof( FILE *__fp );
  175. _WCRTLINK extern int    ferror( FILE *__fp );
  176. _WCRTLINK extern int    fflush( FILE *__fp );
  177. _WCRTLINK extern int    fgetc( FILE *__fp );
  178. _WCRTLINK extern int    fgetpos( FILE *__fp, fpos_t *__pos );
  179. _WCRTLINK extern char    *fgets( char *__s, int __n, FILE *__fp );
  180. _WCRTLINK extern FILE    *fopen( const char *__filename, const char *__mode );
  181. _WCRTLINK extern int    fprintf( FILE *__fp, const char *__format, ... );
  182. _WCRTLINK extern int    fputc( int __c, FILE *__fp );
  183. _WCRTLINK extern int    fputs( const char *__s, FILE *__fp );
  184. _WCRTLINK extern size_t    fread( void *__ptr, size_t __size, size_t __n, 
  185.                    FILE *__fp );
  186. _WCRTLINK extern FILE    *freopen( const char *__filename, const char *__mode, 
  187.                   FILE *__fp );
  188. _WCRTLINK extern int    fscanf( FILE*__fp, const char *__format, ... );
  189. _WCRTLINK extern int    fseek( FILE *__fp, long int __offset, int __whence );
  190. _WCRTLINK extern int    fsetpos( FILE *__fp, const fpos_t *__pos );
  191. _WCRTLINK extern long int ftell( FILE *__fp );
  192. _WCRTLINK extern size_t    fwrite( const void *__ptr, size_t __size, size_t __n, 
  193.                     FILE *__fp );
  194. _WCRTLINK extern int    getc( FILE *__fp );
  195. _WCRTLINK extern int    getchar( void );
  196. _WCRTLINK extern int    _getw( FILE *__fp );
  197. _WCRTLINK extern char    *gets( char *__s );
  198. _WCRTLINK extern void    perror( const char *__s );
  199. _WCRTLINK extern FILE *    _popen( const char *__command, const char *__mode );
  200. _WCRTLINK extern int    _pclose( FILE *__fp );
  201. _WCRTLINK extern int    printf( const char *__format, ... );
  202. _WCRTLINK extern int    putc( int __c, FILE *__fp );
  203. _WCRTLINK extern int    putchar( int __c );
  204. _WCRTLINK extern int    _putw( int __binint, FILE *__fp );
  205. _WCRTLINK extern int    puts( const char *__s );
  206. _WCRTLINK extern int    remove( const char *__filename );
  207. _WCRTLINK extern int    rename( const char *__old, const char *__new );
  208. _WCRTLINK extern void    rewind( FILE *__fp );
  209. _WCRTLINK extern int    scanf( const char *__format, ... );
  210. _WCRTLINK extern void    setbuf( FILE *__fp, char *__buf );
  211. _WCRTLINK extern int    setvbuf( FILE *__fp, char *__buf, int __mode, 
  212.                  size_t __size );
  213. _WCRTLINK extern int    sprintf( char *__s, const char *__format, ... );
  214. _WCRTLINK extern int    sscanf( const char *__s, const char *__format, ... );
  215. _WCRTLINK extern char *    _tempnam( char *__dir, char *__prefix );
  216. _WCRTLINK extern FILE    *tmpfile( void );
  217. _WCRTLINK extern char    *tmpnam( char *__s );
  218. _WCRTLINK extern int    ungetc( int __c, FILE *__fp );
  219. _WCRTLINK extern int    vfprintf( FILE *__fp, const char *__format, 
  220.                   __va_list __arg );
  221. _WCRTLINK extern int    vprintf( const char *__format, __va_list __arg );
  222. _WCRTLINK extern int    vsprintf( char *__s, const char *__format, 
  223.                   __va_list __arg );
  224.  
  225. #if !defined(NO_EXT_KEYS) /* extensions enabled */
  226. _WCRTLINK extern int    fcloseall( void );
  227. _WCRTLINK extern FILE    *fdopen( int __handle, const char *__mode );
  228. _WCRTLINK extern FILE    *_fdopen( int __handle, const char *__mode );
  229. _WCRTLINK extern int    _grow_handles( int __new_count );
  230. _WCRTLINK extern int    _fgetchar( void );
  231. _WCRTLINK extern int    fgetchar( void );
  232. _WCRTLINK extern int    _fputchar( int __c );
  233. _WCRTLINK extern int    fputchar( int __c );
  234. _WCRTLINK extern FILE    *_fsopen( const char *__filename, const char *__mode, 
  235.                   int __shflag );
  236. _WCRTLINK extern int    flushall( void );
  237. _WCRTLINK extern int    vfscanf( FILE *__fp, const char *__format, 
  238.                  __va_list __arg );
  239. _WCRTLINK extern int    vscanf( const char *__format, __va_list __arg );
  240. _WCRTLINK extern int    vsscanf( const char *__s, const char *__format, 
  241.                  __va_list __arg );
  242. _WCRTLINK extern int    _bprintf( char *__buf, size_t __bufsize, 
  243.                   const char *__fmt, ... );
  244. _WCRTLINK extern int    _snprintf( char *__buf, size_t __bufsize, 
  245.                    const char *__fmt, ... );
  246. _WCRTLINK extern int    _vbprintf( char *__s, size_t __bufsize, 
  247.                    const char *__format, __va_list __arg );
  248. _WCRTLINK extern int    _vsnprintf( char *__s, size_t __bufsize, 
  249.                     const char *__format, __va_list __arg );
  250.  
  251. _WCRTLINK extern FILE    *_wfopen( const wchar_t *, const wchar_t * );
  252. _WCRTLINK extern int    fwprintf( FILE *, const wchar_t *, ... );
  253. _WCRTLINK extern int    fputws( const wchar_t *, FILE * );
  254. _WCRTLINK extern FILE    *_wfsopen( const wchar_t *__filename,
  255.                    const wchar_t *__mode,  int __shflag );
  256. _WCRTLINK extern FILE    *_wfdopen( int, const wchar_t * );
  257. _WCRTLINK extern FILE    *_wfreopen( const wchar_t *, const wchar_t *, FILE * );
  258. _WCRTLINK extern wint_t    putwc( wint_t, FILE * );
  259. _WCRTLINK extern wint_t    fputwc( wint_t, FILE * );
  260. _WCRTLINK extern wint_t    getwc( FILE * );
  261. _WCRTLINK extern wint_t    fgetwc( FILE * );
  262. _WCRTLINK extern wint_t    ungetwc( wint_t, FILE * );
  263. _WCRTLINK extern int    fwscanf( FILE *, const wchar_t *, ... );
  264. _WCRTLINK extern wchar_t *fgetws( wchar_t *, int, FILE * );
  265. _WCRTLINK extern int    vfwprintf( FILE *, const wchar_t *, __va_list );
  266. _WCRTLINK extern int    vfwscanf( FILE *, const wchar_t *, __va_list );
  267. _WCRTLINK extern int    vwscanf( const wchar_t *, __va_list );
  268. _WCRTLINK extern int    vswscanf( const wchar_t *, const wchar_t *, __va_list );
  269. _WCRTLINK extern int    vswprintf( wchar_t *, size_t, const wchar_t *, 
  270.                    __va_list );
  271. _WCRTLINK extern wint_t    getwchar( void );
  272. _WCRTLINK extern wint_t    _fgetwchar( void );
  273. _WCRTLINK extern wint_t    fgetwchar( void );
  274. _WCRTLINK extern wchar_t *_getws( wchar_t * );
  275. _WCRTLINK extern wchar_t *getws( wchar_t * );
  276. _WCRTLINK extern wint_t    putwchar( wint_t );
  277. _WCRTLINK extern int    _putws( const wchar_t * );
  278. _WCRTLINK extern int    putws( const wchar_t * );
  279. _WCRTLINK extern int    _wremove( const wchar_t * );
  280. _WCRTLINK extern wchar_t *_wtempnam( wchar_t *__dir, wchar_t *__prefix );
  281. _WCRTLINK extern wchar_t *_wtmpnam( wchar_t * );
  282. _WCRTLINK extern int    wprintf( const wchar_t *, ... );
  283. _WCRTLINK extern int    wscanf( const wchar_t *, ... );
  284. #ifndef swprintf
  285. _WCRTLINK extern int    swprintf( wchar_t *, size_t, const wchar_t *, ... );
  286. #endif
  287. _WCRTLINK extern int    swscanf( const wchar_t *, const wchar_t *, ... );
  288. _WCRTLINK extern wint_t    _fputwchar( wint_t );
  289. _WCRTLINK extern wint_t    fputwchar( wint_t );
  290. _WCRTLINK extern void    _wperror( const wchar_t * );
  291. _WCRTLINK extern int    vwprintf( const wchar_t *, __va_list );
  292. _WCRTLINK extern int    _bwprintf( wchar_t *, size_t, const wchar_t *, ... );
  293. _WCRTLINK extern int    _snwprintf( wchar_t *, size_t, const wchar_t *, ... );
  294. _WCRTLINK extern int    _vbwprintf( wchar_t *, size_t, const wchar_t *, __va_list );
  295. _WCRTLINK extern int    _vsnwprintf( wchar_t *, size_t, const wchar_t *, 
  296.                     __va_list );
  297. _WCRTLINK extern int    _wrename( const wchar_t *, const wchar_t * );
  298. _WCRTLINK extern FILE *    _wpopen( const wchar_t *__command, const wchar_t *__mode );
  299.  
  300. _WCRTLINK extern int    _usprintf( wchar_t *, const wchar_t *, ... );
  301. _WCRTLINK extern int    _uvsprintf( wchar_t *, const wchar_t *, __va_list );
  302.  
  303. #endif
  304.  
  305.  
  306. #define clearerr(fp)    ((fp)->_flag &= ~(_SFERR|_EOF))
  307. #define feof(fp)    ((fp)->_flag & _EOF)
  308. #define ferror(fp)    ((fp)->_flag & _SFERR)
  309. #define fileno(fp)    ((fp)->_handle)
  310. #define _fileno(fp)    ((fp)->_handle)
  311. #if defined(__SW_BD) || defined(__SW_BM)
  312. #define getc(fp)    fgetc(fp)
  313. #define putc(c,fp)    fputc(c,fp)
  314. #else
  315. #define getc(fp) \
  316.     ((fp)->_cnt<=0 \
  317.     || (unsigned)((*(fp)->_ptr)-'\x0d')<=('\0x1a'-'\0x0d') \
  318.     ? fgetc(fp) \
  319.     : ((fp)->_cnt--,*(fp)->_ptr++))
  320. #define putc(c,fp) \
  321.     ((fp)->_flag&_IONBF \
  322.     || (fp)->_bufsize-(fp)->_cnt<=1 \
  323.     ? fputc(c,fp) \
  324.     : ((*(fp)->_ptr=(unsigned char)(c))=='\n') \
  325.     ? fputc('\n',fp) \
  326.     : ((fp)->_flag|=_DIRTY,(fp)->_cnt++,*(fp)->_ptr++))
  327. #endif
  328. #define getchar()    getc(stdin)
  329. #define putchar(c)    putc(c,stdout)
  330.  
  331. #pragma pack(__pop);
  332. #ifdef __cplusplus
  333. };
  334. #endif
  335. #endif
  336.