aboutsummaryrefslogtreecommitdiff
path: root/src/base/bufio/open.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/bufio/open.c')
-rw-r--r--src/base/bufio/open.c27
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;
+}