merge-base --octopus to mimic show-branch --merge-base
[gitweb.git] / builtin / grep.c
index f32fbbc35afb92a763c61b2c0df851eb9b3b08ce..597f76bc42f51e0fc1906c287981e3d37dc0f536 100644 (file)
@@ -564,7 +564,7 @@ static void append_path(struct grep_opt *opt, const void *data, size_t len)
 
        if (len == 1 && *(const char *)data == '\0')
                return;
-       string_list_append(xstrndup(data, len), path_list);
+       string_list_append(path_list, xstrndup(data, len));
 }
 
 static void run_pager(struct grep_opt *opt, const char *prefix)
@@ -770,11 +770,15 @@ static int file_callback(const struct option *opt, const char *arg, int unset)
        if (!patterns)
                die_errno("cannot open '%s'", arg);
        while (strbuf_getline(&sb, patterns, '\n') == 0) {
+               char *s;
+               size_t len;
+
                /* ignore empty line like grep does */
                if (sb.len == 0)
                        continue;
-               append_grep_pattern(grep_opt, strbuf_detach(&sb, NULL), arg,
-                                   ++lno, GREP_PATTERN);
+
+               s = strbuf_detach(&sb, &len);
+               append_grep_pat(grep_opt, s, len, arg, ++lno, GREP_PATTERN);
        }
        fclose(patterns);
        strbuf_release(&sb);
@@ -997,11 +1001,12 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
        if (show_in_pager == default_pager)
                show_in_pager = git_pager(1);
        if (show_in_pager) {
+               opt.color = 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);
+               string_list_append(&path_list, show_in_pager);
                use_threads = 0;
        }
 
@@ -1076,7 +1081,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                        strbuf_addf(&buf, "+/%s%s",
                                        strcmp("less", pager) ? "" : "*",
                                        opt.pattern_list->pattern);
-                       string_list_append(buf.buf, &path_list);
+                       string_list_append(&path_list, buf.buf);
                        strbuf_detach(&buf, NULL);
                }
        }