diff options
author | Denis Vlasenko | 2008-03-21 08:44:32 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-03-21 08:44:32 +0000 |
commit | de15bb931a66f99ffd1312ae5920347cdff4b21b (patch) | |
tree | cf5a77e7d76927e0d47e3dd43c04ae5614ae70ff /findutils/grep.c | |
parent | cf24d29529bbf821a56b278a422e89aacc767193 (diff) | |
download | busybox-1_7_5.zip busybox-1_7_5.tar.gz |
apply single post-1.7.4 patch; bump version to 1.7.51_7_5
Diffstat (limited to 'findutils/grep.c')
-rw-r--r-- | findutils/grep.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/findutils/grep.c b/findutils/grep.c index c45d0ed..521b88e 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -154,14 +154,14 @@ static int grep_file(FILE *file) while ((line = xmalloc_getline(file)) != NULL) { llist_t *pattern_ptr = pattern_head; - grep_list_data_t * gl; + grep_list_data_t *gl = gl; /* for gcc */ linenum++; ret = 0; while (pattern_ptr) { gl = (grep_list_data_t *)pattern_ptr->data; if (FGREP_FLAG) { - ret = strstr(line, gl->pattern) != NULL; + ret |= (strstr(line, gl->pattern) != NULL); } else { /* * test for a postitive-assertion match (regexec returns success (0) @@ -255,8 +255,15 @@ static int grep_file(FILE *file) print_n_lines_after = lines_after; #endif if (option_mask32 & OPT_o) { - line[regmatch.rm_eo] = '\0'; - print_line(line + regmatch.rm_so, linenum, ':'); + if (FGREP_FLAG) { + /* -Fo just prints the pattern + * (unless -v: -Fov doesnt print anything at all) */ + if (ret) + print_line(gl->pattern, linenum, ':'); + } else { + line[regmatch.rm_eo] = '\0'; + print_line(line + regmatch.rm_so, linenum, ':'); + } } else { print_line(line, linenum, ':'); } |