diff options
author | 2003-06-24 18:45:30 +0000 | |
---|---|---|
committer | 2003-06-24 18:45:30 +0000 | |
commit | c55f60e1c8160528f68db337d79145695d854b33 (patch) | |
tree | b654cfadb7b773cc4b01331f0b83684e33c54aba /usr.bin/grep/grep.c | |
parent | tweak boolean test to be clear (diff) | |
download | wireguard-openbsd-c55f60e1c8160528f68db337d79145695d854b33.tar.xz wireguard-openbsd-c55f60e1c8160528f68db337d79145695d854b33.zip |
actually do fgrep. -G -F and -E are now mutally exclusive, and override
the program name as expected. ok millert@
Diffstat (limited to 'usr.bin/grep/grep.c')
-rw-r--r-- | usr.bin/grep/grep.c | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/usr.bin/grep/grep.c b/usr.bin/grep/grep.c index 3fce875d9a5..c43d98f2c24 100644 --- a/usr.bin/grep/grep.c +++ b/usr.bin/grep/grep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: grep.c,v 1.15 2003/06/23 22:32:48 tedu Exp $ */ +/* $OpenBSD: grep.c,v 1.16 2003/06/24 18:45:30 tedu Exp $ */ /*- * Copyright (c) 1999 James Howard and Dag-Erling Coïdan Smørgrav @@ -232,6 +232,34 @@ main(int argc, char *argv[]) char *tmp; int c, i; + switch (__progname[0]) { + case 'e': + Eflag++; + break; + case 'f': + Fflag++; + break; + case 'g': + Gflag++; + break; +#ifndef NOZ + case 'z': + Zflag++; + switch(__progname[1]) { + case 'e': + Eflag++; + break; + case 'f': + Fflag++; + break; + case 'g': + Gflag++; + break; + } + break; +#endif + } + while ((c = getopt_long(argc, argv, optstr, long_options, (int *)NULL)) != -1) { switch (c) { @@ -257,12 +285,15 @@ main(int argc, char *argv[]) Aflag = Bflag = strtol(optarg, (char **)NULL, 10); break; case 'E': + Fflag = Gflag = 0; Eflag++; break; case 'F': + Eflag = Gflag = 0; Fflag++; break; case 'G': + Eflag = Fflag = 0; Gflag++; break; case 'H': @@ -380,35 +411,10 @@ main(int argc, char *argv[]) ++argv; } - switch (__progname[0]) { - case 'e': - Eflag++; - break; - case 'f': - Fflag++; - break; - case 'g': - Gflag++; - break; -#ifndef NOZ - case 'z': - Zflag++; - switch(__progname[1]) { - case 'e': - Eflag++; - break; - case 'f': - Fflag++; - break; - case 'g': - Gflag++; - break; - } - break; -#endif - } - - cflags |= Eflag ? REG_EXTENDED : REG_BASIC; + if (Eflag) + cflags |= REG_EXTENDED; + else if (Fflag) + cflags |= REG_NOSPEC; fg_pattern = grep_malloc(patterns * sizeof(*fg_pattern)); r_pattern = grep_malloc(patterns * sizeof(regex_t)); for (i = 0; i < patterns; ++i) { |