sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit 865869fb281e39acf38fa14f70284e8306ced894
parent e17b9cdd0a1496d35a5492683531fe7d7e81a7cf
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sun, 16 Nov 2014 11:45:10 +0100

grep: add -H flag

Diffstat:
grep.1 | 6+++++-
grep.c | 8++++++--
2 files changed, 11 insertions(+), 3 deletions(-)

diff --git 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 @@ -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);