commit 865869fb281e39acf38fa14f70284e8306ced894
Author: Hiltjo Posthuma <[email protected]>
Date:   Sun Nov 16 11:45:10 2014 +0100

    grep: add -H flag

diff --git a/grep.1 b/grep.1
index f6c4d54..8fad4e5 100644
--- a/grep.1
+++ b/grep.1
@@ -3,7 +3,7 @@
 grep \- search files for a pattern
 .SH SYNOPSIS
 .B grep
-.RB [ \-Ecilnqv ]
+.RB [ \-EHcilnqv ]
 .RB [ \-e
 .I pattern ]
 .I pattern
@@ -24,6 +24,10 @@ status code is 2.
 .B \-E
 matches using extended regex.
 .TP
+.B \-H
+prefixes each matching line with its filename in the output. This is the
+default when there is more than one file specified.
+.TP
 .B \-c
 prints only a count of matching lines.
 .TP
diff --git a/grep.c b/grep.c
index edc565a..c0f5856 100644
--- a/grep.c
+++ b/grep.c
@@ -15,6 +15,7 @@ static int grep(FILE *, const char *);
 
 static int eflag = 0;
 static int vflag = 0;
+static int Hflag = 0;
 static int many;
 static char mode = 0;
 
@@ -27,7 +28,7 @@ static struct plist {
 static void
 usage(void)
 {
-       enprintf(Error, "usage: %s [-Ecilnqv] [-e pattern] pattern 
[files...]\n", argv0);
+       enprintf(Error, "usage: %s [-EHcilnqv] [-e pattern] pattern 
[files...]\n", argv0);
 }
 
 int
@@ -42,6 +43,9 @@ main(int argc, char *argv[])
        case 'E':
                flags |= REG_EXTENDED;
                break;
+       case 'H':
+               Hflag = 1;
+               break;
        case 'e':
                addpattern(EARGF(usage()));
                eflag = 1;
@@ -143,7 +147,7 @@ grep(FILE *fp, const char *str)
                        case 'q':
                                exit(Match);
                        default:
-                               if (many)
+                               if (many || Hflag)
                                        printf("%s:", str);
                                if (mode == 'n')
                                        printf("%ld:", n);


Reply via email to