Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Win32 fixes #9211

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions src/libextra/fileinput.rs
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_make_path_option_vec() {
let strs = [~"some/path",
~"some/other/path"];
Expand All @@ -448,7 +447,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_fileinput_read_byte() {
let filenames = make_path_option_vec(vec::from_fn(
3,
Expand Down Expand Up @@ -479,7 +477,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_fileinput_read() {
let filenames = make_path_option_vec(vec::from_fn(
3,
Expand All @@ -500,7 +497,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_input_vec() {
let mut all_lines = ~[];
let filenames = make_path_option_vec(vec::from_fn(
Expand All @@ -524,7 +520,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_input_vec_state() {
let filenames = make_path_option_vec(vec::from_fn(
3,
Expand All @@ -547,7 +542,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_empty_files() {
let filenames = make_path_option_vec(vec::from_fn(
3,
Expand All @@ -572,7 +566,6 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_no_trailing_newline() {
let f1 =
Some(Path("tmp/lib-fileinput-test-no-trailing-newline-1.tmp"));
Expand All @@ -598,7 +591,6 @@ mod test {


#[test]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_next_file() {
let filenames = make_path_option_vec(vec::from_fn(
3,
Expand Down Expand Up @@ -630,7 +622,6 @@ mod test {

#[test]
#[should_fail]
#[ignore(cfg(windows))] // FIXME(#8810): rt::io::file and windows don't agree
fn test_input_vec_missing_file() {
do input_vec(make_path_option_vec([~"this/file/doesnt/exist"], true)) |line| {
println(line);
Expand Down
19 changes: 9 additions & 10 deletions src/libstd/os.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1135,18 +1135,19 @@ pub fn last_os_error() -> ~str {
#[fixed_stack_segment]; #[inline(never)];

use libc::types::os::arch::extra::DWORD;
use libc::types::os::arch::extra::LPSTR;
use libc::types::os::arch::extra::LPWSTR;
use libc::types::os::arch::extra::LPVOID;
use libc::types::os::arch::extra::WCHAR;

#[cfg(target_arch = "x86")]
#[link_name = "kernel32"]
#[abi = "stdcall"]
extern "stdcall" {
fn FormatMessageA(flags: DWORD,
fn FormatMessageW(flags: DWORD,
lpSrc: LPVOID,
msgId: DWORD,
langId: DWORD,
buf: LPSTR,
buf: LPWSTR,
nsize: DWORD,
args: *c_void)
-> DWORD;
Expand All @@ -1155,11 +1156,11 @@ pub fn last_os_error() -> ~str {
#[cfg(target_arch = "x86_64")]
#[link_name = "kernel32"]
extern {
fn FormatMessageA(flags: DWORD,
fn FormatMessageW(flags: DWORD,
lpSrc: LPVOID,
msgId: DWORD,
langId: DWORD,
buf: LPSTR,
buf: LPWSTR,
nsize: DWORD,
args: *c_void)
-> DWORD;
Expand All @@ -1173,11 +1174,11 @@ pub fn last_os_error() -> ~str {
let langId = 0x0800 as DWORD;
let err = errno() as DWORD;

let mut buf = [0 as c_char, ..TMPBUF_SZ];
let mut buf = [0 as WCHAR, ..TMPBUF_SZ];

unsafe {
do buf.as_mut_buf |buf, len| {
let res = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
let res = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
ptr::mut_null(),
err,
Expand All @@ -1190,9 +1191,7 @@ pub fn last_os_error() -> ~str {
}
}

do buf.as_imm_buf |buf, _len| {
str::raw::from_c_str(buf)
}
str::from_utf16(buf)
}
}

Expand Down
8 changes: 3 additions & 5 deletions src/libstd/rt/io/file.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,6 @@ fn file_test_smoke_test_impl() {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8810
fn file_test_io_smoke_test() {
file_test_smoke_test_impl();
}
Expand Down Expand Up @@ -236,7 +235,6 @@ fn file_test_io_non_positional_read_impl() {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8810
fn file_test_io_non_positional_read() {
file_test_io_non_positional_read_impl();
}
Expand Down Expand Up @@ -268,8 +266,8 @@ fn file_test_io_seeking_impl() {
assert!(tell_pos_post_read == message.len() as u64);
}
}

#[test]
#[ignore(cfg(windows))] // FIXME #8810
fn file_test_io_seek_and_tell_smoke_test() {
file_test_io_seeking_impl();
}
Expand Down Expand Up @@ -300,8 +298,8 @@ fn file_test_io_seek_and_write_impl() {
assert!(read_str == final_msg.to_owned());
}
}

#[test]
#[ignore(cfg(windows))] // FIXME #8810
fn file_test_io_seek_and_write() {
file_test_io_seek_and_write_impl();
}
Expand Down Expand Up @@ -340,8 +338,8 @@ fn file_test_io_seek_shakedown_impl() {
unlink(filename);
}
}

#[test]
#[ignore(cfg(windows))] // FIXME #8810
fn file_test_io_seek_shakedown() {
file_test_io_seek_shakedown_impl();
}
9 changes: 7 additions & 2 deletions src/libstd/rt/io/net/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,17 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8811
fn connect_error() {
do run_in_mt_newsched_task {
let mut called = false;
do io_error::cond.trap(|e| {
assert_eq!(e.kind, ConnectionRefused);
let expected_error = if cfg!(unix) {
ConnectionRefused
} else {
// On Win32, opening port 1 gives WSAEADDRNOTAVAIL error.
OtherIoError
};
assert_eq!(e.kind, expected_error);
called = true;
}).inside {
let addr = SocketAddr { ip: Ipv4Addr(0, 0, 0, 0), port: 1 };
Expand Down
3 changes: 1 addition & 2 deletions src/libstd/rt/io/support.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@ mod test {
use super::PathLike;

#[test]
#[ignore(cfg(windows))] // FIXME #8812
fn path_like_smoke_test() {
let expected = "/home";
let expected = if cfg!(unix) { "/home" } else { "C:\\" };
let path = Path(expected);
path.path_as_str(|p| assert!(p == expected));
path.path_as_str(|p| assert!(p == expected));
Expand Down
2 changes: 0 additions & 2 deletions src/libstd/rt/uv/file.rs
Original file line number Diff line number Diff line change
Expand Up @@ -408,13 +408,11 @@ mod test {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8814
fn file_test_full_simple() {
file_test_full_simple_impl();
}

#[test]
#[ignore(cfg(windows))] // FIXME #8814
fn file_test_full_simple_sync() {
file_test_full_simple_impl_sync();
}
Expand Down
2 changes: 0 additions & 2 deletions src/libstd/rt/uv/uvio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1740,7 +1740,6 @@ fn test_read_read_read() {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8816
fn test_udp_twice() {
do run_in_mt_newsched_task {
let server_addr = next_test_ip4();
Expand Down Expand Up @@ -1892,7 +1891,6 @@ fn file_test_uvio_full_simple_impl() {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8816
fn file_test_uvio_full_simple() {
do run_in_mt_newsched_task {
file_test_uvio_full_simple_impl();
Expand Down
30 changes: 27 additions & 3 deletions src/libstd/rt/uv/uvll.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ pub enum uv_handle_type {
UV_HANDLE_TYPE_MAX
}

#[cfg(unix)]
#[deriving(Eq)]
pub enum uv_req_type {
UV_UNKNOWN_REQ,
Expand All @@ -251,6 +252,31 @@ pub enum uv_req_type {
UV_REQ_TYPE_MAX
}

// uv_req_type may have additional fields defined by UV_REQ_TYPE_PRIVATE.
// See UV_REQ_TYPE_PRIVATE at libuv/include/uv-win.h
#[cfg(windows)]
#[deriving(Eq)]
pub enum uv_req_type {
UV_UNKNOWN_REQ,
UV_REQ,
UV_CONNECT,
UV_WRITE,
UV_SHUTDOWN,
UV_UDP_SEND,
UV_FS,
UV_WORK,
UV_GETADDRINFO,
UV_ACCEPT,
UV_FS_EVENT_REQ,
UV_POLL_REQ,
UV_PROCESS_EXIT,
UV_READ,
UV_UDP_RECV,
UV_WAKEUP,
UV_SIGNAL_REQ,
UV_REQ_TYPE_MAX
}

#[deriving(Eq)]
pub enum uv_membership {
UV_LEAVE_GROUP,
Expand Down Expand Up @@ -298,10 +324,8 @@ fn handle_sanity_check() {
}

#[test]
#[ignore(cfg(windows))] // FIXME #8817
#[fixed_stack_segment]
#[inline(never)]
fn request_sanity_check() {
#[fixed_stack_segment]; #[inline(never)];
unsafe {
assert_eq!(UV_REQ_TYPE_MAX as uint, rust_uv_req_type_max());
}
Expand Down