[git commit] ls: implement ls -sh (human-readable allocated blocks)

Denys Vlasenko vda.linux at googlemail.com
Sat Jan 8 21:59:49 UTC 2022


commit: https://git.busybox.net/busybox/commit/?id=ff8fda848284e82d97299806b31c196651b372a5
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
display_single                                       979    1018     +39

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/ls.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/coreutils/ls.c b/coreutils/ls.c
index 48f5eb482..b69b80460 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -498,9 +498,16 @@ static NOINLINE unsigned display_single(const struct dnode *dn)
 
 	if (opt & OPT_i) /* show inode# */
 		column += printf("%7llu ", (long long) dn->dn_ino);
-//TODO: -h should affect -s too:
-	if (opt & OPT_s) /* show allocated blocks */
-		column += printf("%6"OFF_FMT"u ", (off_t) (dn->dn_blocks >> 1));
+	if (opt & OPT_s) { /* show allocated blocks */
+		if (opt & OPT_h) {
+			column += printf("%"HUMAN_READABLE_MAX_WIDTH_STR"s ",
+				/* print size, show one fractional, use suffixes */
+				make_human_readable_str((off_t)dn->dn_blocks << 9, 1, 0)
+			);
+		} else {
+			column += printf("%6"OFF_FMT"u ", (off_t)(dn->dn_blocks >> 1));
+		}
+	}
 	if (opt & OPT_l) {
 		/* long listing: show mode */
 		char modestr[12];


More information about the busybox-cvs mailing list