diff options
Diffstat (limited to 'builtin/grep.c')
-rw-r--r-- | builtin/grep.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/builtin/grep.c b/builtin/grep.c index 1e8b9465ed..f32fbbc35a 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -828,7 +828,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) int cached = 0; int seen_dashdash = 0; int external_grep_allowed__ignored; - int show_in_pager = 0; + const char *show_in_pager = NULL, *default_pager = "dummy"; struct grep_opt opt; struct object_array list = { 0, 0, NULL }; const char **paths = NULL; @@ -916,8 +916,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix) OPT_BOOLEAN(0, "all-match", &opt.all_match, "show only matches from files that match all patterns"), OPT_GROUP(""), - OPT_BOOLEAN('O', "open-files-in-pager", &show_in_pager, - "show matching files in the pager"), + { OPTION_STRING, 'O', "open-files-in-pager", &show_in_pager, + "pager", "show matching files in the pager", + PARSE_OPT_OPTARG, NULL, (intptr_t)default_pager }, OPT_BOOLEAN(0, "ext-grep", &external_grep_allowed__ignored, "allow calling of grep(1) (ignored by this build)"), { OPTION_CALLBACK, 0, "help-all", &options, NULL, "show usage", @@ -993,18 +994,15 @@ int cmd_grep(int argc, const char **argv, const char *prefix) argc--; } + if (show_in_pager == default_pager) + show_in_pager = git_pager(1); if (show_in_pager) { - const char *pager = git_pager(1); - if (!pager) { - show_in_pager = 0; - } else { - opt.name_only = 1; - opt.null_following_name = 1; - opt.output_priv = &path_list; - opt.output = append_path; - string_list_append(pager, &path_list); - use_threads = 0; - } + opt.name_only = 1; + opt.null_following_name = 1; + opt.output_priv = &path_list; + opt.output = append_path; + string_list_append(show_in_pager, &path_list); + use_threads = 0; } if (!opt.pattern_list) |