home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / proglc / zoo141_c.lzh / PORTABLE.H < prev    next >
C/C++ Source or Header  |  1987-02-07  |  3KB  |  112 lines

  1. /* portable.h */
  2. /* Definitions for portable I/O
  3.  
  4. The contents of this file are hereby released to the public domain.
  5.  
  6.                            -- Rahul Dhesi 1986/11/14
  7.  
  8. Definitions are:
  9.  
  10. OPEN        binary open
  11. CREATE      binary create
  12. OPEN_T      text open
  13. CREATE_T    text create
  14.  
  15. Plus flags for fopen().
  16. */
  17.  
  18. /* 
  19. Microsoft C.  The only difference between I/O flags for standard UNIX I/O
  20. and Microsoft C is that Microsoft C requires the "O_BINARY" flag in open() 
  21. and the "rb" string instead of "r" in fopen().  These are needed to prevent
  22. the library from doing LF <--> CR LF translation.
  23. */
  24.  
  25. #ifdef   MSC
  26. #define  P_RDWR         S_IWRITE | S_IREAD
  27. #define  F_WRITE        O_WRONLY
  28. #define  F_READ         O_RDONLY
  29. #define  F_RDWR         O_RDWR
  30. #define  FRDSTR         "rb"     /* readonly string for fopen() */
  31. #define  FRWSTR         "r+b"    /* read/write string for fopen() */
  32. #define  CREATE(x,y)    open (x, y|O_CREAT|O_TRUNC|O_BINARY, P_RDWR)
  33. #define  OPEN(x,y)      open (x, y|O_BINARY)
  34. #define  CREATE_T(x,y)  open (x, y|O_CREAT|O_TRUNC, P_RDWR)
  35. #define  OPEN_T(x,y)    open (x, y)
  36. #define  MKDIR(x)       mkdir(x)
  37. #endif
  38.  
  39. #ifdef GENERIC
  40. /* UNIX I/O, but MKDIR() is a no-operation */
  41. #define  NIX_IO      /* standard UNIX I/O */
  42. #define  MKDIR(x)
  43. #endif
  44.  
  45. /* UNIX System V release 2.1 */
  46. #ifdef   SYS_V
  47. #define  NIX_IO      /* standard UNIX I/O */
  48. #define  MKDIR(x)       mkdir(x) /* define this in sysv.c */
  49. #endif
  50.  
  51. /* Xenix  release 3.0 */
  52. #ifdef   XENIX
  53. #define  NIX_IO      /* standard UNIX I/O */
  54. #endif
  55.  
  56. /* 4.3BSD */
  57. #ifdef BSD4_3
  58. #define NIX_IO       /* standard UNIX I/O */
  59. #define  MKDIR(x)       mkdir(x, 0777)
  60. #endif
  61.  
  62. /* Amiga */
  63. #ifdef MCH_AMIGA
  64. /* Need to define a macro to make a new directory */
  65. #define MKDIR(x)        {}
  66. #define NIX_IO
  67. #endif
  68.  
  69. /* Standard UNIX I/O definitions */
  70. #ifdef   NIX_IO
  71. /* #define  P_RDWR         S_IWRITE | S_IREAD */
  72. #define  P_RDWR         0644
  73. #define  F_WRITE        O_WRONLY
  74. #define  F_READ         O_RDONLY
  75. #define  F_RDWR         O_RDWR
  76. #define  FRDSTR         "r"      /* readonly string for fopen() */
  77. #define  FRWSTR         "r+"     /* read/write string for fopen() */
  78. #define  CREATE(x,y)    open (x, y|O_CREAT|O_TRUNC, P_RDWR)
  79. #define  OPEN(x,y)      open (x, y)
  80. #define  CREATE_T(x,y)  open (x, y|O_CREAT|O_TRUNC, P_RDWR)
  81. #define  OPEN_T(x,y)    open (x, y)
  82. #endif   /* NIX_IO */
  83.  
  84. /* VAX/VMS version 4.3.  Not yet tested.  */
  85. #ifdef   VMS
  86. #define  P_RDWR         0        /* use user's default protection */
  87. #define  F_WRITE        O_RDWR   /* VAX/VMS random write requires O_RDWR */
  88. #define  F_READ         O_RDONLY
  89. #define  F_RDWR         O_RDWR
  90. #define  FRDSTR         "r"      /* readonly string for fopen() */
  91. #define  FRWSTR         "r+"     /* read/write string for fopen() */
  92. #define  CREATE(x,y)    open (x, y|O_CREAT|O_TRUNC, P_RDWR)
  93. #define  OPEN(x,y)      open (x, y)
  94. #define  CREATE_T(x,y)  open (x, y|O_CREAT|O_TRUNC, P_RDWR)
  95. #define  OPEN_T(x,y)    open (x, y)
  96. #endif
  97.  
  98. /* MIX C compiler for MS-DOS.  Follows K&R closely. Not yet tested. */
  99. #ifdef   MIX
  100. #define  P_RDWR         0
  101. #define  F_WRITE        1
  102. #define  F_READ         0
  103. #define  F_RDWR         2
  104. #define  FRDSTR         "r"
  105. #define  FRWSTR         "r+"
  106. #define  CREATE(x,y)    creat (x,y)
  107. #define  OPEN(x,y)      open (x,y)
  108. #define  CREATE_T(x,y)  creat (x,y)
  109. #define  OPEN_T(x,y)    open (x,y)
  110. #endif
  111.  
  112.