From 6d0921cc0bb01b1d090285c487f8c1120dfa5d3a Mon Sep 17 00:00:00 2001 From: Richard June Date: Mon, 22 Jan 2001 22:35:38 +0000 Subject: Add HUMAN_READABLE define for -m and -h support in du, df, and ls Add support for -k in du, df, and ls(no define, it's for compatibliity with the GNU utils as bb does -k by default) Fix bug #1084 --- coreutils/ls.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'coreutils/ls.c') diff --git a/coreutils/ls.c b/coreutils/ls.c index fa3e5424d..754a6d450 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -176,6 +176,10 @@ static unsigned short tabstops = 8; static int status = EXIT_SUCCESS; +#ifdef BB_FEATURE_HUMAN_READABLE +unsigned long ls_disp_hr = KILOBYTE; +#endif + static int my_stat(struct dnode *cur) { #ifdef BB_FEATURE_LS_FOLLOWLINKS @@ -583,10 +587,14 @@ int list_single(struct dnode *dn) column += 8; break; case LIST_BLOCKS: +#ifdef BB_FEATURE_HUMAN_READABLE + fprintf(stdout, "%5s ", format(dn->dstat.st_size, ls_disp_hr)); +#else #if _FILE_OFFSET_BITS == 64 printf("%4lld ", dn->dstat.st_blocks>>1); #else printf("%4ld ", dn->dstat.st_blocks>>1); +#endif #endif column += 5; break; @@ -622,10 +630,14 @@ int list_single(struct dnode *dn) if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) { printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev)); } else { +#ifdef BB_FEATURE_HUMAN_READABLE + fprintf(stdout, "%9s ", format(dn->dstat.st_size, ls_disp_hr)); +#else #if _FILE_OFFSET_BITS == 64 printf("%9lld ", dn->dstat.st_size); #else printf("%9ld ", dn->dstat.st_size); +#endif #endif } column += 10; @@ -724,7 +736,10 @@ extern int ls_main(int argc, char **argv) #ifdef BB_FEATURE_LS_FOLLOWLINKS "L" #endif - )) > 0) { +#ifdef BB_FEATURE_HUMAN_READABLE +"h" +#endif +"k")) > 0) { switch (opt) { case '1': style_fmt = STYLE_SINGLE; break; case 'A': disp_opts |= DISP_HIDDEN; break; @@ -733,7 +748,13 @@ extern int ls_main(int argc, char **argv) case 'd': disp_opts |= DISP_NOLIST; break; case 'g': /* ignore -- for ftp servers */ break; case 'i': list_fmt |= LIST_INO; break; - case 'l': style_fmt = STYLE_LONG; list_fmt |= LIST_LONG; break; + case 'l': + style_fmt = STYLE_LONG; + list_fmt |= LIST_LONG; +#ifdef BB_FEATURE_HUMAN_READABLE + ls_disp_hr = 1; +#endif + break; case 'n': list_fmt |= LIST_ID_NUMERIC; break; case 's': list_fmt |= LIST_BLOCKS; break; case 'x': disp_opts = DISP_ROWS; break; @@ -776,6 +797,12 @@ extern int ls_main(int argc, char **argv) #ifdef BB_FEATURE_AUTOWIDTH case 'T': tabstops= atoi(optarg); break; case 'w': terminal_width= atoi(optarg); break; +#endif +#ifdef BB_FEATURE_HUMAN_READABLE + case 'h': ls_disp_hr = 0; break; + case 'k': ls_disp_hr = KILOBYTE; break; +#else + case 'k': break; #endif default: goto print_usage_message; -- cgit v1.2.3