From 92483316beaab8082635c35a5aca7cbe18b4d9f3 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Fri, 11 Sep 2020 01:15:48 +0100 Subject: unpack: Add BITMASK helper macro --- unpack.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/unpack.c b/unpack.c index 5331525..1bf0ddf 100644 --- a/unpack.c +++ b/unpack.c @@ -18,6 +18,8 @@ enum endian { BIG, LITTLE }; +#define BITMASK(n) (UINTMAX_MAX >> (sizeof (uintmax_t) * CHAR_BIT - n)) + static float ieee754tof(uintmax_t b) { bool isneg; @@ -144,7 +146,7 @@ enum pack_status unpack(void *buf_, size_t size, const char *fmt, ...) if (!(val.u & (UINTMAX_C(1) << (s * 8 - 1)))) { vals = val.u; } else { - uintmax_t offt = UINTMAX_MAX >> (sizeof offt * CHAR_BIT - s * 8); + uintmax_t offt = BITMASK(s * 8); vals = val.u - offt - 1; } val.s = vals; -- cgit v1.2.3-54-g00ecf