summaryrefslogtreecommitdiff
path: root/src/user/lib/fwik/io/Node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/lib/fwik/io/Node.cpp')
-rw-r--r--src/user/lib/fwik/io/Node.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/user/lib/fwik/io/Node.cpp b/src/user/lib/fwik/io/Node.cpp
new file mode 100644
index 0000000..1d8b7f5
--- /dev/null
+++ b/src/user/lib/fwik/io/Node.cpp
@@ -0,0 +1,23 @@
+#include <IO/Node.h>
+
+Node::Node(FILE f) {
+ fd = f;
+ int i = libc::statf(f, &info);
+ valid = (i == 0);
+}
+
+Node::Node(char* filename, int mode) {
+ fd = libc::open(filename, mode);
+ if (fd < 0) {
+ valid = false;
+ } else {
+ int i = libc::statf(fd, &info);
+ valid = (i == 0);
+ if (!valid) libc::close(fd);
+ }
+}
+
+void Node::close() {
+ if (valid) libc::close(fd);
+ valid = false;
+}