home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / DLIBSSRC.ZIP / STDIO.H < prev    next >
Encoding:
C/C++ Source or Header  |  1987-10-12  |  3.5 KB  |  119 lines

  1. /*
  2.  *
  3.  *    STDIO.H        Standard i/o include file
  4.  *
  5.  */
  6.  
  7. #define    _COOKIE(s)    gemdos(9,"<");gemdos(9,s);gemdos(9,">\r\n")
  8.  
  9. /*
  10.  *    CONSTANTS:
  11.  */
  12.  
  13. #define    dLibs        (0x1000)
  14. #define    TRUE        (1)
  15. #define    FALSE        (0)
  16. #define    ERROR        (-1)
  17. #define    NULL        ((char *) 0)
  18. #define    MAXINT        (32767)
  19. #define    MININT        (-32768)
  20. #define    MAXFILES    (20)
  21. #define    BUFSIZ        (1024)
  22. #define    PATHSIZE    (128)
  23. #define    EOF        (-1)
  24. #define    EOS        '\0'
  25.  
  26. /* FILE structure flags */
  27. #define    F_READ        0x0001        /* file may be read from */
  28. #define    F_WRITE        0x0002        /* file may be written to */
  29. #define    F_BINARY    0x0004        /* file is in "binary" mode */
  30. #define    F_IODIR        0x0010        /* last i/o was 0:read/1:write */
  31. #define    F_BUFFER    0x0020        /* i/o is buffered */
  32. #define    F_DEVICE    0x0040        /* file is a character device */
  33. #define    F_EOF        0x0100        /* EOF has been reached */
  34. #define    F_ERROR        0x0200        /* an error has occured */
  35.  
  36.  
  37. /*
  38.  *    TYPES:
  39.  */
  40.  
  41. #define    VOID    void
  42.  
  43. typedef    unsigned char    BYTE;        /* 8-bit unsigned */
  44. typedef    unsigned int    WORD;        /* 16-bit unsigned */
  45. typedef    unsigned long    LONG;        /* 32-bit unsigned */
  46. typedef    unsigned char    uchar;        /* 8-bit unsigned */
  47. typedef    unsigned int    uint;        /* 16-bit unsigned */
  48. typedef    unsigned long    ulong;        /* 32-bit unsigned */
  49.  
  50. typedef    struct {        /* FILE structure */
  51.     int        F_h;        /* file handle */
  52.     WORD        F_stat;        /* file status flags */
  53.     char        *F_buf;        /* base of file buffer */
  54.     char        *F_bp;        /* current buffer pointer */
  55.     uint        F_bsiz;        /* buffer size */
  56.     int        F_cnt;        /* # of bytes in buffer */
  57.     char        F_unc1;        /* primary ungotten character */
  58.     char        F_unc2;        /* secondary ungotten character */
  59. } FILE;
  60.  
  61. /*
  62.  *    Standard external definitions
  63.  */
  64. extern    void    _exit();
  65. extern    long    gemdos();
  66. extern    long    bios();
  67. extern    long    xbios();
  68.  
  69. /*
  70.  *    MACROS:
  71.  */
  72.  
  73. /* standard streams */
  74. extern    FILE    _iob[];
  75. #define stdin    (&_iob[0])
  76. #define stdout    (&_iob[1])
  77. #define stderr    (&_iob[2])
  78. #define stdprn    (&_iob[3])
  79. #define stdaux    (&_iob[4])
  80.  
  81. #define clearerr(fp)    ((fp)->F_stat &= ~F_ERROR)
  82. #define feof(fp)    ((fp)->F_stat & F_EOF)
  83. #define ferror(fp)    ((fp)->F_stat & F_ERROR)
  84. #define fileno(fp)    ((fp)->F_h)
  85.  
  86. #define    spawn(prog,cmdln)    spawne(prog,cmdln,NULL)
  87. #define    spawnp(prog,cmdln)    spawnpe(prog,cmdln,NULL)
  88. #define    chdir(pathname)        ((int)gemdos(0x3B,pathname))
  89. #define    mkdir(pathname)        ((int)gemdos(0x39,pathname))
  90. #define    rmdir(pathname)        ((int)gemdos(0x3A,pathname))
  91. #define    open(filename,iomode)    ((int)gemdos(0x3D,filename,iomode))
  92. #define    close(h)        ((int)gemdos(0x3E,h))
  93. #define    dup(handle)        ((int)gemdos(0x45,handle))
  94. #define    dup2(h1,h2)        ((int)gemdos(0x46,h2,h1))
  95. #define    unlink(filename)    ((int)gemdos(0x41,filename))
  96. #define    rename(oldname,newname)    ((int)gemdos(0x56,0,oldname,newname))
  97. #define    lseek(h,where,how)    gemdos(0x42,where,h,how)
  98. #define    tell(h)            gemdos(0x42,0L,h,1)
  99. #define    ftell(fp)        tell(fileno(fp))
  100. #define    isatty(h)        ((h)<6)
  101. #define    read(h,data,len)    ((int)gemdos(0x3F,h,((long)(len)),data))
  102. #define    write(h,data,len)    ((int)gemdos(0x40,h,((long)(len)),data))
  103. #define    lread(h,data,len)    (gemdos(0x3F,h,len,data))
  104. #define    lwrite(h,data,len)    (gemdos(0x40,h,len,data))
  105. #define    srand(seed)        /* no random seeding required */
  106. #define    sync()            /* sync() not possible */
  107.  
  108. #define    getc            fgetc
  109. #define    ungetc            fungetc
  110. #define    putc            fputc
  111. #define    getchar()        fgetc(stdin)
  112. #define    ungetchar(c)        fungetc((c),stdin)
  113. #define    putchar(c)        fputc((c),stdout)
  114.  
  115. #define    abs(x)        ((x)<0?(-(x)):(x))
  116. #define max(x,y)       (((x)>(y))?(x):(y))
  117. #define    min(x,y)       (((x)<(y))?(x):(y))
  118. #define    swap(a,b)    ((a)=(a)^((b)=(b)^((a)=(a)^(b))))
  119.