diff options
| author | 2017-12-20 00:01:32 +0530 | |
|---|---|---|
| committer | 2017-12-20 00:01:32 +0530 | |
| commit | d135af33af916d24231c3f43d9cdb541278b124d (patch) | |
| tree | 9f8ecb75ca885f9b218a58e4aaba4ebdb0b3cb18 | |
| parent | cc1891d351016682c6817d5c825c27a777c1acd6 (diff) | |
| download | nnn-d135af33af916d24231c3f43d9cdb541278b124d.tar.gz | |
A fancier func to get order of 2
| -rw-r--r-- | nnn.c | 39 |
1 files changed, 11 insertions, 28 deletions
@@ -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 |