diff options
| author | bors <bors@rust-lang.org> | 2014-01-02 00:51:51 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-01-02 00:51:51 -0800 |
| commit | ee634e3ac455032227f44ee7577b3d65be4acb61 (patch) | |
| tree | 914c7550379266155b92ca9fc8380bae5c859ab4 /src/libnative | |
| parent | e34b1eaccec107a76513d227fe4d6f15a6281d29 (diff) | |
| parent | 1c3c0103c4f0719479b4737c9216b5481561c69a (diff) | |
| download | rust-ee634e3ac455032227f44ee7577b3d65be4acb61.tar.gz rust-ee634e3ac455032227f44ee7577b3d65be4acb61.zip | |
auto merge of #11265 : c-a/rust/byteswap_from, r=alexcrichton
This patchset adds intrinsics similar to the to_[be|le][16|32|64] intrinsics but for going in the reverse direction, e.g. from big/little endian to host endian. Implementation wise they do exactly the same as the corresponding to_* functions but I think it anyway make sense to have them since using the to_* functions in the reverse direction is not entirely intuitive. The first patch adds the intrinsics and the two following changes instances of bswap* to use the [to|from]_* intrinsics instead.
Diffstat (limited to 'src/libnative')
| -rw-r--r-- | src/libnative/io/net.rs | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/libnative/io/net.rs b/src/libnative/io/net.rs index 6736641c858..241a69ad4e6 100644 --- a/src/libnative/io/net.rs +++ b/src/libnative/io/net.rs @@ -26,15 +26,11 @@ use super::file::keep_going; #[cfg(windows)] pub type sock_t = libc::SOCKET; #[cfg(unix)] pub type sock_t = super::file::fd_t; -#[cfg(target_endian = "big")] pub fn htons(x: u16) -> u16 { x } -#[cfg(target_endian = "big")] pub fn ntohs(x: u16) -> u16 { x } -#[cfg(target_endian = "little")] pub fn htons(u: u16) -> u16 { - unsafe { intrinsics::bswap16(u as i16) as u16 } + intrinsics::to_be16(u as i16) as u16 } -#[cfg(target_endian = "little")] pub fn ntohs(u: u16) -> u16 { - unsafe { intrinsics::bswap16(u as i16) as u16 } + intrinsics::from_be16(u as i16) as u16 } enum InAddr { |
