summaryrefslogtreecommitdiff
path: root/builtin/grep.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/grep.c')
-rw-r--r--builtin/grep.c26
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)