diff --git a/src/lib/fs.rs b/src/lib/fs.rs index 06243b6d3aa..a2e81184d01 100644 --- a/src/lib/fs.rs +++ b/src/lib/fs.rs @@ -1,9 +1,10 @@ import os::getcwd; +import util::void; import os_fs; -native "rust" mod rustrt { - fn rust_file_is_dir(path: str::sbuf) -> int; +native "c-stack-cdecl" mod rustrt { + fn rust_file_is_dir(unused: *void, path: *u8) -> int; } fn path_sep() -> str { ret str::from_char(os_fs::path_sep); } @@ -52,7 +53,9 @@ fn connect_many(paths: [path]) : vec::is_not_empty(paths) -> path { } fn file_is_dir(p: path) -> bool { - ret str::as_buf(p, {|buf| rustrt::rust_file_is_dir(buf) != 0 }); + ret str::as_buf(p, { + |buf| rustrt::rust_file_is_dir(ptr::null(), buf) != 0 + }); } fn list_dir(p: path) -> [str] { diff --git a/src/lib/util.rs b/src/lib/util.rs index 1d9c28d99e4..eb1790f569d 100644 --- a/src/lib/util.rs +++ b/src/lib/util.rs @@ -17,6 +17,13 @@ pure fn rational_leq(x: rational, y: rational) -> bool { } pure fn orb(a: bool, b: bool) -> bool { a || b } + +// An unconstructible type. Currently we're using this for unused parameters +// in native functions, but it may be useful for other purposes as well. +tag void { + void(@void); +} + // Local Variables: // mode: rust; // fill-column: 78;