diff --git a/src/lib.rs b/src/lib.rs index 42cf0ef..0a105c3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -691,11 +691,14 @@ impl UnixListener { /// /// let listener = UnixListener::bind("/path/to/the/socket").unwrap(); /// ``` + pub fn bind<P: AsRef<Path>>(path: P) -> io::Result<UnixListener> { unsafe { let inner = try!(Inner::new(libc::SOCK_STREAM)); let (addr, len) = try!(sockaddr_un(path)); - + #[cfg(target_os="android")] + try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len as i32))); + #[cfg(not(target_os="android"))] try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len))); try!(cvt(libc::listen(inner.0, 128))); @@ -928,11 +931,14 @@ impl UnixDatagram { /// /// let socket = UnixDatagram::bind("/path/to/my/socket").unwrap(); /// ``` + pub fn bind<P: AsRef<Path>>(path: P) -> io::Result<UnixDatagram> { unsafe { let inner = try!(Inner::new(libc::SOCK_DGRAM)); let (addr, len) = try!(sockaddr_un(path)); - + #[cfg(target_os="android")] + try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len as i32))); + #[cfg(not(target_os="android"))] try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len))); Ok(UnixDatagram { inner: inner })