diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/data.rs | 16 | ||||
-rw-r--r-- | src/lib.rs | 1 | ||||
-rw-r--r-- | src/main.rs | 50 |
3 files changed, 67 insertions, 0 deletions
diff --git a/src/data.rs b/src/data.rs new file mode 100644 index 0000000..f652a13 --- /dev/null +++ b/src/data.rs @@ -0,0 +1,16 @@ +pub static MESSAGE: &'static str = "Hello"; + +#[derive(Debug)] +pub enum SimpleFsData { + File(u64, String), + Directory(u64, Vec<(String, SimpleFsData)>) +} + +// pub static HELLO: &'static SimpleFsData = +// SimpleFsData:File("hello.txt", "Hello World"); + +pub fn get_data1() -> SimpleFsData { + SimpleFsData::Directory( + 1, vec!(("hello".to_string(), + SimpleFsData::File(2, "Hello, World!".to_string())))) +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..7a345e4 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1 @@ +pub mod data; 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(), + } +} |