From d6de40bf6ea9513d305f522d2fb759c383fcca9b Mon Sep 17 00:00:00 2001 From: Sebastian Weisgerber Date: Fri, 19 Jan 2018 10:35:59 +0100 Subject: [PATCH 1/2] Added Android target CFG --- src/lib.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 42cf0ef..bdc9a86 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -691,6 +691,19 @@ impl UnixListener { /// /// let listener = UnixListener::bind("/path/to/the/socket").unwrap(); /// ``` + #[cfg(target_os="android")] + pub fn bind>(path: P) -> io::Result { + unsafe { + let inner = try!(Inner::new(libc::SOCK_STREAM)); + let (addr, len) = try!(sockaddr_un(path)); + + try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len as i32))); + try!(cvt(libc::listen(inner.0, 128))); + + Ok(UnixListener { inner: inner }) + } + } + #[cfg(not(target_os="android"))] pub fn bind>(path: P) -> io::Result { unsafe { let inner = try!(Inner::new(libc::SOCK_STREAM)); @@ -928,7 +941,19 @@ impl UnixDatagram { /// /// let socket = UnixDatagram::bind("/path/to/my/socket").unwrap(); /// ``` + #[cfg(target_os="android")] pub fn bind>(path: P) -> io::Result { + unsafe { + let inner = try!(Inner::new(libc::SOCK_DGRAM)); + let (addr, len) = try!(sockaddr_un(path)); + + try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len as i32))); + + Ok(UnixDatagram { inner: inner }) + } + } + #[cfg(not(target_os="android"))] + pub fn bind>(path: P) -> io::Result { unsafe { let inner = try!(Inner::new(libc::SOCK_DGRAM)); let (addr, len) = try!(sockaddr_un(path)); From 6ed98d3314bb049caa3791ce994a36d91bc1ac33 Mon Sep 17 00:00:00 2001 From: Sebastian Weisgerber Date: Fri, 19 Jan 2018 13:34:07 +0100 Subject: [PATCH 2/2] Removed code duplication --- src/lib.rs | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index bdc9a86..0a105c3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -691,24 +691,14 @@ impl UnixListener { /// /// let listener = UnixListener::bind("/path/to/the/socket").unwrap(); /// ``` - #[cfg(target_os="android")] - pub fn bind>(path: P) -> io::Result { - unsafe { - let inner = try!(Inner::new(libc::SOCK_STREAM)); - let (addr, len) = try!(sockaddr_un(path)); - try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len as i32))); - try!(cvt(libc::listen(inner.0, 128))); - - Ok(UnixListener { inner: inner }) - } - } - #[cfg(not(target_os="android"))] pub fn bind>(path: P) -> io::Result { 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))); @@ -941,23 +931,14 @@ impl UnixDatagram { /// /// let socket = UnixDatagram::bind("/path/to/my/socket").unwrap(); /// ``` - #[cfg(target_os="android")] + pub fn bind>(path: P) -> io::Result { 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))); - - Ok(UnixDatagram { inner: inner }) - } - } - #[cfg(not(target_os="android"))] - pub fn bind>(path: P) -> io::Result { - unsafe { - let inner = try!(Inner::new(libc::SOCK_DGRAM)); - let (addr, len) = try!(sockaddr_un(path)); - + #[cfg(not(target_os="android"))] try!(cvt(libc::bind(inner.0, &addr as *const _ as *const _, len))); Ok(UnixDatagram { inner: inner })