1 #include <open.h> 2 #pragma implementation 3 open_cmd_arg(io_mode i,access_mode a)4int open_cmd_arg(io_mode i, access_mode a) // decode modes 5 { 6 int arg; 7 switch(i) 8 { 9 case io_readonly: arg = sio_read; break; 10 case io_writeonly: arg = sio_write; break; 11 case io_readwrite: arg = sio_readwrite; break; 12 case io_appendonly: arg = sio_append | sio_write; break; 13 case io_append: arg = sio_append | sio_readwrite; break; 14 default: return -1; 15 }; 16 switch(a) 17 { 18 case a_createonly: return arg | sa_createonly; 19 case a_create: return arg | sa_create | sa_truncate; 20 case a_useonly: return arg; 21 case a_use: return arg | sa_create; 22 default: return -1; 23 } 24 } 25 fopen_cmd_arg(io_mode i)26char* fopen_cmd_arg(io_mode i) 27 { 28 switch(i) 29 { 30 case io_readonly: return "r"; 31 case io_writeonly: return "w"; 32 case io_readwrite: return "r+"; 33 case io_appendonly:return "a"; 34 case io_append: return "a+"; 35 default: return 0; 36 } 37 } 38 open_cmd_arg(const char * m)39int open_cmd_arg(const char* m) 40 { 41 if (m == 0) return -1; 42 else if (m[0] == 'r') return (m[1] == '+')? io_readwrite : io_readonly; 43 else if (m[0] == 'w') return (m[1] == '+')? io_readwrite : io_writeonly; 44 else if (m[0] == 'a') return (m[1] == '+')? io_append : io_appendonly; 45 else return -1; 46 } 47