about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-09-16 11:30:42 -0700
committerbors <bors@rust-lang.org>2013-09-16 11:30:42 -0700
commit0ec4d34b3f0fa1897ace96475a32ff0c8e15b33b (patch)
treeac2eb072f640149efa009fdf710f7aa8fe2a523a
parent250c3d47dfb56c0ef5581b8ff65958b226dc656a (diff)
parent6d9c399ee2a462f14631fe2df905d16fad9a8143 (diff)
downloadrust-0ec4d34b3f0fa1897ace96475a32ff0c8e15b33b.tar.gz
rust-0ec4d34b3f0fa1897ace96475a32ff0c8e15b33b.zip
auto merge of #9211 : klutzy/rust/win32-fix, r=alexcrichton
-rw-r--r--src/libextra/fileinput.rs9
-rw-r--r--src/libstd/os.rs19
-rw-r--r--src/libstd/rt/io/file.rs8
-rw-r--r--src/libstd/rt/io/net/tcp.rs9
-rw-r--r--src/libstd/rt/io/support.rs3
-rw-r--r--src/libstd/rt/uv/file.rs2
-rw-r--r--src/libstd/rt/uv/uvio.rs2
-rw-r--r--src/libstd/rt/uv/uvll.rs30
8 files changed, 47 insertions, 35 deletions
diff --git a/src/libextra/fileinput.rs b/src/libextra/fileinput.rs
index 020da792ed7..25d11d413c0 100644
--- a/src/libextra/fileinput.rs
+++ b/src/libextra/fileinput.rs
@@ -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"];
@@ -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,
@@ -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,
@@ -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(
@@ -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,
@@ -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,
@@ -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"));
@@ -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,
@@ -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);
diff --git a/src/libstd/os.rs b/src/libstd/os.rs
index 5269eca888a..c45f2af8f7e 100644
--- a/src/libstd/os.rs
+++ b/src/libstd/os.rs
@@ -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;
@@ -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;
@@ -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,
@@ -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)
         }
     }
 
diff --git a/src/libstd/rt/io/file.rs b/src/libstd/rt/io/file.rs
index 3bc0e74c782..c24f4eb257e 100644
--- a/src/libstd/rt/io/file.rs
+++ b/src/libstd/rt/io/file.rs
@@ -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();
 }
@@ -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();
 }
@@ -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();
 }
@@ -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();
 }
@@ -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();
 }
diff --git a/src/libstd/rt/io/net/tcp.rs b/src/libstd/rt/io/net/tcp.rs
index be8a051a066..55abc4ab135 100644
--- a/src/libstd/rt/io/net/tcp.rs
+++ b/src/libstd/rt/io/net/tcp.rs
@@ -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 };
diff --git a/src/libstd/rt/io/support.rs b/src/libstd/rt/io/support.rs
index afbff77f988..59db8194963 100644
--- a/src/libstd/rt/io/support.rs
+++ b/src/libstd/rt/io/support.rs
@@ -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));
diff --git a/src/libstd/rt/uv/file.rs b/src/libstd/rt/uv/file.rs
index 45a5fce3f1e..e87e2d4b1e4 100644
--- a/src/libstd/rt/uv/file.rs
+++ b/src/libstd/rt/uv/file.rs
@@ -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();
     }
diff --git a/src/libstd/rt/uv/uvio.rs b/src/libstd/rt/uv/uvio.rs
index e8af0c749a0..b930ea2437e 100644
--- a/src/libstd/rt/uv/uvio.rs
+++ b/src/libstd/rt/uv/uvio.rs
@@ -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();
@@ -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();
diff --git a/src/libstd/rt/uv/uvll.rs b/src/libstd/rt/uv/uvll.rs
index 5bf04110abf..8f3cef4d238 100644
--- a/src/libstd/rt/uv/uvll.rs
+++ b/src/libstd/rt/uv/uvll.rs
@@ -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,
@@ -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,
@@ -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());
     }