/* * FCNTL.H */ #ifndef _FCNTL_H #define _FCNTL_H #define O_RDONLY 0x00 /* read only */ #define O_WRONLY 0x01 /* write only */ #define O_RDWR 0x02 /* read/write */ #define O_ACCMODE 0x03 /* used to mask off file access mode */ /* file sharing modes (not POSIX) */ #define O_COMPAT 0x00 /* old TOS compatibility mode */ #define O_DENYRW 0x10 /* deny both reads and writes */ #define O_DENYW 0x20 #define O_DENYR 0x30 #define O_DENYNONE 0x40 /* don't deny anything */ #define O_SHMODE 0x70 /* mask for file sharing mode */ #define O_NDELAY 0x100 /* Non-blocking I/O */ #define O_SYNC 0x00 /* sync after writes (not implemented) */ /* the following flags are not passed to the OS */ #define O_CREAT 0x200 /* create new file if needed */ #define O_TRUNC 0x400 /* make file 0 length */ #define O_EXCL 0x800 /* error if file exists */ #define O_APPEND 0x1000 /* position at EOF */ /* * defines for the access() function */ #define F_OK 0 #define X_OK 1 #define W_OK 2 #define R_OK 4 /* * defines for fcntl() */ #define F_DUPFD 0 /* Duplicate fildes */ #define F_GETFD 1 /* Get fildes flags */ #define F_SETFD 2 /* Set fildes flags */ #define F_GETFL 3 /* Get file flags */ #define F_SETFL 4 /* Set file flags */ #define F_GETLK 5 /* Get file lock */ #define F_SETLK 6 /* Set file lock */ struct flock { short l_type; #define F_RDLCK O_RDONLY #define F_WRLCK O_WRONLY #define F_UNLCK 3 short l_whence; long l_start; long l_len; short l_pid; }; #ifndef _COMPILER_H #include #endif __EXTERN int fcntl __PROTO((int, int, void *)); /* maybe more later */ /* * stuff for speeding up isatty(), and other library internal defines */ #define __NHANDLES 40 #ifdef __MSHORT__ #define __SMALLEST_VALID_HANDLE (-3) #else #define __SMALLEST_VALID_HANDLE (0) #endif #define __OPEN_INDEX(fd) ((short)(fd) + 3) struct __open_file { short status; /* whether or not it's a tty */ short flags; /* if a tty, its flags */ }; extern struct __open_file __open_stat[__NHANDLES]; #define FH_UNKNOWN 0 #define FH_ISATTY 1 #define FH_ISAFILE 2 #ifndef _COMPILER_H #include #endif __EXTERN int fcntl __PROTO((int f, int cmd, void *arg)); #endif /* _FCNTL_H */