aboutsummaryrefslogtreecommitdiff
path: root/findutils
diff options
context:
space:
mode:
authorBartosz Golaszewski <bartekgola@gmail.com>2014-02-07 17:14:37 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-02-07 17:15:56 +0100
commit3ba2df874ca27f075a0897210d8dce6c56646e60 (patch)
tree8d8b56ec8092ab4da85abd275998b2da457dbef7 /findutils
parent07f417b6ab92e0429f302ff6783bb9681b60120e (diff)
downloadbusybox-w32-3ba2df874ca27f075a0897210d8dce6c56646e60.tar.gz
busybox-w32-3ba2df874ca27f075a0897210d8dce6c56646e60.tar.bz2
busybox-w32-3ba2df874ca27f075a0897210d8dce6c56646e60.zip
grep: properly handle grep -w "^str" in !EXTRA_COMPAT case too
function old new delta grep_file 1267 1288 +21 Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'findutils')
-rw-r--r--findutils/grep.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/findutils/grep.c b/findutils/grep.c
index a7bc4ca9e..76859464f 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -375,6 +375,8 @@ static int grep_file(FILE *file)
375 } else { 375 } else {
376#if ENABLE_EXTRA_COMPAT 376#if ENABLE_EXTRA_COMPAT
377 unsigned start_pos; 377 unsigned start_pos;
378#else
379 int match_flg;
378#endif 380#endif
379 char *match_at; 381 char *match_at;
380 382
@@ -392,6 +394,7 @@ static int grep_file(FILE *file)
392#if !ENABLE_EXTRA_COMPAT 394#if !ENABLE_EXTRA_COMPAT
393 gl->matched_range.rm_so = 0; 395 gl->matched_range.rm_so = 0;
394 gl->matched_range.rm_eo = 0; 396 gl->matched_range.rm_eo = 0;
397 match_flg = 0;
395#else 398#else
396 start_pos = 0; 399 start_pos = 0;
397#endif 400#endif
@@ -400,7 +403,7 @@ static int grep_file(FILE *file)
400//bb_error_msg("'%s' start_pos:%d line_len:%d", match_at, start_pos, line_len); 403//bb_error_msg("'%s' start_pos:%d line_len:%d", match_at, start_pos, line_len);
401 if ( 404 if (
402#if !ENABLE_EXTRA_COMPAT 405#if !ENABLE_EXTRA_COMPAT
403 regexec(&gl->compiled_regex, match_at, 1, &gl->matched_range, 0) == 0 406 regexec(&gl->compiled_regex, match_at, 1, &gl->matched_range, match_flg) == 0
404#else 407#else
405 re_search(&gl->compiled_regex, match_at, line_len, 408 re_search(&gl->compiled_regex, match_at, line_len,
406 start_pos, /*range:*/ line_len, 409 start_pos, /*range:*/ line_len,
@@ -415,7 +418,7 @@ static int grep_file(FILE *file)
415 found = 1; 418 found = 1;
416 } else { 419 } else {
417 char c = ' '; 420 char c = ' ';
418 if (gl->matched_range.rm_so) 421 if (match_at > line || gl->matched_range.rm_so != 0)
419 c = match_at[gl->matched_range.rm_so - 1]; 422 c = match_at[gl->matched_range.rm_so - 1];
420 if (!isalnum(c) && c != '_') { 423 if (!isalnum(c) && c != '_') {
421 c = match_at[gl->matched_range.rm_eo]; 424 c = match_at[gl->matched_range.rm_eo];
@@ -432,6 +435,7 @@ static int grep_file(FILE *file)
432#if !ENABLE_EXTRA_COMPAT 435#if !ENABLE_EXTRA_COMPAT
433 if (gl->matched_range.rm_eo != 0) { 436 if (gl->matched_range.rm_eo != 0) {
434 match_at += gl->matched_range.rm_eo; 437 match_at += gl->matched_range.rm_eo;
438 match_flg |= REG_NOTBOL;
435 goto opt_w_again; 439 goto opt_w_again;
436 } 440 }
437#else 441#else