aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-12-20 00:01:32 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-12-20 00:01:32 +0530
commitd135af33af916d24231c3f43d9cdb541278b124d (patch)
tree9f8ecb75ca885f9b218a58e4aaba4ebdb0b3cb18
parentcc1891d351016682c6817d5c825c27a777c1acd6 (diff)
downloadnnn-d135af33af916d24231c3f43d9cdb541278b124d.tar.gz
A fancier func to get order of 2
-rw-r--r--nnn.c39
1 files changed, 11 insertions, 28 deletions
diff --git a/nnn.c b/nnn.c
index 20a5f0a..b2f5da3 100644
--- 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