From c14e14e63aeefa5c94648dd921bd99a9dadeb060 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 9 Aug 2013 11:13:26 -0700 Subject: std: more windows fixes to os.rs and run.rs --- src/libstd/os.rs | 8 +++++--- src/libstd/run.rs | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/os.rs b/src/libstd/os.rs index 57415e89cfb..365ddeb4f64 100644 --- a/src/libstd/os.rs +++ b/src/libstd/os.rs @@ -640,7 +640,7 @@ pub fn make_dir(p: &Path, mode: c_int) -> bool { use os::win32::as_utf16_p; // FIXME: turn mode into something useful? #2623 do as_utf16_p(p.to_str()) |buf| { - libc::CreateDirectoryW(buf, ptr::null() as LPCWSTR) + libc::CreateDirectoryW(buf, ptr::mut_null()) != (0 as libc::BOOL) } } @@ -1080,8 +1080,8 @@ pub fn last_os_error() -> ~str { let mut buf = [0 as c_char, ..TMPBUF_SZ]; - do buf.as_mut_buf |buf, len| { - unsafe { + unsafe { + do buf.as_mut_buf |buf, len| { let res = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, ptr::mut_null(), @@ -1093,7 +1093,9 @@ pub fn last_os_error() -> ~str { if res == 0 { fail!("[%?] FormatMessage failure", errno()); } + } + do buf.as_imm_buf |buf, _len| { str::raw::from_c_str(buf) } } diff --git a/src/libstd/run.rs b/src/libstd/run.rs index 83e0846c351..23ee52389a0 100644 --- a/src/libstd/run.rs +++ b/src/libstd/run.rs @@ -25,7 +25,6 @@ use prelude::*; use ptr; use task; use vec::ImmutableVector; -use vec; /** * A value representing a child process. @@ -691,6 +690,8 @@ fn spawn_process_os(prog: &str, args: &[~str], #[cfg(unix)] fn with_argv(prog: &str, args: &[~str], cb: &fn(**libc::c_char) -> T) -> T { + use vec; + // We can't directly convert `str`s into `*char`s, as someone needs to hold // a reference to the intermediary byte buffers. So first build an array to // hold all the ~[u8] byte strings. @@ -717,6 +718,8 @@ fn with_argv(prog: &str, args: &[~str], cb: &fn(**libc::c_char) -> T) -> T { #[cfg(unix)] fn with_envp(env: Option<&[(~str, ~str)]>, cb: &fn(*c_void) -> T) -> T { + use vec; + // On posixy systems we can pass a char** for envp, which is a // null-terminated array of "k=v\n" strings. Like `with_argv`, we have to // have a temporary buffer to hold the intermediary `~[u8]` byte strings. -- cgit 1.4.1-3-g733a5