summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/data.rs16
-rw-r--r--src/lib.rs1
-rw-r--r--src/main.rs50
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(),
+ }
+}