Module Name:    src
Committed By:   christos
Date:           Wed May  3 00:41:34 UTC 2017

Modified Files:
        src/bin/ksh: misc.c

Log Message:
PR/52210: David H. Gutteridge: revert var pattern handling.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/bin/ksh/misc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/ksh/misc.c
diff -u src/bin/ksh/misc.c:1.16 src/bin/ksh/misc.c:1.17
--- src/bin/ksh/misc.c:1.16	Sun Apr 30 13:34:29 2017
+++ src/bin/ksh/misc.c	Tue May  2 20:41:34 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: misc.c,v 1.16 2017/04/30 17:34:29 christos Exp $	*/
+/*	$NetBSD: misc.c,v 1.17 2017/05/03 00:41:34 christos Exp $	*/
 
 /*
  * Miscellaneous functions
@@ -6,7 +6,7 @@
 #include <sys/cdefs.h>
 
 #ifndef lint
-__RCSID("$NetBSD: misc.c,v 1.16 2017/04/30 17:34:29 christos Exp $");
+__RCSID("$NetBSD: misc.c,v 1.17 2017/05/03 00:41:34 christos Exp $");
 #endif
 
 
@@ -683,12 +683,11 @@ do_gmatch(s, se, p, pe, isfile)
 		  case 0x80|'+': /* matches one or more times */
 		  case 0x80|'*': /* matches zero or more times */
 			if (!(prest = pat_scan(++p, pe, 0)))
-				break;
-			s--;
+				return 0;
 			/* take care of zero matches */
 			if (p[-1] == (0x80 | '*')
 			    && do_gmatch(s, se, prest, pe, isfile))
-				continue;
+				return 1;
 			for (psub = p; ; psub = pnext) {
 				pnext = pat_scan(psub, pe, 1);
 				for (srest = s; srest <= se; srest++) {
@@ -704,18 +703,17 @@ do_gmatch(s, se, p, pe, isfile)
 				if (pnext == prest)
 					break;
 			}
-			break;
+			return 0;
 
 		  case 0x80|'?': /* matches zero or once */
 		  case 0x80|'@': /* matches one of the patterns */
 		  case 0x80|' ': /* simile for @ */
 			if (!(prest = pat_scan(++p, pe, 0)))
-				break;
-			s--;
+				return 0;
 			/* Take care of zero matches */
 			if (p[-1] == (0x80 | '?')
 			    && do_gmatch(s, se, prest, pe, isfile))
-				continue;
+				return 1;
 			for (psub = p; ; psub = pnext) {
 				pnext = pat_scan(psub, pe, 1);
 				srest = prest == pe ? se : s;
@@ -724,17 +722,16 @@ do_gmatch(s, se, p, pe, isfile)
 						      psub, pnext - 2, isfile)
 					    && do_gmatch(srest, se,
 							 prest, pe, isfile))
-						continue;
+						return 1;
 				}
 				if (pnext == prest)
 					break;
 			}
-			break;
+			return 0;
 
 		  case 0x80|'!': /* matches none of the patterns */
 			if (!(prest = pat_scan(++p, pe, 0)))
-				break;
-			s--;
+				return 0;
 			for (srest = s; srest <= se; srest++) {
 				int matched = 0;
 
@@ -751,9 +748,9 @@ do_gmatch(s, se, p, pe, isfile)
 				}
 				if (!matched && do_gmatch(srest, se,
 							  prest, pe, isfile))
-					continue;
+					return 1;
 			}
-			break;
+			return 0;
 
 		  default:
 			if (sc != pc)

Reply via email to