about summary refs log tree commit diff
path: root/src/libstd/io
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-01-09 17:35:09 +0000
committerbors <bors@rust-lang.org>2015-01-09 17:35:09 +0000
commit87ed884a9c3471299609da6c46bab142db388717 (patch)
tree00793af0cedc3a1cd04e88f72f7a62184342a901 /src/libstd/io
parent2e2372c6c4a265992b0eb615ea9fdee4ab999143 (diff)
parent577d0dbcb88a53e45e5c24c3a9a2e1c22acd31aa (diff)
downloadrust-87ed884a9c3471299609da6c46bab142db388717.tar.gz
rust-87ed884a9c3471299609da6c46bab142db388717.zip
Merge pull request #20699 from vhbit/ios-archs
Better iOS support

Reviewed-by: alexcrichton
Diffstat (limited to 'src/libstd/io')
-rw-r--r--src/libstd/io/test.rs29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/libstd/io/test.rs b/src/libstd/io/test.rs
index 6eeef175f73..67c14dc2dc1 100644
--- a/src/libstd/io/test.rs
+++ b/src/libstd/io/test.rs
@@ -23,16 +23,23 @@ pub fn next_test_port() -> u16 {
     base_port() + NEXT_OFFSET.fetch_add(1, Ordering::Relaxed) as u16
 }
 
-/// Get a temporary path which could be the location of a unix socket
-pub fn next_test_unix() -> Path {
+// iOS has a pretty long tmpdir path which causes pipe creation
+// to like: invalid argument: path must be smaller than SUN_LEN
+fn next_test_unix_socket() -> String {
     static COUNT: AtomicUint = ATOMIC_UINT_INIT;
     // base port and pid are an attempt to be unique between multiple
     // test-runners of different configurations running on one
     // buildbot, the count is to be unique within this executable.
-    let string = format!("rust-test-unix-path-{}-{}-{}",
-                         base_port(),
-                         unsafe {libc::getpid()},
-                         COUNT.fetch_add(1, Ordering::Relaxed));
+    format!("rust-test-unix-path-{}-{}-{}",
+            base_port(),
+            unsafe {libc::getpid()},
+            COUNT.fetch_add(1, Ordering::Relaxed))
+}
+
+/// Get a temporary path which could be the location of a unix socket
+#[cfg(not(target_os = "ios"))]
+pub fn next_test_unix() -> Path {
+    let string = next_test_unix_socket();
     if cfg!(unix) {
         os::tmpdir().join(string)
     } else {
@@ -40,6 +47,12 @@ pub fn next_test_unix() -> Path {
     }
 }
 
+/// Get a temporary path which could be the location of a unix socket
+#[cfg(target_os = "ios")]
+pub fn next_test_unix() -> Path {
+    Path::new(format!("/var/tmp/{}", next_test_unix_socket()))
+}
+
 /// Get a unique IPv4 localhost:port pair starting at 9600
 pub fn next_test_ip4() -> SocketAddr {
     SocketAddr { ip: Ipv4Addr(127, 0, 0, 1), port: next_test_port() }
@@ -99,7 +112,7 @@ pub fn raise_fd_limit() {
 /// multithreaded scheduler testing, depending on the number of cores available.
 ///
 /// This fixes issue #7772.
-#[cfg(target_os="macos")]
+#[cfg(any(target_os = "macos", target_os = "ios"))]
 #[allow(non_camel_case_types)]
 mod darwin_fd_limit {
     use libc;
@@ -156,7 +169,7 @@ mod darwin_fd_limit {
     }
 }
 
-#[cfg(not(target_os="macos"))]
+#[cfg(not(any(target_os = "macos", target_os = "ios")))]
 mod darwin_fd_limit {
     pub unsafe fn raise_fd_limit() {}
 }