diff --git a/lib/modules/Stdio.pmod/module.pmod b/lib/modules/Stdio.pmod/module.pmod index 40447dd10755a3df6e7331f9beb5b1983a2d7aee..3d17a0bc2c30d2a7761c43e30abcaff8e51943ab 100644 --- a/lib/modules/Stdio.pmod/module.pmod +++ b/lib/modules/Stdio.pmod/module.pmod @@ -1,4 +1,4 @@ -// $Id: module.pmod,v 1.62 1999/09/16 20:46:33 noring Exp $ +// $Id: module.pmod,v 1.63 1999/09/29 14:57:10 mirar Exp $ import String; @@ -138,8 +138,9 @@ class File } } - void create(string|void file,void|string mode,void|int bits) + void create(int|string|void file,void|string mode,void|int bits) { + if (zero_type(file)) return; switch(file) { case "stdin": @@ -147,9 +148,6 @@ class File #ifdef __STDIO_DEBUG __closed_backtrace=0; #endif - case 0: - break; - case "stdout": _fd=_stdout; #ifdef __STDIO_DEBUG @@ -163,14 +161,25 @@ class File __closed_backtrace=0; #endif break; - + + case 0..0x7fffffff: + if (!mode) mode="rw"; + _fd=Fd(file,mode); +#ifdef __STDIO_DEBUG + __closed_backtrace=0; +#endif + break; + default: _fd=Fd(); #ifdef __STDIO_DEBUG __closed_backtrace=0; #endif if(query_num_arg()<3) bits=0666; - ::open(file,mode,bits); + if(!mode) mode="r"; + if (!::open(file,mode,bits)) + error("Failed to open %O mode %O : %s\n", + file,mode,strerror(errno())); } }