summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..babac6a
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,50 @@
+extern crate fuse;
+extern crate libc;
+extern crate v1;
+
+use v1::data::get_data1;
+use v1::data::SimpleFsData;
+use fuse::{Filesystem, Request, ReplyEntry, ReplyAttr, ReplyDirectory, ReplyData};
+use libc::ENOENT;
+use std::ffi::OsStr;
+
+struct MemFs {
+ data: SimpleFsData,
+}
+
+impl Filesystem for MemFs {
+ fn lookup(&mut self, _req: &Request, _parent: u64, _name: &OsStr,
+ reply: ReplyEntry) {
+ reply.error(ENOENT);
+ }
+
+ fn getattr(&mut self, _req: &Request, _ino: u64, reply: ReplyAttr) {
+ reply.error(ENOENT);
+ }
+
+ fn read(&mut self, _req: &Request, _ino: u64, _fh: u64, _offset: u64,
+ _size: u32, reply: ReplyData) {
+ reply.error(ENOENT);
+ }
+ fn readdir (&mut self, _req: &Request, ino: u64, _fh: u64, offset: u64,
+ reply: ReplyDirectory) {
+ reply.error(ENOENT);
+ }
+}
+
+fn usage() {
+ println!("{} <mountpoint>", std::env::args().nth(0).unwrap());
+}
+
+fn mount(mountpoint: &OsStr) {
+ let fs = MemFs { data: get_data1() };
+ fuse::mount(fs, &mountpoint, &[]).unwrap()
+}
+
+fn main() {
+ println!("{:?}", get_data1());
+ match std::env::args_os().nth(1) {
+ Some(mountpoint) => mount(&mountpoint),
+ None => usage(),
+ }
+}