Stuf
No binary (build failed)
—
(log yok)
| @@ -126,7 +126,6 @@ extern int sed_main (int argc, char **argv) | |
| } | |
| } | |
| - | fprintf(stderr, "argc=%d\n", argc); |
| while (argc-- > 0) { | |
| name = *argv++; | |
| @@ -135,10 +134,9 @@ extern int sed_main (int argc, char **argv) | |
| perror (name); | |
| continue; | |
| } | |
| - | fprintf(stderr, "filename is '%s'\n", name); |
| - | haystack = (char*)malloc( 80); |
| - | while (fgets (haystack, sizeof (haystack), fp)) { |
| + | haystack = (char*)malloc( BUF_SIZE); |
| + | while (fgets (haystack, BUF_SIZE-1, fp)) { |
| foundOne = replace_match(haystack, needle, newNeedle, ignoreCase); | |
| if (noprintFlag==TRUE && foundOne==TRUE) | |
| @@ -126,7 +126,6 @@ extern int sed_main (int argc, char **argv) | |
| } | |
| } | |
| - | fprintf(stderr, "argc=%d\n", argc); |
| while (argc-- > 0) { | |
| name = *argv++; | |
| @@ -135,10 +134,9 @@ extern int sed_main (int argc, char **argv) | |
| perror (name); | |
| continue; | |
| } | |
| - | fprintf(stderr, "filename is '%s'\n", name); |
| - | haystack = (char*)malloc( 80); |
| - | while (fgets (haystack, sizeof (haystack), fp)) { |
| + | haystack = (char*)malloc( BUF_SIZE); |
| + | while (fgets (haystack, BUF_SIZE-1, fp)) { |
| foundOne = replace_match(haystack, needle, newNeedle, ignoreCase); | |
| if (noprintFlag==TRUE && foundOne==TRUE) | |
| @@ -778,70 +778,82 @@ int get_console_fd(char* tty_name) | |
| #if !defined BB_REGEXP && (defined BB_GREP || defined BB_FIND ) | |
| + | |
| + | /* Do a case insensitive strstr() */ |
| + | char* stristr(char *haystack, const char *needle) |
| + | { |
| + | int len = strlen( needle ); |
| + | while( *haystack ) { |
| + | if( !strncasecmp( haystack, needle, len ) ) |
| + | break; |
| + | haystack++; |
| + | } |
| + | |
| + | if( !(*haystack) ) |
| + | haystack = NULL; |
| + | |
| + | return haystack; |
| + | } |
| + | |
| /* This tries to find a needle in a haystack, but does so by | |
| * only trying to match literal strings (look 'ma, no regexps!) | |
| * This is short, sweet, and carries _very_ little baggage, | |
| - | * unlike its beefier cousin a few lines down... |
| + | * unlike its beefier cousin in regexp.c |
| * -Erik Andersen | |
| */ | |
| extern int find_match(char *haystack, char *needle, int ignoreCase) | |
| { | |
| - | if (ignoreCase == FALSE) { |
| + | 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<sizeof(haystack1) && haystack1[i]; i++) |
| - | haystack1[i]=tolower( haystack1[i]); |
| - | for( i=0; i<sizeof(needle1) && needle1[i]; i++) |
| - | needle1[i]=tolower( needle1[i]); |
| - | haystack = strstr (haystack1, needle1); |
| - | if (haystack == NULL) |
| - | return FALSE; |
| - | return TRUE; |
| - | } |
| + | else |
| + | haystack = stristr (haystack, needle); |
| + | if (haystack == NULL) |
| + | return FALSE; |
| + | return TRUE; |
| } | |
| - | /* This performs substitutions after a regexp match has been found. */ |
| + | /* This performs substitutions after a string match has been found. */ |
| extern int replace_match(char *haystack, char *needle, char *newNeedle, int ignoreCase) | |
| { | |
| int foundOne; | |
| - | char *where, *slider; |
| + | char *where, *slider, *slider1, *oldhayStack; |
| - | if (ignoreCase == FALSE) { |
| - | /*Find needle in haystack */ |
| + | if (ignoreCase == FALSE) |
| where = strstr (haystack, needle); | |
| - | while(where!=NULL) { |
| - | foundOne++; |
| - | fprintf(stderr, "A match: haystack='%s'\n", haystack); |
| + | else |
| + | where = stristr (haystack, needle); |
| + | |
| + | if (strcmp(needle, newNeedle)==0) |
| + | return FALSE; |
| + | |
| + | oldhayStack = (char*)malloc((unsigned)(strlen(haystack))); |
| + | while(where!=NULL) { |
| + | foundOne++; |
| + | strcpy(oldhayStack, haystack); |
| + | #if 0 |
| + | if ( strlen(newNeedle) > strlen(needle)) { |
| haystack = (char *)realloc(haystack, (unsigned)(strlen(haystack) - | |
| strlen(needle) + strlen(newNeedle))); | |
| - | for(slider=haystack;slider!=where;slider++); |
| - | *slider=0; |
| - | haystack=strcat(haystack, newNeedle); |
| - | slider+=1+sizeof(newNeedle); |
| - | haystack = strcat(haystack, slider); |
| - | where = strstr (where+1, needle); |
| } | |
| - | } else { |
| - | // FIXME |
| - | |
| + | #endif |
| + | for(slider=haystack,slider1=oldhayStack;slider!=where;slider++,slider1++); |
| + | *slider=0; |
| + | haystack=strcat(haystack, newNeedle); |
| + | slider1+=strlen(needle); |
| + | haystack = strcat(haystack, slider1); |
| + | where = strstr (slider, needle); |
| } | |
| + | free( oldhayStack); |
| + | |
| if (foundOne) | |
| return TRUE; | |
| else | |
| return FALSE; | |
| } | |
| + | |
| #endif | |
| /* END CODE */ | |