From aa0765e11bdeba5c5abf745369a8430c8311d60c Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 22 Oct 1999 04:30:20 +0000 Subject: Added regexp support, fixed Changelog. --- findutils/find.c | 23 ++++++++++++----------- findutils/grep.c | 46 ++++++++++------------------------------------ 2 files changed, 22 insertions(+), 47 deletions(-) (limited to 'findutils') diff --git a/findutils/find.c b/findutils/find.c index 1db332297..c154cf4e7 100644 --- a/findutils/find.c +++ b/findutils/find.c @@ -21,14 +21,15 @@ * */ +#include "internal.h" +#include "regexp.h" #include #include #include -#include "internal.h" static char* pattern=NULL; -static char* directory=NULL; +static char* directory="."; static int dereferenceFlag=FALSE; static const char find_usage[] = "find [path...] [expression]\n" @@ -41,7 +42,7 @@ static int fileAction(const char *fileName, struct stat* statbuf) { if (pattern==NULL) fprintf(stdout, "%s\n", fileName); - else if (match(fileName, pattern) == TRUE) + else if (find_match(fileName, pattern, TRUE) == TRUE) fprintf(stdout, "%s\n", fileName); return( TRUE); } @@ -53,7 +54,7 @@ static int dirAction(const char *fileName, struct stat* statbuf) if (pattern==NULL) fprintf(stdout, "%s\n", fileName); - else if (match(fileName, pattern) == TRUE) + else if (find_match(fileName, pattern, TRUE) == TRUE) fprintf(stdout, "%s\n", fileName); dir = opendir( fileName); @@ -71,22 +72,18 @@ static int dirAction(const char *fileName, struct stat* statbuf) int find_main(int argc, char **argv) { - if (argc <= 1) { - dirAction( ".", NULL); - } - /* peel off the "find" */ argc--; argv++; - if (**argv != '-') { + if ( argc > 0 && **argv != '-') { directory=*argv; argc--; argv++; } /* Parse any options */ - while (**argv == '-') { + while (argc > 0 && **argv == '-') { int stopit=FALSE; while (*++(*argv) && stopit==FALSE) switch (**argv) { case 'f': @@ -120,6 +117,10 @@ int find_main(int argc, char **argv) break; } - dirAction( directory, NULL); + if (recursiveAction(directory, TRUE, FALSE, FALSE, + fileAction, fileAction) == FALSE) { + exit( FALSE); + } + exit(TRUE); } diff --git a/findutils/grep.c b/findutils/grep.c index a495c62ae..44ca02834 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -22,6 +22,7 @@ */ #include "internal.h" +#include "regexp.h" #include #include #include @@ -30,44 +31,17 @@ #include #include - static const char grep_usage[] = "grep [-ihn]... PATTERN [FILE]...\n" "Search for PATTERN in each FILE or standard input.\n\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\n" +#if defined BB_REGEXP +"This version of grep matches full regexps.\n"; +#else "This version of grep matches strings (not full regexps).\n"; - - -/* - * See if the specified needle is found in the specified haystack. - */ -static int search (const char *haystack, const char *needle, int ignoreCase) -{ - - if (ignoreCase == FALSE) { - haystack = strstr (haystack, needle); - if (haystack == NULL) - return FALSE; - return TRUE; - } else { - int i; - char needle1[BUF_SIZE]; - char haystack1[BUF_SIZE]; - - strncpy( haystack1, haystack, sizeof(haystack1)); - strncpy( needle1, needle, sizeof(needle1)); - for( i=0; i