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