home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / fcntl.h < prev    next >
C/C++ Source or Header  |  2004-01-30  |  6KB  |  186 lines

  1.  
  2. #ifndef    _FCNTL_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #define    _FCNTL_
  7. #include <_ansi.h>
  8. #define    _FOPEN        (-1)    /* from sys/file.h, kernel use only */
  9. #define    _FREAD        0x0001    /* read enabled */
  10. #define    _FWRITE        0x0002    /* write enabled */
  11. #define    _FAPPEND    0x0008    /* append (writes guaranteed at the end) */
  12. #define    _FMARK        0x0010    /* internal; mark during gc() */
  13. #define    _FDEFER        0x0020    /* internal; defer for next gc pass */
  14. #define    _FASYNC        0x0040    /* signal pgrp when data ready */
  15. #define    _FSHLOCK    0x0080    /* BSD flock() shared lock present */
  16. #define    _FEXLOCK    0x0100    /* BSD flock() exclusive lock present */
  17. #define    _FCREAT        0x0200    /* open with file create */
  18. #define    _FTRUNC        0x0400    /* open with truncation */
  19. #define    _FEXCL        0x0800    /* error on open if file exists */
  20. #define    _FNBIO        0x1000    /* non blocking I/O (sys5 style) */
  21. #define    _FSYNC        0x2000    /* do all writes synchronously */
  22. #define    _FNONBLOCK    0x4000    /* non blocking I/O (POSIX style) */
  23. #define    _FNDELAY    _FNONBLOCK    /* non blocking I/O (4.2 style) */
  24. #define    _FNOCTTY    0x8000    /* don't assign a ctty on this open */
  25.  
  26. #define    O_ACCMODE    (O_RDONLY|O_WRONLY|O_RDWR)
  27.  
  28. /*
  29.  * Flag values for open(2) and fcntl(2)
  30.  * The kernel adds 1 to the open modes to turn it into some
  31.  * combination of FREAD and FWRITE.
  32.  */
  33. #define    O_RDONLY    0        /* +1 == FREAD */
  34. #define    O_WRONLY    1        /* +1 == FWRITE */
  35. #define    O_RDWR        2        /* +1 == FREAD|FWRITE */
  36. #define    O_APPEND    _FAPPEND
  37. #define    O_CREAT        _FCREAT
  38. #define    O_TRUNC        _FTRUNC
  39. #define    O_EXCL        _FEXCL
  40. /*    O_SYNC        _FSYNC        not posix, defined below */
  41. /*    O_NDELAY    _FNDELAY     set in include/fcntl.h */
  42. /*    O_NDELAY    _FNBIO         set in 5include/fcntl.h */
  43. #define    O_NONBLOCK    _FNONBLOCK
  44. #define    O_NOCTTY    _FNOCTTY
  45. /* For machines which care - */
  46. #if defined (_WIN32) || defined (__CYGWIN__)
  47. #define _FBINARY        0x10000
  48. #define _FTEXT          0x20000
  49. #define _FNOINHERIT    0x40000
  50.  
  51. #define O_BINARY    _FBINARY
  52. #define O_TEXT        _FTEXT
  53. #define O_NOINHERIT    _FNOINHERIT
  54.  
  55. /* The windows header files define versions with a leading underscore.  */
  56. #define _O_RDONLY    O_RDONLY
  57. #define _O_WRONLY    O_WRONLY
  58. #define _O_RDWR        O_RDWR
  59. #define _O_APPEND    O_APPEND
  60. #define _O_CREAT    O_CREAT
  61. #define _O_TRUNC    O_TRUNC
  62. #define _O_EXCL        O_EXCL
  63. #define _O_TEXT        O_TEXT
  64. #define _O_BINARY    O_BINARY
  65. #define _O_RAW        O_BINARY
  66. #define _O_NOINHERIT    O_NOINHERIT
  67. #endif
  68.  
  69. #ifndef    _POSIX_SOURCE
  70.  
  71. #define    O_SYNC        _FSYNC
  72.  
  73. /*
  74.  * Flags that work for fcntl(fd, F_SETFL, FXXXX)
  75.  */
  76. #define    FAPPEND        _FAPPEND
  77. #define    FSYNC        _FSYNC
  78. #define    FASYNC        _FASYNC
  79. #define    FNBIO        _FNBIO
  80. #define    FNONBIO        _FNONBLOCK    /* XXX fix to be NONBLOCK everywhere */
  81. #define    FNDELAY        _FNDELAY
  82.  
  83. /*
  84.  * Flags that are disallowed for fcntl's (FCNTLCANT);
  85.  * used for opens, internal state, or locking.
  86.  */
  87. #define    FREAD        _FREAD
  88. #define    FWRITE        _FWRITE
  89. #define    FMARK        _FMARK
  90. #define    FDEFER        _FDEFER
  91. #define    FSHLOCK        _FSHLOCK
  92. #define    FEXLOCK        _FEXLOCK
  93.  
  94. /*
  95.  * The rest of the flags, used only for opens
  96.  */
  97. #define    FOPEN        _FOPEN
  98. #define    FCREAT        _FCREAT
  99. #define    FTRUNC        _FTRUNC
  100. #define    FEXCL        _FEXCL
  101. #define    FNOCTTY        _FNOCTTY
  102.  
  103. #endif    /* !_POSIX_SOURCE */
  104.  
  105. /* XXX close on exec request; must match UF_EXCLOSE in user.h */
  106. #define    FD_CLOEXEC    1    /* posix */
  107.  
  108. /* fcntl(2) requests */
  109. #define    F_DUPFD        0    /* Duplicate fildes */
  110. #define    F_GETFD        1    /* Get fildes flags (close on exec) */
  111. #define    F_SETFD        2    /* Set fildes flags (close on exec) */
  112. #define    F_GETFL        3    /* Get file flags */
  113. #define    F_SETFL        4    /* Set file flags */
  114. #ifndef    _POSIX_SOURCE
  115. #define    F_GETOWN     5    /* Get owner - for ASYNC */
  116. #define    F_SETOWN     6    /* Set owner - for ASYNC */
  117. #endif    /* !_POSIX_SOURCE */
  118. #define    F_GETLK      7    /* Get record-locking information */
  119. #define    F_SETLK      8    /* Set or Clear a record-lock (Non-Blocking) */
  120. #define    F_SETLKW     9    /* Set or Clear a record-lock (Blocking) */
  121. #ifndef    _POSIX_SOURCE
  122. #define    F_RGETLK     10    /* Test a remote lock to see if it is blocked */
  123. #define    F_RSETLK     11    /* Set or unlock a remote lock */
  124. #define    F_CNVT         12    /* Convert a fhandle to an open fd */
  125. #define    F_RSETLKW     13    /* Set or Clear remote record-lock(Blocking) */
  126. #endif    /* !_POSIX_SOURCE */
  127.  
  128. /* fcntl(2) flags (l_type field of flock structure) */
  129. #define    F_RDLCK        1    /* read lock */
  130. #define    F_WRLCK        2    /* write lock */
  131. #define    F_UNLCK        3    /* remove lock(s) */
  132. #ifndef    _POSIX_SOURCE
  133. #define    F_UNLKSYS    4    /* remove remote locks for a given system */
  134. #endif    /* !_POSIX_SOURCE */
  135.  
  136. /*#include <sys/stdtypes.h>*/
  137.  
  138. #ifndef __CYGWIN__
  139. /* file segment locking set data type - information passed to system by user */
  140. struct flock {
  141.     short    l_type;        /* F_RDLCK, F_WRLCK, or F_UNLCK */
  142.     short    l_whence;    /* flag to choose starting offset */
  143.     long    l_start;    /* relative offset, in bytes */
  144.     long    l_len;        /* length, in bytes; 0 means lock to EOF */
  145.     short    l_pid;        /* returned with F_GETLK */
  146.     short    l_xxx;        /* reserved for future use */
  147. };
  148. #endif /* __CYGWIN__ */
  149.  
  150. #ifndef    _POSIX_SOURCE
  151. /* extended file segment locking set data type */
  152. struct eflock {
  153.     short    l_type;        /* F_RDLCK, F_WRLCK, or F_UNLCK */
  154.     short    l_whence;    /* flag to choose starting offset */
  155.     long    l_start;    /* relative offset, in bytes */
  156.     long    l_len;        /* length, in bytes; 0 means lock to EOF */
  157.     short    l_pid;        /* returned with F_GETLK */
  158.     short    l_xxx;        /* reserved for future use */
  159.     long    l_rpid;        /* Remote process id wanting this lock */
  160.     long    l_rsys;        /* Remote system id wanting this lock */
  161. };
  162. #endif    /* !_POSIX_SOURCE */
  163.  
  164.  
  165. #include <sys/types.h>
  166. #include <sys/stat.h>        /* sigh. for the mode bits for open/creat */
  167.  
  168. extern int open _PARAMS ((const char *, int, ...));
  169. extern int creat _PARAMS ((const char *, mode_t));
  170. extern int fcntl _PARAMS ((int, int, ...));
  171.  
  172. /* Provide _<systemcall> prototypes for functions provided by some versions
  173.    of newlib.  */
  174. #ifdef _COMPILING_NEWLIB
  175. extern int _open _PARAMS ((const char *, int, ...));
  176. extern int _fcntl _PARAMS ((int, int, ...));
  177. #ifdef __LARGE64_FILES
  178. extern int _open64 _PARAMS ((const char *, int, ...));
  179. #endif
  180. #endif
  181.  
  182. #ifdef __cplusplus
  183. }
  184. #endif
  185. #endif    /* !_FCNTL_ */
  186.