* 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
This commit is contained in:
Eric Andersen
2000-06-07 17:28:53 +00:00
parent 1f6262b8e2
commit a42982e8f5
10 changed files with 125 additions and 53 deletions

51
ls.c
View File

@@ -86,8 +86,9 @@
#define DISP_DOT 8 /* show . and .. */
#define DISP_NUMERIC 16 /* numeric uid and gid */
#define DISP_FULLTIME 32 /* show extended time display */
#define DIR_NOLIST 64 /* show directory as itself, not contents */
#define DIR_NOLIST 64 /* show directory as itself, not contents */
#define DISP_DIRNAME 128 /* show directory name (for internal use) */
#define DISP_RECURSIVE 256 /* Do a recursive listing */
#ifndef MAJOR
#define MAJOR(dev) (((dev)>>8)&0xff)
@@ -448,6 +449,9 @@ static const char ls_usage[] = "ls [-1a"
"xAC"
#ifdef BB_FEATURE_LS_FILETYPES
"F"
#endif
#ifdef BB_FEATURE_LS_RECURSIVE
"R"
#endif
"] [filenames...]\n"
#ifndef BB_FEATURE_TRIVIAL_HELP
@@ -477,9 +481,24 @@ static const char ls_usage[] = "ls [-1a"
#ifdef BB_FEATURE_LS_FILETYPES
"\t-F\tappend indicator (one of */=@|) to entries\n"
#endif
#ifdef BB_FEATURE_LS_RECURSIVE
"\t-R\tlist subdirectories recursively\n"
#endif
#endif
;
#ifdef BB_FEATURE_LS_RECURSIVE
static int dirAction(const char *fileName, struct stat *statbuf, void* junk)
{
int i;
fprintf(stdout, "\n%s:\n", fileName);
i = list_item(fileName);
newline();
return (i);
}
#endif
extern int ls_main(int argc, char **argv)
{
int argi = 1, i;
@@ -543,6 +562,11 @@ extern int ls_main(int argc, char **argv)
case 'e':
opts |= DISP_FULLTIME;
break;
#endif
#ifdef BB_FEATURE_LS_RECURSIVE
case 'R':
opts |= DISP_RECURSIVE;
break;
#endif
default:
goto print_usage_message;
@@ -570,12 +594,25 @@ extern int ls_main(int argc, char **argv)
#endif
/* process files specified, or current directory if none */
i = 0;
if (argi == argc)
i = list_item(".");
while (argi < argc)
i |= list_item(argv[argi++]);
newline();
#ifdef BB_FEATURE_LS_RECURSIVE
if (opts & DISP_RECURSIVE) {
i = 0;
if (argi == argc) {
i = recursiveAction(".", TRUE, FALSE, FALSE, NULL, dirAction, NULL);
}
while (argi < argc) {
i |= recursiveAction(argv[argi++], TRUE, FALSE, FALSE, NULL, dirAction, NULL);
}
} else
#endif
{
i = 0;
if (argi == argc)
i = list_item(".");
while (argi < argc)
i |= list_item(argv[argi++]);
newline();
}
exit(i);
print_usage_message: