diff options
author | Richard June <rjune@bravegnuworld.com> | 2001-01-22 22:35:38 +0000 |
---|---|---|
committer | Richard June <rjune@bravegnuworld.com> | 2001-01-22 22:35:38 +0000 |
commit | 6d0921cc0bb01b1d090285c487f8c1120dfa5d3a (patch) | |
tree | 97ed53aec9cbe3a3021804e9758abb3e04f05879 /coreutils/ls.c | |
parent | 3b3f5c364a486dc2c081f0684a4315740f349be1 (diff) | |
download | busybox-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.c | 31 |
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 | ||
177 | static int status = EXIT_SUCCESS; | 177 | static int status = EXIT_SUCCESS; |
178 | 178 | ||
179 | #ifdef BB_FEATURE_HUMAN_READABLE | ||
180 | unsigned long ls_disp_hr = KILOBYTE; | ||
181 | #endif | ||
182 | |||
179 | static int my_stat(struct dnode *cur) | 183 | static 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 | } |