summaryrefslogtreecommitdiff
path: root/volume
diff options
context:
space:
mode:
Diffstat (limited to 'volume')
-rw-r--r--volume/volume.ha26
1 files changed, 26 insertions, 0 deletions
diff --git a/volume/volume.ha b/volume/volume.ha
new file mode 100644
index 0000000..d3bae12
--- /dev/null
+++ b/volume/volume.ha
@@ -0,0 +1,26 @@
+use fmt;
+use fs;
+use io;
+use os;
+
+export fn mkvol(vol: str) io::file = {
+ const vol = match (os::create(vol, fs::mode::USER_RWX | fs::mode::GROUP_RX | fs::mode::OTHER_RX, fs::flags::RDWR)) {
+ case let v: io::file =>
+ yield v;
+ case =>
+ fmt::fatalf("{}: cannot open file {}", os::args[0], os::args[1]);
+ };
+
+ return vol;
+};
+
+export fn openvol(vol: str) io::file = {
+ const vol = match (os::open(vol, fs::flags::RDWR)) {
+ case let v: io::file =>
+ yield v;
+ case =>
+ fmt::fatalf("{}: cannot open file {}", os::args[0], os::args[1]);
+ };
+
+ return vol;
+};