Print this page
3737 grep does not support -H option
3759 egrep(1) and fgrep(1) -s flag does not hide -c output
Reviewed by: Albert Lee <trisk@nexenta.com>
Reviewed by: Andy Stormont <andyjstormont@gmail.com>

*** 28,38 **** /* All Rights Reserved */ /* Copyright (c) 1987, 1988 Microsoft Corporation */ /* All Rights Reserved */ ! #pragma ident "%Z%%M% %I% %E% SMI" /* * fgrep -- print all lines containing any of a set of keywords * * status returns: --- 28,40 ---- /* All Rights Reserved */ /* Copyright (c) 1987, 1988 Microsoft Corporation */ /* All Rights Reserved */ ! /* ! * Copyright 2013 Damian Bogel. All rights reserved. ! */ /* * fgrep -- print all lines containing any of a set of keywords * * status returns:
*** 105,114 **** --- 107,117 ---- wchar_t letter(); #define same(a, b) \ (a == b || iflag && (!MULTI_BYTE || ISASCII(a)) && (a ^ b) == ' ' && \ letter(a) == letter(b)) + #define STDIN_FILENAME gettext("(standard input)") #define QSIZE 400 struct words { wchar_t inp; char out;
*** 117,128 **** struct words *fail; } *w = NULL, *smax, *q; FILE *fptr; long long lnum; ! int bflag, cflag, lflag, fflag, nflag, vflag, xflag, eflag, sflag; ! int hflag, iflag; int retcode = 0; int nfile; long long blkno; int nsucc; long long tln; --- 120,131 ---- struct words *fail; } *w = NULL, *smax, *q; FILE *fptr; long long lnum; ! int bflag, cflag, lflag, fflag, nflag, vflag, xflag, eflag, qflag; ! int Hflag, hflag, iflag; int retcode = 0; int nfile; long long blkno; int nsucc; long long tln;
*** 148,165 **** #if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */ #define TEXT_DOMAIN "SYS_TEST" /* Use this only if it weren't */ #endif (void) textdomain(TEXT_DOMAIN); ! while ((c = getopt(argc, argv, "hybcie:f:lnvxs")) != EOF) switch (c) { ! case 's': ! sflag++; continue; case 'h': hflag++; continue; case 'b': bflag++; continue; --- 151,174 ---- #if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */ #define TEXT_DOMAIN "SYS_TEST" /* Use this only if it weren't */ #endif (void) textdomain(TEXT_DOMAIN); ! while ((c = getopt(argc, argv, "Hhybcie:f:lnvxqs")) != EOF) switch (c) { ! case 'q': ! case 's': /* Solaris: legacy option */ ! qflag++; continue; + case 'H': + Hflag++; + hflag = 0; + continue; case 'h': hflag++; + Hflag = 0; continue; case 'b': bflag++; continue;
*** 219,229 **** errflg++; } argc -= optind; if (errflg || ((argc <= 0) && !fflag && !eflag)) { ! (void) printf(gettext("usage: fgrep [ -bchilnsvx ] " "[ -e exp ] [ -f file ] [ strings ] [ file ] ...\n")); exit(2); } if (!eflag && !fflag) { argptr = argv[optind]; --- 228,238 ---- errflg++; } argc -= optind; if (errflg || ((argc <= 0) && !fflag && !eflag)) { ! (void) printf(gettext("usage: fgrep [ -bcHhilnqsvx ] " "[ -e exp ] [ -f file ] [ strings ] [ file ] ...\n")); exit(2); } if (!eflag && !fflag) { argptr = argv[optind];
*** 311,322 **** gettext("fgrep: can't open %s\n"), file); retcode = 2; return; } } else { - file = "<stdin>"; fptr = stdin; } ccount = 0; failed = 0; lnum = 1; tln = 0; --- 320,331 ---- gettext("fgrep: can't open %s\n"), file); retcode = 2; return; } } else { fptr = stdin; + file = STDIN_FILENAME; } ccount = 0; failed = 0; lnum = 1; tln = 0;
*** 415,432 **** if ((vflag && (failed == 0 || xflag == 0)) || (vflag == 0 && xflag && failed)) goto nomatch; succeed: nsucc = 1; ! if (cflag) ! tln++; ! else if (lflag && !sflag) { (void) printf("%s\n", file); (void) fclose(fptr); return; ! } else if (!sflag) { ! if (nfile > 1 && !hflag) (void) printf("%s:", file); if (bflag) (void) printf("%lld:", (blkno - (long long)(ccount-1)) / BUFSIZ); --- 424,443 ---- if ((vflag && (failed == 0 || xflag == 0)) || (vflag == 0 && xflag && failed)) goto nomatch; succeed: nsucc = 1; ! if (lflag || qflag) { ! if (!qflag) (void) printf("%s\n", file); (void) fclose(fptr); return; ! } ! if (cflag) { ! tln++; ! } else { ! if (Hflag || (nfile > 1 && !hflag)) (void) printf("%s:", file); if (bflag) (void) printf("%lld:", (blkno - (long long)(ccount-1)) / BUFSIZ);
*** 456,467 **** c = w; failed = 0; } } (void) fclose(fptr); ! if (cflag) { ! if ((nfile > 1) && !hflag) (void) printf("%s:", file); (void) printf("%lld\n", tln); } } --- 467,478 ---- c = w; failed = 0; } } (void) fclose(fptr); ! if (cflag && !qflag) { ! if (Hflag || (nfile > 1 && !hflag)) (void) printf("%s:", file); (void) printf("%lld\n", tln); } }