[RFC PATCH 2/3] grep: prepare grep for submodules
- From
Chris Packham <judge.packham@gmail.com>
- Date
- Sep 29, 2010, 20:28 UTC
- Message-ID
- <1285792134-26339-3-git-send-email-judge.packham@gmail.com>
- In-Reply-To
- <1285792134-26339-1-git-send-email-judge.packham@gmail.com>
Add --submodule-prefix option to pass to subprocess grep invocations. The prefix is then used when outputting the results.
Signed-off-by: Chris Packham <judge.packham@gmail.com> --- builtin/grep.c | 2 ++ grep.c | 8 ++++++++ grep.h | 1 + 3 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/builtin/grep.c b/builtin/grep.c index da32f3d..8315ff0 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -927,6 +927,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix) "allow calling of grep(1) (ignored by this build)"), { OPTION_CALLBACK, 0, "help-all", &options, NULL, "show usage", PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, help_callback }, + OPT_STRING(0, "submodule-prefix", &opt.submodule_prefix, "DIR", + "prepend this to submodule path output"), OPT_END() }; diff --git a/grep.c b/grep.c index 63c4280..36bec98 100644 --- a/grep.c +++ b/grep.c @@ -370,6 +370,10 @@ static void output_sep(struct grep_opt *opt, char sign) static void show_name(struct grep_opt *opt, const char *name) { + if (opt->submodule_prefix) { + output_color(opt, opt->submodule_prefix, + strlen(opt->submodule_prefix), opt->color_filename); + } output_color(opt, name, strlen(name), opt->color_filename); opt->output(opt, opt->null_following_name ? "\0" : "\n", 1); } @@ -644,6 +648,10 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol, } opt->last_shown = lno; + if (opt->submodule_prefix) { + output_color(opt, opt->submodule_prefix, + strlen(opt->submodule_prefix), opt->color_filename); + } if (opt->pathname) { output_color(opt, name, strlen(name), opt->color_filename); output_sep(opt, sign); diff --git a/grep.h b/grep.h index 06621fe..d918da4 100644 --- a/grep.h +++ b/grep.h @@ -67,6 +67,7 @@ struct grep_opt { struct grep_expr *pattern_expression; const char *prefix; int prefix_length; + const char *submodule_prefix; regex_t regexp; int linenum; int invert;
-- 1.7.3.dirty