builtin-grep: support '-l' option.
authorJunio C Hamano <junkio@cox.net>
Mon, 1 May 2006 19:39:21 +0000 (12:39 -0700)
committerJunio C Hamano <junkio@cox.net>
Mon, 1 May 2006 19:40:17 +0000 (12:40 -0700)
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-grep.c

index 653b65e..c3e6701 100644 (file)
@@ -81,6 +81,7 @@ struct grep_opt {
        regex_t regexp;
        unsigned linenum:1;
        unsigned invert:1;
        regex_t regexp;
        unsigned linenum:1;
        unsigned invert:1;
+       unsigned name_only:1;
        int regflags;
        unsigned pre_context;
        unsigned post_context;
        int regflags;
        unsigned pre_context;
        unsigned post_context;
@@ -139,6 +140,10 @@ static int grep_buffer(struct grep_opt *opt, const char *name,
                if (opt->invert)
                        hit = !hit;
                if (hit) {
                if (opt->invert)
                        hit = !hit;
                if (hit) {
+                       if (opt->name_only) {
+                               printf("%s\n", name);
+                               return 1;
+                       }
                        /* Hit at this line.  If we haven't shown the
                         * pre-context lines, we would need to show them.
                         */
                        /* Hit at this line.  If we haven't shown the
                         * pre-context lines, we would need to show them.
                         */
@@ -406,6 +411,11 @@ int cmd_grep(int argc, const char **argv, char **envp)
                                 */
                                continue;
                        }
                                 */
                                continue;
                        }
+                       if (!strcmp("-l", arg) ||
+                           !strcmp("--files-with-matches", arg)) {
+                               opt.name_only = 1;
+                               continue;
+                       }
                        if (!strcmp("-A", arg) ||
                            !strcmp("-B", arg) ||
                            !strcmp("-C", arg)) {
                        if (!strcmp("-A", arg) ||
                            !strcmp("-B", arg) ||
                            !strcmp("-C", arg)) {