summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2019-08-08 09:52:20 -0400
committerJakob Kaivo <jkk@ung.org>2019-08-08 09:52:20 -0400
commitae880f1d803dd2bf4473849c4ce3860e398a4aa8 (patch)
treee8413836631308578ce017a945f6f7db96d34a0a
parente9e1b7d35ff18b8b111b22bf69db049674f2864c (diff)
add BINSTRLEN
-rw-r--r--binary.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/binary.h b/binary.h
index cb8bb36..5011f64 100644
--- a/binary.h
+++ b/binary.h
@@ -2,10 +2,10 @@
#include <string.h>
#include <stdint.h>
-#define BIT_UINTMAXBITS (sizeof(uintmax_t) * CHAR_BIT)
+#define BIN_UINTMAXBITS (sizeof(uintmax_t) * CHAR_BIT)
#define BIN_BIT(_s, _b) (\
- sizeof(_s) < (_b + 2) || (_b + 2) > BIT_UINTMAXBITS ? \
+ sizeof(_s) < (_b + 2) || (_b + 2) > BIN_UINTMAXBITS ? \
(uintmax_t)0 : \
_s[sizeof(_s)-(_b+2)] == '0' ? \
(uintmax_t)0 : \
@@ -31,11 +31,12 @@
BIN_BIT(_s, 60) + BIN_BIT(_s, 61) + BIN_BIT(_s, 62) + BIN_BIT(_s, 63) \
)
-#define BIN(_n) BIN_FROM_ARRAY(#_n)
+#define BINSTRLEN (BIN_UINTMAXBITS + 1)
+#define BIN(_n) (BIN_FROM_ARRAY(#_n))
static uintmax_t binfromstr(const char *s)
{
- char array[BIT_UINTMAXBITS + 1];
+ char array[BINSTRLEN];
memset(array, '0', sizeof(array));
strcpy(array + (sizeof(array) - strlen(s)) - 1, s);
return BIN_FROM_ARRAY(array);
@@ -45,7 +46,7 @@ static char *binstr(size_t n, char s[n], uintmax_t b)
{
memset(s, '0', n);
s[n - 1] = '\0';
- for (size_t i = 0; i < n - 2 && i < BIT_UINTMAXBITS; i++) {
+ for (size_t i = 0; i < n - 2 && i < BIN_UINTMAXBITS; i++) {
if (b & ((uintmax_t)1 << i)) {
s[n - (i + 2)] = '1';
}