Re: [PATCH/RFC 2/4] grep: pass current line number down to match_one_pattern

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, May 2, 2011 at 8:39 AM, Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx> wrote:
> Signed-off-by: Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx>
> ---
> Âgrep.c | Â 42 +++++++++++++++++++++---------------------
> Â1 files changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/grep.c b/grep.c
> index b8eda9e..f21b022 100644
> --- a/grep.c
> +++ b/grep.c
> @@ -437,7 +437,7 @@ static struct {
> Â};
>
> Âstatic int match_one_pattern(struct grep_pat *p, char *bol, char *eol,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Âenum grep_context ctx,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Âunsigned lno, enum grep_context ctx,

I'd rename lno to line_nr, so it's more clearer. Also, I'd add the new
paramenter at the end, not in some random position (or was there some
particular reason to put here but not in the end?).

> Â Â Â Â Â Â Â Â Â Â Â Â Â Â regmatch_t *pmatch, int eflags)
> Â{
> Â Â Â Âint hit = 0;
> @@ -516,7 +516,7 @@ static int match_one_pattern(struct grep_pat *p, char *bol, char *eol,
> Â}
>
> Âstatic int match_expr_eval(struct grep_expr *x, char *bol, char *eol,
> - Â Â Â Â Â Â Â Â Â Â Â Â Âenum grep_context ctx, int collect_hits)
> + Â Â Â Â Â Â Â Â Â Â Â Â Âunsigned lno, enum grep_context ctx, int collect_hits)
> Â{
> Â Â Â Âint h = 0;
> Â Â Â Âregmatch_t match;
> @@ -528,25 +528,25 @@ static int match_expr_eval(struct grep_expr *x, char *bol, char *eol,
> Â Â Â Â Â Â Â Âh = 1;
> Â Â Â Â Â Â Â Âbreak;
> Â Â Â Âcase GREP_NODE_ATOM:
> - Â Â Â Â Â Â Â h = match_one_pattern(x->u.atom, bol, eol, ctx, &match, 0);
> + Â Â Â Â Â Â Â h = match_one_pattern(x->u.atom, bol, eol, lno, ctx, &match, 0);
> Â Â Â Â Â Â Â Âbreak;
> Â Â Â Âcase GREP_NODE_NOT:
> - Â Â Â Â Â Â Â h = !match_expr_eval(x->u.unary, bol, eol, ctx, 0);
> + Â Â Â Â Â Â Â h = !match_expr_eval(x->u.unary, bol, eol, lno, ctx, 0);
> Â Â Â Â Â Â Â Âbreak;
> Â Â Â Âcase GREP_NODE_AND:
> - Â Â Â Â Â Â Â if (!match_expr_eval(x->u.binary.left, bol, eol, ctx, 0))
> + Â Â Â Â Â Â Â if (!match_expr_eval(x->u.binary.left, bol, eol, lno, ctx, 0))
> Â Â Â Â Â Â Â Â Â Â Â Âreturn 0;
> - Â Â Â Â Â Â Â h = match_expr_eval(x->u.binary.right, bol, eol, ctx, 0);
> + Â Â Â Â Â Â Â h = match_expr_eval(x->u.binary.right, bol, eol, lno, ctx, 0);
> Â Â Â Â Â Â Â Âbreak;
> Â Â Â Âcase GREP_NODE_OR:
> Â Â Â Â Â Â Â Âif (!collect_hits)
> Â Â Â Â Â Â Â Â Â Â Â Âreturn (match_expr_eval(x->u.binary.left,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bol, eol, ctx, 0) ||
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bol, eol, lno, ctx, 0) ||
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âmatch_expr_eval(x->u.binary.right,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bol, eol, ctx, 0));
> - Â Â Â Â Â Â Â h = match_expr_eval(x->u.binary.left, bol, eol, ctx, 0);
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â bol, eol, lno, ctx, 0));
> + Â Â Â Â Â Â Â h = match_expr_eval(x->u.binary.left, bol, eol, lno, ctx, 0);
> Â Â Â Â Â Â Â Âx->u.binary.left->hit |= h;
> - Â Â Â Â Â Â Â h |= match_expr_eval(x->u.binary.right, bol, eol, ctx, 1);
> + Â Â Â Â Â Â Â h |= match_expr_eval(x->u.binary.right, bol, eol, lno, ctx, 1);
> Â Â Â Â Â Â Â Âbreak;
> Â Â Â Âdefault:
> Â Â Â Â Â Â Â Âdie("Unexpected node type (internal error) %d", x->node);
> @@ -557,36 +557,36 @@ static int match_expr_eval(struct grep_expr *x, char *bol, char *eol,
> Â}
>
> Âstatic int match_expr(struct grep_opt *opt, char *bol, char *eol,
> - Â Â Â Â Â Â Â Â Â Â enum grep_context ctx, int collect_hits)
> + Â Â Â Â Â Â Â Â Â Â unsigned lno, enum grep_context ctx, int collect_hits)
> Â{
> Â Â Â Âstruct grep_expr *x = opt->pattern_expression;
> - Â Â Â return match_expr_eval(x, bol, eol, ctx, collect_hits);
> + Â Â Â return match_expr_eval(x, bol, eol, lno, ctx, collect_hits);
> Â}
>
> Âstatic int match_line(struct grep_opt *opt, char *bol, char *eol,
> - Â Â Â Â Â Â Â Â Â Â enum grep_context ctx, int collect_hits)
> + Â Â Â Â Â Â Â Â Â Â unsigned lno, enum grep_context ctx, int collect_hits)
> Â{
> Â Â Â Âstruct grep_pat *p;
> Â Â Â Âregmatch_t match;
>
> Â Â Â Âif (opt->extended)
> - Â Â Â Â Â Â Â return match_expr(opt, bol, eol, ctx, collect_hits);
> + Â Â Â Â Â Â Â return match_expr(opt, bol, eol, lno, ctx, collect_hits);
>
> Â Â Â Â/* we do not call with collect_hits without being extended */
> Â Â Â Âfor (p = opt->pattern_list; p; p = p->next) {
> - Â Â Â Â Â Â Â if (match_one_pattern(p, bol, eol, ctx, &match, 0))
> + Â Â Â Â Â Â Â if (match_one_pattern(p, bol, eol, lno, ctx, &match, 0))
> Â Â Â Â Â Â Â Â Â Â Â Âreturn 1;
> Â Â Â Â}
> Â Â Â Âreturn 0;
> Â}
>
> Âstatic int match_next_pattern(struct grep_pat *p, char *bol, char *eol,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â enum grep_context ctx,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â unsigned lno, enum grep_context ctx,
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âregmatch_t *pmatch, int eflags)
> Â{
> Â Â Â Âregmatch_t match;
>
> - Â Â Â if (!match_one_pattern(p, bol, eol, ctx, &match, eflags))
> + Â Â Â if (!match_one_pattern(p, bol, eol, lno, ctx, &match, eflags))
> Â Â Â Â Â Â Â Âreturn 0;
> Â Â Â Âif (match.rm_so < 0 || match.rm_eo < 0)
> Â Â Â Â Â Â Â Âreturn 0;
> @@ -601,7 +601,7 @@ static int match_next_pattern(struct grep_pat *p, char *bol, char *eol,
> Â Â Â Âreturn 1;
> Â}
>
> -static int next_match(struct grep_opt *opt, char *bol, char *eol,
> +static int next_match(struct grep_opt *opt, char *bol, char *eol, unsigned lno,
> Â Â Â Â Â Â Â Â Â Â Âenum grep_context ctx, regmatch_t *pmatch, int eflags)
> Â{
> Â Â Â Âstruct grep_pat *p;
> @@ -614,7 +614,7 @@ static int next_match(struct grep_opt *opt, char *bol, char *eol,
> Â Â Â Â Â Â Â Â Â Â Â Âcase GREP_PATTERN: /* atom */
> Â Â Â Â Â Â Â Â Â Â Â Âcase GREP_PATTERN_HEAD:
> Â Â Â Â Â Â Â Â Â Â Â Âcase GREP_PATTERN_BODY:
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â hit |= match_next_pattern(p, bol, eol, ctx,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â hit |= match_next_pattern(p, bol, eol, lno, ctx,
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âpmatch, eflags);
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbreak;
> Â Â Â Â Â Â Â Â Â Â Â Âdefault:
> @@ -667,7 +667,7 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol,
> Â Â Â Â Â Â Â Âelse if (sign == '=')
> Â Â Â Â Â Â Â Â Â Â Â Âline_color = opt->color_function;
> Â Â Â Â Â Â Â Â*eol = '\0';
> - Â Â Â Â Â Â Â while (next_match(opt, bol, eol, ctx, &match, eflags)) {
> + Â Â Â Â Â Â Â while (next_match(opt, bol, eol, lno, ctx, &match, eflags)) {
> Â Â Â Â Â Â Â Â Â Â Â Âif (match.rm_so == match.rm_eo)
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âbreak;
>
> @@ -911,7 +911,7 @@ static int grep_buffer_1(struct grep_opt *opt, const char *name,
> Â Â Â Â Â Â Â Âif ((ctx == GREP_CONTEXT_HEAD) && (eol == bol))
> Â Â Â Â Â Â Â Â Â Â Â Âctx = GREP_CONTEXT_BODY;
>
> - Â Â Â Â Â Â Â hit = match_line(opt, bol, eol, ctx, collect_hits);
> + Â Â Â Â Â Â Â hit = match_line(opt, bol, eol, lno, ctx, collect_hits);
> Â Â Â Â Â Â Â Â*eol = ch;
>
> Â Â Â Â Â Â Â Âif (collect_hits)
> --
> 1.7.5.349.gfeb1a
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at Âhttp://vger.kernel.org/majordomo-info.html
>
ÿô.nlj·Ÿ®‰­†+%ŠË±é¥Šwÿº{.nlj· ŠßžØn‡r¡öë¨è&£ûz¹Þúzf£¢·hšˆ§~†­†Ûÿÿïÿ‘ê_èæ+v‰¨þ)ßø

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]