rt/core: impl os::getcwd() in rust ref #4812

This commit is contained in:
Jeff Olson 2013-02-13 23:00:34 -08:00 committed by Brian Anderson
parent 878a31066d
commit 4bc26ce575
3 changed files with 8 additions and 22 deletions

View File

@ -68,10 +68,17 @@ pub mod rustrt {
} }
pub const TMPBUF_SZ : uint = 1000u; pub const TMPBUF_SZ : uint = 1000u;
const BUF_BYTES : uint = 2048u;
pub fn getcwd() -> Path { pub fn getcwd() -> Path {
let buf = [0 as libc::c_char, ..BUF_BYTES];
unsafe { unsafe {
Path(rustrt::rust_getcwd()) if(0 as *libc::c_char == libc::getcwd(
&buf[0],
BUF_BYTES as libc::size_t)) {
fail!();
}
Path(str::raw::from_c_str(&buf[0]))
} }
} }

View File

@ -52,25 +52,6 @@ timegm(struct tm *tm)
} }
#endif #endif
extern "C" CDECL rust_str *
rust_getcwd() {
rust_task *task = rust_get_current_task();
LOG(task, task, "rust_getcwd()");
char cbuf[BUF_BYTES];
#if defined(__WIN32__)
if (!_getcwd(cbuf, sizeof(cbuf))) {
#else
if (!getcwd(cbuf, sizeof(cbuf))) {
#endif
task->fail();
return NULL;
}
return make_str(task->kernel, cbuf, strlen(cbuf), "rust_str(getcwd)");
}
#if defined(__WIN32__) #if defined(__WIN32__)
extern "C" CDECL rust_vec_box * extern "C" CDECL rust_vec_box *
rust_env_pairs() { rust_env_pairs() {

View File

@ -29,7 +29,6 @@ rust_new_task_in_sched
rust_num_threads rust_num_threads
rust_path_is_dir rust_path_is_dir
rust_path_exists rust_path_exists
rust_getcwd
rust_get_stdin rust_get_stdin
rust_get_stdout rust_get_stdout
rust_get_stderr rust_get_stderr
@ -43,7 +42,6 @@ rust_sched_current_nonlazy_threads
rust_sched_threads rust_sched_threads
rust_set_exit_status rust_set_exit_status
rust_start rust_start
rust_getcwd
rust_env_pairs rust_env_pairs
rust_task_yield rust_task_yield
rust_task_is_unwinding rust_task_is_unwinding