Newer
Older
extern crate redoxfs;
extern crate system;
use std::env;
use std::fs::File;
use std::io::{Read, Write};
use std::mem::size_of;
use image::Image;
use system::scheme::{Packet, Scheme};
pub mod image;
fn scheme(fs: FileSystem) {
//In order to handle example:, we create :example
let mut scheme = FileScheme::new(fs);
let mut socket = File::create(":redoxfs").unwrap();
loop {
let mut packet = Packet::default();
while socket.read(&mut packet).unwrap() == size_of::<Packet>() {
scheme.handle(&mut packet);
socket.write(&packet).unwrap();
}
}
}
fn main() {
let mut args = env::args();
if let Some(path) = args.nth(1) {
//Open an existing image
match Image::open(&path) {
Ok(disk) => match FileSystem::open(Box::new(disk)) {
Ok(filesystem) => {
println!("redoxfs: opened filesystem {}", path);
scheme(filesystem);
},
Err(err) => println!("redoxfs: failed to open filesystem {}: {}", path, err)
},
Err(err) => println!("redoxfs: failed to open image {}: {}", path, err)
}
} else {
println!("redoxfs: no disk image provided");
}
}