From 0b4b3cd55ce83be04c8836cf63413fd4dcd2c31a Mon Sep 17 00:00:00 2001 From: Peter Limkilde Svendsen <peter.limkilde@gmail.com> Date: Mon, 20 Jan 2020 17:57:56 +0000 Subject: [PATCH] Use lossless type conversion in ctype.h --- src/header/ctype/mod.rs | 46 ++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/src/header/ctype/mod.rs b/src/header/ctype/mod.rs index eff8ba3ed..c9a58dfd5 100644 --- a/src/header/ctype/mod.rs +++ b/src/header/ctype/mod.rs @@ -4,75 +4,79 @@ use crate::platform::types::*; #[no_mangle] pub extern "C" fn isalnum(c: c_int) -> c_int { - (isdigit(c) != 0 || isalpha(c) != 0) as c_int + c_int::from(isdigit(c) != 0 || isalpha(c) != 0) } #[no_mangle] pub extern "C" fn isalpha(c: c_int) -> c_int { - (islower(c) != 0 || isupper(c) != 0) as c_int + c_int::from(islower(c) != 0 || isupper(c) != 0) } #[no_mangle] pub extern "C" fn isascii(c: c_int) -> c_int { - ((c & !0x7f) == 0) as c_int + c_int::from((c & !0x7f) == 0) } #[no_mangle] pub extern "C" fn isblank(c: c_int) -> c_int { - (c == ' ' as c_int || c == '\t' as c_int) as c_int + c_int::from(c == c_int::from(b' ') || c == c_int::from(b'\t')) } #[no_mangle] pub extern "C" fn iscntrl(c: c_int) -> c_int { - ((c >= 0x00 && c <= 0x1f) || c == 0x7f) as c_int + c_int::from((c >= 0x00 && c <= 0x1f) || c == 0x7f) } #[no_mangle] pub extern "C" fn isdigit(c: c_int) -> c_int { - (c >= b'0' as c_int && c <= b'9' as c_int) as c_int + c_int::from(c >= c_int::from(b'0') && c <= c_int::from(b'9')) } #[no_mangle] pub extern "C" fn isgraph(c: c_int) -> c_int { - (c >= 0x21 && c <= 0x7e) as c_int + c_int::from(c >= 0x21 && c <= 0x7e) } #[no_mangle] pub extern "C" fn islower(c: c_int) -> c_int { - (c >= b'a' as c_int && c <= b'z' as c_int) as c_int + c_int::from(c >= c_int::from(b'a') && c <= c_int::from(b'z')) } #[no_mangle] pub extern "C" fn isprint(c: c_int) -> c_int { - (c >= 0x20 && c < 0x7f) as c_int + c_int::from(c >= 0x20 && c < 0x7f) } #[no_mangle] pub extern "C" fn ispunct(c: c_int) -> c_int { - ((c >= b'!' as c_int && c <= b'/' as c_int) - || (c >= b':' as c_int && c <= b'@' as c_int) - || (c >= b'[' as c_int && c <= b'`' as c_int) - || (c >= b'{' as c_int && c <= b'~' as c_int)) as c_int + c_int::from( + (c >= c_int::from(b'!') && c <= c_int::from(b'/')) + || (c >= c_int::from(b':') && c <= c_int::from(b'@')) + || (c >= c_int::from(b'[') && c <= c_int::from(b'`')) + || (c >= c_int::from(b'{') && c <= c_int::from(b'~')), + ) } #[no_mangle] pub extern "C" fn isspace(c: c_int) -> c_int { - (c == ' ' as c_int - || c == '\t' as c_int - || c == '\n' as c_int - || c == '\r' as c_int - || c == 0x0b - || c == 0x0c) as c_int + c_int::from( + c == c_int::from(b' ') + || c == c_int::from(b'\t') + || c == c_int::from(b'\n') + || c == c_int::from(b'\r') + || c == 0x0b + || c == 0x0c, + ) } #[no_mangle] pub extern "C" fn isupper(c: c_int) -> c_int { - (c >= b'A' as c_int && c <= b'Z' as c_int) as c_int + c_int::from(c >= c_int::from(b'A') && c <= c_int::from(b'Z')) } #[no_mangle] pub extern "C" fn isxdigit(c: c_int) -> c_int { - (isdigit(c) != 0 || (c | 32 >= b'a' as c_int && c | 32 <= 'f' as c_int)) as c_int + c_int::from(isdigit(c) != 0 || (c | 32 >= c_int::from(b'a') && c | 32 <= c_int::from(b'f'))) } #[no_mangle] -- GitLab