grep: make "-f -" work (+ testsuite)
diff: small code shrink function old new delta grep_main 722 714 -8 diffreg 1825 1793 -32 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-40) Total: -40 bytes
This commit is contained in:
parent
401de648a7
commit
a05c0716c2
@ -1021,11 +1021,12 @@ static unsigned diffreg(char *file1, char *file2, int flags)
|
|||||||
rval = D_SAME;
|
rval = D_SAME;
|
||||||
|
|
||||||
if (flags & D_EMPTY1)
|
if (flags & D_EMPTY1)
|
||||||
f1 = xfopen(bb_dev_null, "r");
|
/* can't be stdin, but xfopen_stdin() is smaller code */
|
||||||
|
f1 = xfopen_stdin(bb_dev_null);
|
||||||
else
|
else
|
||||||
f1 = xfopen_stdin(file1);
|
f1 = xfopen_stdin(file1);
|
||||||
if (flags & D_EMPTY2)
|
if (flags & D_EMPTY2)
|
||||||
f2 = xfopen(bb_dev_null, "r");
|
f2 = xfopen_stdin(bb_dev_null);
|
||||||
else
|
else
|
||||||
f2 = xfopen_stdin(file2);
|
f2 = xfopen_stdin(file2);
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ struct globals {
|
|||||||
typedef struct grep_list_data_t {
|
typedef struct grep_list_data_t {
|
||||||
char *pattern;
|
char *pattern;
|
||||||
regex_t preg;
|
regex_t preg;
|
||||||
#define PATTERN_MEM_A 1
|
#define ALLOCATED 1
|
||||||
#define COMPILED 2
|
#define COMPILED 2
|
||||||
int flg_mem_alocated_compiled;
|
int flg_mem_alocated_compiled;
|
||||||
} grep_list_data_t;
|
} grep_list_data_t;
|
||||||
@ -363,10 +363,10 @@ static void load_regexes_from_file(llist_t *fopt)
|
|||||||
|
|
||||||
fopt = cur->link;
|
fopt = cur->link;
|
||||||
free(cur);
|
free(cur);
|
||||||
f = xfopen(ffile, "r");
|
f = xfopen_stdin(ffile);
|
||||||
while ((line = xmalloc_fgetline(f)) != NULL) {
|
while ((line = xmalloc_fgetline(f)) != NULL) {
|
||||||
llist_add_to(&pattern_head,
|
llist_add_to(&pattern_head,
|
||||||
new_grep_list_data(line, PATTERN_MEM_A));
|
new_grep_list_data(line, ALLOCATED));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -486,7 +486,7 @@ int grep_main(int argc, char **argv)
|
|||||||
argc--;
|
argc--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* argv[(optind)..(argc-1)] should be names of file to grep through. If
|
/* argv[0..(argc-1)] should be names of file to grep through. If
|
||||||
* there is more than one file to grep, we will print the filenames. */
|
* there is more than one file to grep, we will print the filenames. */
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
print_filename = 1;
|
print_filename = 1;
|
||||||
@ -535,9 +535,9 @@ int grep_main(int argc, char **argv)
|
|||||||
grep_list_data_t *gl = (grep_list_data_t *)pattern_head_ptr->data;
|
grep_list_data_t *gl = (grep_list_data_t *)pattern_head_ptr->data;
|
||||||
|
|
||||||
pattern_head = pattern_head->link;
|
pattern_head = pattern_head->link;
|
||||||
if ((gl->flg_mem_alocated_compiled & PATTERN_MEM_A))
|
if (gl->flg_mem_alocated_compiled & ALLOCATED)
|
||||||
free(gl->pattern);
|
free(gl->pattern);
|
||||||
if ((gl->flg_mem_alocated_compiled & COMPILED))
|
if (gl->flg_mem_alocated_compiled & COMPILED)
|
||||||
regfree(&(gl->preg));
|
regfree(&(gl->preg));
|
||||||
free(gl);
|
free(gl);
|
||||||
free(pattern_head_ptr);
|
free(pattern_head_ptr);
|
||||||
|
@ -78,6 +78,10 @@ testing "grep handles multiple regexps" "grep -e one -e two input ; echo \$?" \
|
|||||||
testing "grep -F handles multiple expessions" "grep -F -e one -e two input ; echo \$?" \
|
testing "grep -F handles multiple expessions" "grep -F -e one -e two input ; echo \$?" \
|
||||||
"one\ntwo\n0\n" "one\ntwo\n" ""
|
"one\ntwo\n0\n" "one\ntwo\n" ""
|
||||||
|
|
||||||
|
# -f file/-
|
||||||
|
testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \
|
||||||
|
"two\nthree\n0\n" "tw\ntwo\nthree\n" "tw.\nthr\n"
|
||||||
|
|
||||||
optional FEATURE_GREP_EGREP_ALIAS
|
optional FEATURE_GREP_EGREP_ALIAS
|
||||||
testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \
|
testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \
|
||||||
"b\ar\nfoo\nbaz"
|
"b\ar\nfoo\nbaz"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user