From 9698ef89a0c5513b9670f6ec56ea06de5728eb5a Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 4 Oct 2011 18:19:59 -0700 Subject: [PATCH] stdlib: Migrate rust_file_is_dir() over to the C stack, and add a void type --- src/lib/fs.rs | 9 ++++++--- src/lib/util.rs | 7 +++++++ 2 files changed, 13 insertions(+), 3 deletions(-) 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;