diff options
Diffstat (limited to 'findutils')
-rw-r--r-- | findutils/find.c | 142 | ||||
-rw-r--r-- | findutils/grep.c | 182 |
2 files changed, 164 insertions, 160 deletions
diff --git a/findutils/find.c b/findutils/find.c index 50872b7f1..6346d454f 100644 --- a/findutils/find.c +++ b/findutils/find.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * Mini find implementation for busybox * @@ -28,92 +29,95 @@ #include <dirent.h> -static char* pattern=NULL; -static char* directory="."; -static int dereferenceFlag=FALSE; +static char *pattern = NULL; +static char *directory = "."; +static int dereferenceFlag = FALSE; static const char find_usage[] = "find [PATH...] [EXPRESSION]\n\n" -"Search for files in a directory hierarchy. The default PATH is\n" -"the current directory; default EXPRESSION is '-print'\n\n" -"\nEXPRESSION may consist of:\n" -"\t-follow\n\t\tDereference symbolic links.\n" -"\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" -"\t-print\n\t\tprint the full file name followed by a newline to stdout.\n\n" + "Search for files in a directory hierarchy. The default PATH is\n" + "the current directory; default EXPRESSION is '-print'\n\n" + "\nEXPRESSION may consist of:\n" + "\t-follow\n\t\tDereference symbolic links.\n" + "\t-name PATTERN\n\t\tFile name (with leading directories removed) matches PATTERN.\n" + "\t-print\n\t\tprint the full file name followed by a newline to stdout.\n\n" #if defined BB_REGEXP -"This version of find matches full regular expresions.\n"; + "This version of find matches full regular expresions.\n"; #else -"This version of find matches strings (not regular expresions).\n"; + "This version of find matches strings (not regular expresions).\n"; #endif -static int fileAction(const char *fileName, struct stat* statbuf) +static int fileAction(const char *fileName, struct stat *statbuf) { - if (pattern==NULL) - fprintf(stdout, "%s\n", fileName); - else { - char* tmp = strrchr( fileName, '/'); - if (tmp == NULL) - tmp = (char*)fileName; - else - tmp++; - if (check_wildcard_match(tmp, pattern) == TRUE) - fprintf(stdout, "%s\n", fileName); - } - return( TRUE); + if (pattern == NULL) + fprintf(stdout, "%s\n", fileName); + else { + char *tmp = strrchr(fileName, '/'); + + if (tmp == NULL) + tmp = (char *) fileName; + else + tmp++; + if (check_wildcard_match(tmp, pattern) == TRUE) + fprintf(stdout, "%s\n", fileName); + } + return (TRUE); } int find_main(int argc, char **argv) { - /* peel off the "find" */ - argc--; - argv++; - - if ( argc > 0 && **argv != '-') { - directory = *argv; + /* peel off the "find" */ argc--; argv++; - } - /* Parse any options */ - while (argc > 0 && **argv == '-') { - int stopit=FALSE; - while (*++(*argv) && stopit==FALSE) switch (**argv) { - case 'f': - if (strcmp(*argv, "follow")==0) { - argc--; - argv++; - dereferenceFlag=TRUE; - } - break; - case 'n': - if (strcmp(*argv, "name")==0) { - if (argc-- > 1) { - pattern = *(++argv); - stopit = TRUE; - } else { - usage (find_usage); - } - } - break; - case '-': - /* Ignore all long options */ - break; - default: - usage (find_usage); + if (argc > 0 && **argv != '-') { + directory = *argv; + argc--; + argv++; } - if (argc-- > 1) - argv++; - if (**argv != '-') - break; - else - break; - } - if (recursiveAction(directory, TRUE, FALSE, FALSE, - fileAction, fileAction) == FALSE) { - exit( FALSE); - } + /* Parse any options */ + while (argc > 0 && **argv == '-') { + int stopit = FALSE; + + while (*++(*argv) && stopit == FALSE) + switch (**argv) { + case 'f': + if (strcmp(*argv, "follow") == 0) { + argc--; + argv++; + dereferenceFlag = TRUE; + } + break; + case 'n': + if (strcmp(*argv, "name") == 0) { + if (argc-- > 1) { + pattern = *(++argv); + stopit = TRUE; + } else { + usage(find_usage); + } + } + break; + case '-': + /* Ignore all long options */ + break; + default: + usage(find_usage); + } + if (argc-- > 1) + argv++; + if (**argv != '-') + break; + else + break; + } + + if (recursiveAction(directory, TRUE, FALSE, FALSE, + fileAction, fileAction) == FALSE) { + exit(FALSE); + } - exit(TRUE); + exit(TRUE); } diff --git a/findutils/grep.c b/findutils/grep.c index 287d9f80d..d8d2f1837 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * Mini grep implementation for busybox * @@ -40,126 +41,125 @@ #include <ctype.h> static const char grep_usage[] = -"grep [OPTIONS]... PATTERN [FILE]...\n\n" -"Search for PATTERN in each FILE or standard input.\n\n" -"OPTIONS:\n" -"\t-h\tsuppress the prefixing filename on output\n" -"\t-i\tignore case distinctions\n" -"\t-n\tprint line number with output lines\n" -"\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n\n" + "grep [OPTIONS]... PATTERN [FILE]...\n\n" + "Search for PATTERN in each FILE or standard input.\n\n" + "OPTIONS:\n" + "\t-h\tsuppress the prefixing filename on output\n" + "\t-i\tignore case distinctions\n" + "\t-n\tprint line number with output lines\n" + "\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n\n" #if defined BB_REGEXP -"This version of grep matches full regular expresions.\n"; + "This version of grep matches full regular expresions.\n"; #else -"This version of grep matches strings (not regular expresions).\n"; + "This version of grep matches strings (not regular expresions).\n"; #endif static int match = FALSE, beQuiet = FALSE; -static void do_grep(FILE *fp, char* needle, char *fileName, int tellName, int ignoreCase, int tellLine) +static void do_grep(FILE * fp, char *needle, char *fileName, int tellName, + int ignoreCase, int tellLine) { - char *cp; - long line = 0; - char haystack[BUF_SIZE]; + char *cp; + long line = 0; + char haystack[BUF_SIZE]; - while (fgets (haystack, sizeof (haystack), fp)) { - line++; - cp = &haystack[strlen (haystack) - 1]; + while (fgets(haystack, sizeof(haystack), fp)) { + line++; + cp = &haystack[strlen(haystack) - 1]; - if (*cp != '\n') - fprintf (stderr, "%s: Line too long\n", fileName); + if (*cp != '\n') + fprintf(stderr, "%s: Line too long\n", fileName); - if (find_match(haystack, needle, ignoreCase) == TRUE) { - if (tellName==TRUE) - printf ("%s:", fileName); + if (find_match(haystack, needle, ignoreCase) == TRUE) { + if (tellName == TRUE) + printf("%s:", fileName); - if (tellLine==TRUE) - printf ("%ld:", line); + if (tellLine == TRUE) + printf("%ld:", line); - if (beQuiet==FALSE) - fputs (haystack, stdout); + if (beQuiet == FALSE) + fputs(haystack, stdout); - match = TRUE; + match = TRUE; + } } - } } -extern int grep_main (int argc, char **argv) +extern int grep_main(int argc, char **argv) { - FILE *fp; - char *cp; - char *needle; - char *fileName; - int tellName=TRUE; - int ignoreCase=TRUE; - int tellLine=FALSE; + FILE *fp; + char *cp; + char *needle; + char *fileName; + int tellName = TRUE; + int ignoreCase = TRUE; + int tellLine = FALSE; - ignoreCase = FALSE; - tellLine = FALSE; + ignoreCase = FALSE; + tellLine = FALSE; - argc--; - argv++; - if (argc < 1) { - usage(grep_usage); - } - - if (**argv == '-') { argc--; - cp = *argv++; + argv++; + if (argc < 1) { + usage(grep_usage); + } - while (*++cp) - switch (*cp) { - case 'i': - ignoreCase = TRUE; - break; + if (**argv == '-') { + argc--; + cp = *argv++; - case 'h': - tellName = FALSE; - break; + while (*++cp) + switch (*cp) { + case 'i': + ignoreCase = TRUE; + break; - case 'n': - tellLine = TRUE; - break; + case 'h': + tellName = FALSE; + break; - case 'q': - beQuiet = TRUE; - break; + case 'n': + tellLine = TRUE; + break; - default: - usage(grep_usage); - } - } - - needle = *argv++; - argc--; - - if (argc==0) { - do_grep( stdin, needle, "stdin", FALSE, ignoreCase, tellLine); - } else { - /* Never print the filename for just one file */ - if (argc==1) - tellName=FALSE; - while (argc-- > 0) { - fileName = *argv++; - - fp = fopen (fileName, "r"); - if (fp == NULL) { - perror (fileName); - continue; - } - - do_grep( fp, needle, fileName, tellName, ignoreCase, tellLine); - - if (ferror (fp)) - perror (fileName); - fclose (fp); + case 'q': + beQuiet = TRUE; + break; + + default: + usage(grep_usage); + } } - } - exit(match); -} + needle = *argv++; + argc--; -/* END CODE */ + if (argc == 0) { + do_grep(stdin, needle, "stdin", FALSE, ignoreCase, tellLine); + } else { + /* Never print the filename for just one file */ + if (argc == 1) + tellName = FALSE; + while (argc-- > 0) { + fileName = *argv++; + + fp = fopen(fileName, "r"); + if (fp == NULL) { + perror(fileName); + continue; + } + + do_grep(fp, needle, fileName, tellName, ignoreCase, tellLine); + + if (ferror(fp)) + perror(fileName); + fclose(fp); + } + } + exit(match); +} +/* END CODE */ |