mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-18 09:53:26 +00:00
std: more windows fixes to os.rs and run.rs
This commit is contained in:
parent
56730c094c
commit
c14e14e63a
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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<T>(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<T>(prog: &str, args: &[~str], cb: &fn(**libc::c_char) -> T) -> T {
|
||||
|
||||
#[cfg(unix)]
|
||||
fn with_envp<T>(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.
|
||||
|
Loading…
Reference in New Issue
Block a user