stdlib: Migrate rust_file_is_dir() over to the C stack, and add a void type

This commit is contained in:
Patrick Walton 2011-10-04 18:19:59 -07:00
parent 990233eb3d
commit 9698ef89a0
2 changed files with 13 additions and 3 deletions

View file

@ -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] {

View file

@ -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;