aboutsummaryrefslogtreecommitdiff
path: root/coreutils/ls.c
diff options
context:
space:
mode:
authorRichard June <rjune@bravegnuworld.com>2001-01-22 22:35:38 +0000
committerRichard June <rjune@bravegnuworld.com>2001-01-22 22:35:38 +0000
commit6d0921cc0bb01b1d090285c487f8c1120dfa5d3a (patch)
tree97ed53aec9cbe3a3021804e9758abb3e04f05879 /coreutils/ls.c
parent3b3f5c364a486dc2c081f0684a4315740f349be1 (diff)
downloadbusybox-w32-6d0921cc0bb01b1d090285c487f8c1120dfa5d3a.tar.gz
busybox-w32-6d0921cc0bb01b1d090285c487f8c1120dfa5d3a.tar.bz2
busybox-w32-6d0921cc0bb01b1d090285c487f8c1120dfa5d3a.zip
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
Diffstat (limited to 'coreutils/ls.c')
-rw-r--r--coreutils/ls.c31
1 files changed, 29 insertions, 2 deletions
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;
176 176
177static int status = EXIT_SUCCESS; 177static int status = EXIT_SUCCESS;
178 178
179#ifdef BB_FEATURE_HUMAN_READABLE
180unsigned long ls_disp_hr = KILOBYTE;
181#endif
182
179static int my_stat(struct dnode *cur) 183static int my_stat(struct dnode *cur)
180{ 184{
181#ifdef BB_FEATURE_LS_FOLLOWLINKS 185#ifdef BB_FEATURE_LS_FOLLOWLINKS
@@ -583,11 +587,15 @@ int list_single(struct dnode *dn)
583 column += 8; 587 column += 8;
584 break; 588 break;
585 case LIST_BLOCKS: 589 case LIST_BLOCKS:
590#ifdef BB_FEATURE_HUMAN_READABLE
591 fprintf(stdout, "%5s ", format(dn->dstat.st_size, ls_disp_hr));
592#else
586#if _FILE_OFFSET_BITS == 64 593#if _FILE_OFFSET_BITS == 64
587 printf("%4lld ", dn->dstat.st_blocks>>1); 594 printf("%4lld ", dn->dstat.st_blocks>>1);
588#else 595#else
589 printf("%4ld ", dn->dstat.st_blocks>>1); 596 printf("%4ld ", dn->dstat.st_blocks>>1);
590#endif 597#endif
598#endif
591 column += 5; 599 column += 5;
592 break; 600 break;
593 case LIST_MODEBITS: 601 case LIST_MODEBITS:
@@ -622,11 +630,15 @@ int list_single(struct dnode *dn)
622 if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) { 630 if (S_ISBLK(dn->dstat.st_mode) || S_ISCHR(dn->dstat.st_mode)) {
623 printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev)); 631 printf("%4d, %3d ", (int)MAJOR(dn->dstat.st_rdev), (int)MINOR(dn->dstat.st_rdev));
624 } else { 632 } else {
633#ifdef BB_FEATURE_HUMAN_READABLE
634 fprintf(stdout, "%9s ", format(dn->dstat.st_size, ls_disp_hr));
635#else
625#if _FILE_OFFSET_BITS == 64 636#if _FILE_OFFSET_BITS == 64
626 printf("%9lld ", dn->dstat.st_size); 637 printf("%9lld ", dn->dstat.st_size);
627#else 638#else
628 printf("%9ld ", dn->dstat.st_size); 639 printf("%9ld ", dn->dstat.st_size);
629#endif 640#endif
641#endif
630 } 642 }
631 column += 10; 643 column += 10;
632 break; 644 break;
@@ -724,7 +736,10 @@ extern int ls_main(int argc, char **argv)
724#ifdef BB_FEATURE_LS_FOLLOWLINKS 736#ifdef BB_FEATURE_LS_FOLLOWLINKS
725"L" 737"L"
726#endif 738#endif
727 )) > 0) { 739#ifdef BB_FEATURE_HUMAN_READABLE
740"h"
741#endif
742"k")) > 0) {
728 switch (opt) { 743 switch (opt) {
729 case '1': style_fmt = STYLE_SINGLE; break; 744 case '1': style_fmt = STYLE_SINGLE; break;
730 case 'A': disp_opts |= DISP_HIDDEN; break; 745 case 'A': disp_opts |= DISP_HIDDEN; break;
@@ -733,7 +748,13 @@ extern int ls_main(int argc, char **argv)
733 case 'd': disp_opts |= DISP_NOLIST; break; 748 case 'd': disp_opts |= DISP_NOLIST; break;
734 case 'g': /* ignore -- for ftp servers */ break; 749 case 'g': /* ignore -- for ftp servers */ break;
735 case 'i': list_fmt |= LIST_INO; break; 750 case 'i': list_fmt |= LIST_INO; break;
736 case 'l': style_fmt = STYLE_LONG; list_fmt |= LIST_LONG; break; 751 case 'l':
752 style_fmt = STYLE_LONG;
753 list_fmt |= LIST_LONG;
754#ifdef BB_FEATURE_HUMAN_READABLE
755 ls_disp_hr = 1;
756#endif
757 break;
737 case 'n': list_fmt |= LIST_ID_NUMERIC; break; 758 case 'n': list_fmt |= LIST_ID_NUMERIC; break;
738 case 's': list_fmt |= LIST_BLOCKS; break; 759 case 's': list_fmt |= LIST_BLOCKS; break;
739 case 'x': disp_opts = DISP_ROWS; break; 760 case 'x': disp_opts = DISP_ROWS; break;
@@ -777,6 +798,12 @@ extern int ls_main(int argc, char **argv)
777 case 'T': tabstops= atoi(optarg); break; 798 case 'T': tabstops= atoi(optarg); break;
778 case 'w': terminal_width= atoi(optarg); break; 799 case 'w': terminal_width= atoi(optarg); break;
779#endif 800#endif
801#ifdef BB_FEATURE_HUMAN_READABLE
802 case 'h': ls_disp_hr = 0; break;
803 case 'k': ls_disp_hr = KILOBYTE; break;
804#else
805 case 'k': break;
806#endif
780 default: 807 default:
781 goto print_usage_message; 808 goto print_usage_message;
782 } 809 }