Convert rust_getcwd to istrs. Issue #855

This commit is contained in:
Brian Anderson 2011-09-01 15:07:35 -07:00
parent 372aa4d210
commit 82634cd530
4 changed files with 8 additions and 19 deletions

View file

@ -75,11 +75,11 @@ fn waitpid(pid: int) -> int {
} }
native "rust" mod rustrt { native "rust" mod rustrt {
fn rust_getcwd() -> str; fn rust_getcwd() -> istr;
} }
fn getcwd() -> istr { fn getcwd() -> istr {
ret istr::from_estr(rustrt::rust_getcwd()); ret rustrt::rust_getcwd();
} }

View file

@ -72,11 +72,11 @@ fn waitpid(pid: int) -> int {
} }
native "rust" mod rustrt { native "rust" mod rustrt {
fn rust_getcwd() -> str; fn rust_getcwd() -> istr;
} }
fn getcwd() -> istr { fn getcwd() -> istr {
ret istr::from_estr(rustrt::rust_getcwd()); ret rustrt::rust_getcwd();
} }

View file

@ -76,13 +76,13 @@ fn fd_FILE(fd: int) -> libc::FILE {
native "rust" mod rustrt { native "rust" mod rustrt {
fn rust_process_wait(handle: int) -> int; fn rust_process_wait(handle: int) -> int;
fn rust_getcwd() -> str; fn rust_getcwd() -> istr;
} }
fn waitpid(pid: int) -> int { ret rustrt::rust_process_wait(pid); } fn waitpid(pid: int) -> int { ret rustrt::rust_process_wait(pid); }
fn getcwd() -> istr { fn getcwd() -> istr {
ret istr::from_estr(rustrt::rust_getcwd()); ret rustrt::rust_getcwd();
} }
// Local Variables: // Local Variables:

View file

@ -55,7 +55,7 @@ last_os_error(rust_task *task) {
return st; return st;
} }
extern "C" CDECL rust_str * extern "C" CDECL rust_vec *
rust_getcwd(rust_task *task) { rust_getcwd(rust_task *task) {
LOG(task, task, "rust_getcwd()"); LOG(task, task, "rust_getcwd()");
@ -70,18 +70,7 @@ rust_getcwd(rust_task *task) {
return NULL; return NULL;
} }
size_t fill = strlen(cbuf) + 1; return make_istr(task->kernel, cbuf, strlen(cbuf), "rust_str(getcwd");
size_t alloc = next_power_of_two(sizeof(rust_str) + fill);
void *mem = task->malloc(alloc, "rust_str(getcwd)");
if (!mem) {
task->fail();
return NULL;
}
rust_str *st;
st = new (mem) rust_str(alloc, fill, (const uint8_t *)cbuf);
return st;
} }
extern "C" CDECL extern "C" CDECL