commit d135af33af916d24231c3f43d9cdb541278b124d
parent cc1891d351016682c6817d5c825c27a777c1acd6
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date: Wed, 20 Dec 2017 00:01:32 +0530
A fancier func to get order of 2
Diffstat:
| M | nnn.c | | | 39 | +++++++++++---------------------------- |
1 file changed, 11 insertions(+), 28 deletions(-)
diff --git a/nnn.c b/nnn.c
@@ -1564,37 +1564,20 @@ show_stats(char *fpath, char *fname, struct stat *sb)
return 0;
}
+/*
+ * Get the order of 2 for this size
+ * In brief - return the number of trailing zeroes
+ */
static int
getorder(size_t size)
{
- switch (size) {
- case 4096:
- return 12;
- case 512:
- return 9;
- case 8192:
- return 13;
- case 16384:
- return 14;
- case 32768:
- return 15;
- case 65536:
- return 16;
- case 131072:
- return 17;
- case 262144:
- return 18;
- case 524288:
- return 19;
- case 1048576:
- return 20;
- case 2048:
- return 11;
- case 1024:
- return 10;
- default:
- return 0;
- }
+ static int count, mask;
+
+ for (mask = 1, count = 0; count < 32; mask <<= 1, ++count)
+ if ((size & mask) != 0)
+ return count;
+
+ return 32;
}
static size_t