summaryrefslogtreecommitdiffstats
path: root/usr.bin/grep/grep.c
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2003-06-24 18:45:30 +0000
committertedu <tedu@openbsd.org>2003-06-24 18:45:30 +0000
commitc55f60e1c8160528f68db337d79145695d854b33 (patch)
treeb654cfadb7b773cc4b01331f0b83684e33c54aba /usr.bin/grep/grep.c
parenttweak boolean test to be clear (diff)
downloadwireguard-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.c66
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) {