Add support for "grep -q"

This commit is contained in:
Pierre Pronchery 2017-01-31 21:59:45 +01:00
parent 97cdc17553
commit 77b2d9ec05

View File

@ -33,6 +33,8 @@
/* Prefs */ /* Prefs */
typedef int Prefs; typedef int Prefs;
#define GREP_PREFS_n 0x1 #define GREP_PREFS_n 0x1
#define GREP_PREFS_q 0x2
/* prototypes */ /* prototypes */
static int _grep(Prefs * prefs, int flags, char const * pattern, static int _grep(Prefs * prefs, int flags, char const * pattern,
@ -121,11 +123,14 @@ static int _grep_stream(Prefs * prefs, regex_t * reg, FILE * fp,
for(line = 1; fgets(buf, sizeof(buf), fp) != NULL; line++) for(line = 1; fgets(buf, sizeof(buf), fp) != NULL; line++)
if((e = regexec(reg, buf, 1, &match, 0)) == 0) if((e = regexec(reg, buf, 1, &match, 0)) == 0)
{ {
if(filename != NULL) if(prefs != NULL && !(*prefs & GREP_PREFS_q))
printf("%s:", filename); {
if(prefs != NULL && *prefs & GREP_PREFS_n) if(filename != NULL)
printf("%zd:", line); printf("%s:", filename);
printf("%s", buf); if(prefs != NULL && *prefs & GREP_PREFS_n)
printf("%zd:", line);
printf("%s", buf);
}
if(ret == 1) if(ret == 1)
ret = 0; ret = 0;
} }
@ -141,7 +146,7 @@ static int _grep_stream(Prefs * prefs, regex_t * reg, FILE * fp,
/* usage */ /* usage */
static int _usage(void) static int _usage(void)
{ {
fputs("Usage: " PROGNAME " [-Ein][file...]\n", stderr); fputs("Usage: " PROGNAME " [-Einq][file...]\n", stderr);
return 1; return 1;
} }
@ -155,7 +160,7 @@ int main(int argc, char * argv[])
Prefs prefs = 0; Prefs prefs = 0;
int flags = 0; int flags = 0;
while((o = getopt(argc, argv, "Ein")) != -1) while((o = getopt(argc, argv, "Einq")) != -1)
switch(o) switch(o)
{ {
case 'E': case 'E':
@ -167,6 +172,9 @@ int main(int argc, char * argv[])
case 'n': case 'n':
prefs |= GREP_PREFS_n; prefs |= GREP_PREFS_n;
break; break;
case 'q':
prefs |= GREP_PREFS_q;
break;
default: default:
return _usage(); return _usage();
} }