From 3ed621bc8eb70ee11c69cd408fb8450eac33c281 Mon Sep 17 00:00:00 2001 From: Alexander Eremin Date: Fri, 30 Mar 2012 10:49:58 -0400 Subject: 650 grep support for -q would be useful Reviewed by: David Höppner <0xffea@googlemail.com> Reviewed by: Dan McDonald Reviewed by: Andrew Stormont Reviewed by: Garrett D'Amore Reviewed by: Albert Lee Approved by: Albert Lee MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usr/src/cmd/grep/grep.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'usr/src/cmd/grep/grep.c') diff --git a/usr/src/cmd/grep/grep.c b/usr/src/cmd/grep/grep.c index 37ccd8c2be..62a4527529 100644 --- a/usr/src/cmd/grep/grep.c +++ b/usr/src/cmd/grep/grep.c @@ -30,7 +30,7 @@ /* Copyright (c) 1987, 1988 Microsoft Corporation */ /* All Rights Reserved */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ /* * grep -- print lines matching (or not matching) a pattern @@ -88,6 +88,7 @@ static int sflag; static int iflag; static int wflag; static int hflag; +static int qflag; static int errflg; static int nfile; static long long tln; @@ -113,11 +114,14 @@ main(int argc, char **argv) #endif (void) textdomain(TEXT_DOMAIN); - while ((c = getopt(argc, argv, "hblcnsviyw")) != -1) + while ((c = getopt(argc, argv, "hqblcnsviyw")) != -1) switch (c) { case 'h': hflag++; break; + case 'q': /* POSIX: quiet: status only */ + qflag++; + break; case 'v': vflag++; break; @@ -148,7 +152,7 @@ main(int argc, char **argv) } if (errflg || (optind >= argc)) { - errmsg("Usage: grep -hblcnsviw pattern file . . .\n", + errmsg("Usage: grep [-c|-l|-q] -hbnsviw pattern file . . .\n", (char *)NULL); exit(2); } @@ -228,7 +232,7 @@ execute(char *file) if ((count = read(temp, prntbuf, GBUFSIZ)) <= 0) { (void) close(temp); - if (cflag) { + if (cflag && !qflag) { if (nfile > 1 && !hflag && file) (void) fprintf(stdout, "%s:", file); (void) fprintf(stdout, "%lld\n", tln); @@ -324,7 +328,7 @@ execute(char *file) } (void) close(temp); - if (cflag) { + if (cflag && !qflag) { if (nfile > 1 && !hflag && file) (void) fprintf(stdout, "%s:", file); (void) fprintf(stdout, "%lld\n", tln); @@ -340,6 +344,11 @@ succeed(char *f) if (f == NULL) f = ""; + if (qflag) { + /* no need to continue */ + return (1); + } + if (cflag) { tln++; return (0); -- cgit v1.2.3