While it might sound silly, who knows what happens some day.
Individual data centers are moving beyond exabytes,
and RISC-V already specifies a 128-bit architecture variant.
Alternatively, someone might decide that multiple exabytes
should be reported in terabytes instead (corectness improves
hackability).
I tested the patch by changing the constant "BKMGTPE" to just "BKMGT"
and running:
$ ./truncate -s 1E /tmp/zeros
$ ./ls -lh /tmp/zeros
Before (incorrect, 1 EiB != 1024.0 B):
-rw-r--r-- 1 arusekk arusekk 1024.0 Feb 06 11:53 /tmp/zeros
After (corrected, 1 EiB == 1048576 TiB):
-rw-r--r-- 1 arusekk arusekk 1048576.0T Feb 06 11:53 /tmp/zeros
A side effect is less memory accesses/calls, so listing a large
directory could become marginally faster.
---
libutil/human.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libutil/human.c b/libutil/human.c
index 7e39ba5..0f80b9b 100644
--- a/libutil/human.c
+++ b/libutil/human.c
@@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
-#include <stdint.h>
#include "../util.h"
@@ -13,7 +13,7 @@ humansize(off_t n)
double size;
int i;
- for (size = n, i = 0; size >= 1024 && i < strlen(postfixes); i++)
+ for (size = n, i = 0; size >= 1024 && postfixes[i+1]; i++)
size /= 1024;
if (!i)
--
2.52.0