Skip to content

Commit

Permalink
flip order of args in mapdir
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark McCaskey committed May 20, 2019
1 parent be4dd45 commit 7cc967e
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion lib/wasi/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ pub fn generate_import_object(
args: Vec<Vec<u8>>,
envs: Vec<Vec<u8>>,
preopened_files: Vec<String>,
mapped_dirs: Vec<(PathBuf, String)>,
mapped_dirs: Vec<(String, PathBuf)>,
) -> ImportObject {
let state_gen = move || {
fn state_destructor(data: *mut c_void) {
Expand Down
14 changes: 7 additions & 7 deletions lib/wasi/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ pub struct WasiFs {
impl WasiFs {
pub fn new(
preopened_dirs: &[String],
mapped_dirs: &[(PathBuf, String)],
mapped_dirs: &[(String, PathBuf)],
) -> Result<Self, String> {
debug!("wasi::fs::inodes");
let inodes = Arena::new();
Expand Down Expand Up @@ -218,28 +218,28 @@ impl WasiFs {
.expect("Could not open fd");
}
debug!("wasi::fs::mapped_dirs");
for (src_dir, dest_dir) in mapped_dirs {
debug!("Attempting to open {:?} at {}", src_dir, dest_dir);
for (alias, real_dir) in mapped_dirs {
debug!("Attempting to open {:?} at {}", dest_dir, alias);
// TODO: think about this
let default_rights = 0x1FFFFFFF; // all rights
let cur_dir_metadata = src_dir
let cur_dir_metadata = real_dir
.metadata()
.expect("mapped dir not at previously verified location");
let kind = if cur_dir_metadata.is_dir() {
Kind::Dir {
parent: None,
path: src_dir.clone(),
path: real_dir.clone(),
entries: Default::default(),
}
} else {
return Err(format!(
"WASI only supports pre-opened directories right now; found \"{:?}\"",
&src_dir,
&real_dir,
));
};
// TODO: handle nested pats in `file`
let inode_val =
InodeVal::from_file_metadata(&cur_dir_metadata, dest_dir.clone(), true, kind);
InodeVal::from_file_metadata(&cur_dir_metadata, alias.clone(), true, kind);

let inode = wasi_fs.inodes.insert(inode_val);
wasi_fs.inodes[inode].stat.st_ino = wasi_fs.inode_counter.get();
Expand Down
13 changes: 8 additions & 5 deletions src/bin/wasmer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,16 +234,19 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
let mapped_dirs = {
let mut md = vec![];
for entry in options.mapped_dirs.iter() {
if let &[source, dest] = &entry.split(':').collect::<Vec<&str>>()[..] {
let pb = PathBuf::from(&source);
if let &[alias, real_dir] = &entry.split(':').collect::<Vec<&str>>()[..] {
let pb = PathBuf::from(&real_dir);
if let Ok(pb_metadata) = pb.metadata() {
if !pb_metadata.is_dir() {
return Err(format!("\"{}\" exists, but it is not a directory", &source));
return Err(format!(
"\"{}\" exists, but it is not a directory",
&real_dir
));
}
} else {
return Err(format!("Directory \"{}\" does not exist", &source));
return Err(format!("Directory \"{}\" does not exist", &real_dir));
}
md.push((pb, dest.to_string()));
md.push((alias.to_string(), pb));
continue;
}
return Err(format!(
Expand Down

0 comments on commit 7cc967e

Please sign in to comment.