diff options
Diffstat (limited to 'src/base/bufio/open.c')
-rw-r--r-- | src/base/bufio/open.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/base/bufio/open.c b/src/base/bufio/open.c new file mode 100644 index 0000000..29ccae1 --- /dev/null +++ b/src/base/bufio/open.c @@ -0,0 +1,27 @@ +#include "internal.h" + +int +bio·open(char *path, int flag, io·Buffer *io) +{ + int fd; + switch(flag & ~(sys·OCloseExec|sys·OTrunc)){ + default: + fmt·fprint(2, "open: unknown flag %d\n", flag); + return 1; + + case sys·ORead: + if(sys·open(path, flag, 0, &fd)) + return 1; + break; + + case sys·OWrite: + if(sys·open(path, flag, 0666, &fd)) + return 1; + break; + } + if(bio·openfd(fd, flag, io)){ + sys·close(fd); + return 1; + } + return 0; +} |