diff options
Diffstat (limited to 'src/user/lib/fwik/io/Node.cpp')
-rw-r--r-- | src/user/lib/fwik/io/Node.cpp | 23 |
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; +} |