diff options
| author | Eric Andersen <andersen@codepoet.org> | 2000-06-07 17:28:53 +0000 |
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2000-06-07 17:28:53 +0000 |
| commit | a42982e8f569417e93bc3b47c501cbe83a5bfade (patch) | |
| tree | a28be75735aa78f38cf8464f874857fd0132c664 /coreutils | |
| parent | 1f6262b8e2b4225a028b016fed4a3a9ee717b540 (diff) | |
| download | busybox-w32-a42982e8f569417e93bc3b47c501cbe83a5bfade.tar.gz busybox-w32-a42982e8f569417e93bc3b47c501cbe83a5bfade.tar.bz2 busybox-w32-a42982e8f569417e93bc3b47c501cbe83a5bfade.zip | |
* Fixed 'swapon -a' and 'swapoff -a', which were broken.
* Fixed 'mount -a' so it works as expected.
* Implemented 'ls -R' (enabled by enabling BB_FEATURE_LS_RECURSIVE)
-Erik
Diffstat (limited to 'coreutils')
| -rw-r--r-- | coreutils/ls.c | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c index 6ab11c4e5..0b1aa6221 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c | |||
| @@ -86,8 +86,9 @@ | |||
| 86 | #define DISP_DOT 8 /* show . and .. */ | 86 | #define DISP_DOT 8 /* show . and .. */ |
| 87 | #define DISP_NUMERIC 16 /* numeric uid and gid */ | 87 | #define DISP_NUMERIC 16 /* numeric uid and gid */ |
| 88 | #define DISP_FULLTIME 32 /* show extended time display */ | 88 | #define DISP_FULLTIME 32 /* show extended time display */ |
| 89 | #define DIR_NOLIST 64 /* show directory as itself, not contents */ | 89 | #define DIR_NOLIST 64 /* show directory as itself, not contents */ |
| 90 | #define DISP_DIRNAME 128 /* show directory name (for internal use) */ | 90 | #define DISP_DIRNAME 128 /* show directory name (for internal use) */ |
| 91 | #define DISP_RECURSIVE 256 /* Do a recursive listing */ | ||
| 91 | 92 | ||
| 92 | #ifndef MAJOR | 93 | #ifndef MAJOR |
| 93 | #define MAJOR(dev) (((dev)>>8)&0xff) | 94 | #define MAJOR(dev) (((dev)>>8)&0xff) |
| @@ -449,6 +450,9 @@ static const char ls_usage[] = "ls [-1a" | |||
| 449 | #ifdef BB_FEATURE_LS_FILETYPES | 450 | #ifdef BB_FEATURE_LS_FILETYPES |
| 450 | "F" | 451 | "F" |
| 451 | #endif | 452 | #endif |
| 453 | #ifdef BB_FEATURE_LS_RECURSIVE | ||
| 454 | "R" | ||
| 455 | #endif | ||
| 452 | "] [filenames...]\n" | 456 | "] [filenames...]\n" |
| 453 | #ifndef BB_FEATURE_TRIVIAL_HELP | 457 | #ifndef BB_FEATURE_TRIVIAL_HELP |
| 454 | "\nList directory contents\n\n" | 458 | "\nList directory contents\n\n" |
| @@ -477,9 +481,24 @@ static const char ls_usage[] = "ls [-1a" | |||
| 477 | #ifdef BB_FEATURE_LS_FILETYPES | 481 | #ifdef BB_FEATURE_LS_FILETYPES |
| 478 | "\t-F\tappend indicator (one of */=@|) to entries\n" | 482 | "\t-F\tappend indicator (one of */=@|) to entries\n" |
| 479 | #endif | 483 | #endif |
| 484 | #ifdef BB_FEATURE_LS_RECURSIVE | ||
| 485 | "\t-R\tlist subdirectories recursively\n" | ||
| 486 | #endif | ||
| 480 | #endif | 487 | #endif |
| 481 | ; | 488 | ; |
| 482 | 489 | ||
| 490 | |||
| 491 | #ifdef BB_FEATURE_LS_RECURSIVE | ||
| 492 | static int dirAction(const char *fileName, struct stat *statbuf, void* junk) | ||
| 493 | { | ||
| 494 | int i; | ||
| 495 | fprintf(stdout, "\n%s:\n", fileName); | ||
| 496 | i = list_item(fileName); | ||
| 497 | newline(); | ||
| 498 | return (i); | ||
| 499 | } | ||
| 500 | #endif | ||
| 501 | |||
| 483 | extern int ls_main(int argc, char **argv) | 502 | extern int ls_main(int argc, char **argv) |
| 484 | { | 503 | { |
| 485 | int argi = 1, i; | 504 | int argi = 1, i; |
| @@ -544,6 +563,11 @@ extern int ls_main(int argc, char **argv) | |||
| 544 | opts |= DISP_FULLTIME; | 563 | opts |= DISP_FULLTIME; |
| 545 | break; | 564 | break; |
| 546 | #endif | 565 | #endif |
| 566 | #ifdef BB_FEATURE_LS_RECURSIVE | ||
| 567 | case 'R': | ||
| 568 | opts |= DISP_RECURSIVE; | ||
| 569 | break; | ||
| 570 | #endif | ||
| 547 | default: | 571 | default: |
| 548 | goto print_usage_message; | 572 | goto print_usage_message; |
| 549 | } | 573 | } |
| @@ -570,12 +594,25 @@ extern int ls_main(int argc, char **argv) | |||
| 570 | #endif | 594 | #endif |
| 571 | 595 | ||
| 572 | /* process files specified, or current directory if none */ | 596 | /* process files specified, or current directory if none */ |
| 573 | i = 0; | 597 | #ifdef BB_FEATURE_LS_RECURSIVE |
| 574 | if (argi == argc) | 598 | if (opts & DISP_RECURSIVE) { |
| 575 | i = list_item("."); | 599 | i = 0; |
| 576 | while (argi < argc) | 600 | if (argi == argc) { |
| 577 | i |= list_item(argv[argi++]); | 601 | i = recursiveAction(".", TRUE, FALSE, FALSE, NULL, dirAction, NULL); |
| 578 | newline(); | 602 | } |
| 603 | while (argi < argc) { | ||
| 604 | i |= recursiveAction(argv[argi++], TRUE, FALSE, FALSE, NULL, dirAction, NULL); | ||
| 605 | } | ||
| 606 | } else | ||
| 607 | #endif | ||
| 608 | { | ||
| 609 | i = 0; | ||
| 610 | if (argi == argc) | ||
| 611 | i = list_item("."); | ||
| 612 | while (argi < argc) | ||
| 613 | i |= list_item(argv[argi++]); | ||
| 614 | newline(); | ||
| 615 | } | ||
| 579 | exit(i); | 616 | exit(i); |
| 580 | 617 | ||
| 581 | print_usage_message: | 618 | print_usage_message: |
