1*2159047fSniklas /* 2*2159047fSniklas * FCntl.h -- faccess(), fcntl(), and open() mode flags 3*2159047fSniklas * 4*2159047fSniklas * Portions copyright American Telephone & Telegraph 5*2159047fSniklas * Used with permission, Apple Computer Inc. (1985,1988,1990,1992) 6*2159047fSniklas * All rights reserved. 7*2159047fSniklas */ 8*2159047fSniklas 9*2159047fSniklas #ifndef __FCNTL__ 10*2159047fSniklas #define __FCNTL__ 11*2159047fSniklas 12*2159047fSniklas #ifndef __TYPES__ 13*2159047fSniklas #include <Types.h> 14*2159047fSniklas #endif 15*2159047fSniklas 16*2159047fSniklas /* 17*2159047fSniklas * For use by lseek(): 18*2159047fSniklas */ 19*2159047fSniklas 20*2159047fSniklas #ifndef __STDIO__ /* these defns exactly paralled in StdIO.h for fseek() */ 21*2159047fSniklas #define SEEK_CUR 1 22*2159047fSniklas #define SEEK_END 2 23*2159047fSniklas #define SEEK_SET 0 24*2159047fSniklas #endif 25*2159047fSniklas 26*2159047fSniklas /* 27*2159047fSniklas * faccess() commands; for general use 28*2159047fSniklas */ 29*2159047fSniklas /* 'd' => "directory" ops */ 30*2159047fSniklas #define F_DELETE (('d'<<8)|0x01) 31*2159047fSniklas #define F_RENAME (('d'<<8)|0x02) 32*2159047fSniklas 33*2159047fSniklas /* 34*2159047fSniklas * more faccess() commands; for use only by MPW tools 35*2159047fSniklas */ 36*2159047fSniklas 37*2159047fSniklas #define F_OPEN (('d'<<8)|0x00) /* reserved for operating system use */ 38*2159047fSniklas /* 'e' => "editor" ops */ 39*2159047fSniklas #define F_GTABINFO (('e'<<8)|0x00) /* get tab offset for file */ 40*2159047fSniklas #define F_STABINFO (('e'<<8)|0x01) /* set " " " " */ 41*2159047fSniklas #define F_GFONTINFO (('e'<<8)|0x02) /* get font number and size for file */ 42*2159047fSniklas #define F_SFONTINFO (('e'<<8)|0x03) /* set " " " " " " */ 43*2159047fSniklas #define F_GPRINTREC (('e'<<8)|0x04) /* get print record for file */ 44*2159047fSniklas #define F_SPRINTREC (('e'<<8)|0x05) /* set " " " " */ 45*2159047fSniklas #define F_GSELINFO (('e'<<8)|0x06) /* get selection information for file */ 46*2159047fSniklas #define F_SSELINFO (('e'<<8)|0x07) /* set " " " " */ 47*2159047fSniklas #define F_GWININFO (('e'<<8)|0x08) /* get current window position */ 48*2159047fSniklas #define F_SWININFO (('e'<<8)|0x09) /* set " " " */ 49*2159047fSniklas #define F_GSCROLLINFO (('e'<<8)|0x0A) /* get scroll information */ 50*2159047fSniklas #define F_SSCROLLINFO (('e'<<8)|0x0B) /* set " " */ 51*2159047fSniklas #define F_GMARKER (('e'<<8)|0x0D) /* Get Marker */ 52*2159047fSniklas #define F_SMARKER (('e'<<8)|0x0C) /* Set " */ 53*2159047fSniklas #define F_GSAVEONCLOSE (('e'<<8)|0x0F) /* Get Save on close */ 54*2159047fSniklas #define F_SSAVEONCLOSE (('e'<<8)|0x0E) /* Set " " " */ 55*2159047fSniklas 56*2159047fSniklas /* 57*2159047fSniklas * argument structures used by various faccess() commands 58*2159047fSniklas */ 59*2159047fSniklas 60*2159047fSniklas struct MarkElement { 61*2159047fSniklas int start; /* start position of mark */ 62*2159047fSniklas int end; /* end position */ 63*2159047fSniklas unsigned char charCount; /* number of chars in mark name */ 64*2159047fSniklas char name[64]; /* mark name */ 65*2159047fSniklas } ; /* note: marker names may be up to 64 characters long */ 66*2159047fSniklas 67*2159047fSniklas #ifndef __cplusplus 68*2159047fSniklas typedef struct MarkElement MarkElement; 69*2159047fSniklas #endif 70*2159047fSniklas 71*2159047fSniklas struct SelectionRecord { 72*2159047fSniklas long startingPos; 73*2159047fSniklas long endingPos; 74*2159047fSniklas long displayTop; 75*2159047fSniklas }; 76*2159047fSniklas 77*2159047fSniklas #ifndef __cplusplus 78*2159047fSniklas typedef struct SelectionRecord SelectionRecord; 79*2159047fSniklas #endif 80*2159047fSniklas 81*2159047fSniklas 82*2159047fSniklas /* 83*2159047fSniklas * Mode values accessible to open() 84*2159047fSniklas */ 85*2159047fSniklas #define O_RDONLY 0 /* Bits 0 and 1 are used internally */ 86*2159047fSniklas #define O_WRONLY 1 /* Values 0..2 are historical */ 87*2159047fSniklas #define O_RDWR 2 /* NOTE: it goes 0, 1, 2, *!* 8, 16, 32, ... */ 88*2159047fSniklas #define O_APPEND (1<< 3) /* append (writes guaranteed at the end) */ 89*2159047fSniklas #define O_RSRC (1<< 4) /* Open the resource fork */ 90*2159047fSniklas #define O_ALIAS (1<< 5) /* Open alias file */ 91*2159047fSniklas #define O_CREAT (1<< 8) /* Open with file create */ 92*2159047fSniklas #define O_TRUNC (1<< 9) /* Open with truncation */ 93*2159047fSniklas #define O_EXCL (1<<10) /* w/ O_CREAT: Exclusive "create-only" */ 94*2159047fSniklas #define O_BINARY (1<<11) /* Open as a binary stream */ 95*2159047fSniklas #define O_NRESOLVE (1<<14) /* Don't resolve any aliases */ 96*2159047fSniklas 97*2159047fSniklas #ifdef __cplusplus 98*2159047fSniklas extern "C" { 99*2159047fSniklas #endif 100*2159047fSniklas 101*2159047fSniklas /* 102*2159047fSniklas * function prototypes 103*2159047fSniklas */ 104*2159047fSniklas int close(int); 105*2159047fSniklas int creat(const char*); 106*2159047fSniklas int dup(int filedes); /* OBSOLETE: fcntl(filedes, F_DUPFD, 0) is preferred */ 107*2159047fSniklas int faccess(char*, unsigned int, long*); 108*2159047fSniklas int fcntl(int, unsigned int, int); 109*2159047fSniklas long lseek(int, long, int); 110*2159047fSniklas int open(const char*, int, ...); 111*2159047fSniklas int read(int, char*, unsigned); 112*2159047fSniklas int unlink(char*); 113*2159047fSniklas int write(int, const char*, unsigned); 114*2159047fSniklas 115*2159047fSniklas #ifdef __cplusplus 116*2159047fSniklas } 117*2159047fSniklas #endif 118*2159047fSniklas 119*2159047fSniklas /* 120*2159047fSniklas * fcntl() commands 121*2159047fSniklas */ 122*2159047fSniklas #define F_DUPFD 0 /* Duplicate files (file descriptor) */ 123*2159047fSniklas 124*2159047fSniklas #endif __FCNTL__ 125