/* * FCNTL.H */ #ifndef _FCNTL_H #define _FCNTL_H #ifndef _COMPILER_H #include #endif #ifdef __cplusplus extern "C" { #endif #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 */ #ifdef __MINT__ # define O_SYNC 0x00 /* sync after writes (not implemented) */ #endif /* 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 */ #define _REALO_APPEND 0x08 /* this is what MiNT uses */ #ifndef __MINT__ # define O_PIPE 0x2000 /* serial pipe */ #endif /* * 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 */ #ifdef __MINT__ #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; }; #endif /* __MINT__ */ #ifdef __MINT__ #define __NHANDLES 40 struct __open_file { short status; /* whether or not it's a tty */ short flags; /* if a tty, its flags */ }; #else #define __NHANDLES 80 struct __open_file { unsigned short append:1; /* 1 if O_APPEND set for this file */ unsigned short nodelay:1; /* 1 if O_NDELAY set for this file */ unsigned short pipe:1; /* 1 if O_PIPE set for this file */ unsigned short eclose:1; /* 1 if close on exec is set for this file */ unsigned short status:2; /* status FH_UNKNOWN | ISATTY | ISAFILE */ char *filename; /* filename of open file */ }; #endif /* __MINT__ */ extern struct __open_file __open_stat[__NHANDLES]; /* NOTE: this array is indexed by (__OPEN_INDEX(fd)) */ /* smallest valid gemdos handle */ /* note handle is only word (16 bit) negative, not long negative, and since Fopen etc are declared as returning long in osbind.h the sign-extension will not happen -- thanks ers */ #ifdef __MSHORT__ #define __SMALLEST_VALID_HANDLE (-3) #else #define __SMALLEST_VALID_HANDLE (0) #endif #define __OPEN_INDEX(x) (((short)(x)) + 3) #define FH_UNKNOWN 0 #define FH_ISATTY 1 #define FH_ISAFILE 2 __EXTERN int fcntl __PROTO((int f, int cmd, ...)); #ifdef __cplusplus } #endif #endif /* _FCNTL_H */