Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/bin/ksh PR/52210: David H. Gutteridge: revert var pattern ha...



details:   https://anonhg.NetBSD.org/src/rev/97242c57843b
branches:  trunk
changeset: 823685:97242c57843b
user:      christos <christos%NetBSD.org@localhost>
date:      Wed May 03 00:41:34 2017 +0000

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

diffstat:

 bin/ksh/misc.c |  27 ++++++++++++---------------
 1 files changed, 12 insertions(+), 15 deletions(-)

diffs (88 lines):

diff -r cb0818d85f8f -r 97242c57843b bin/ksh/misc.c
--- a/bin/ksh/misc.c    Wed May 03 00:39:40 2017 +0000
+++ b/bin/ksh/misc.c    Wed May 03 00:41:34 2017 +0000
@@ -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 @@
                  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 @@
                                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 @@
                                                      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 @@
                                }
                                if (!matched && do_gmatch(srest, se,
                                                          prest, pe, isfile))
-                                       continue;
+                                       return 1;
                        }
-                       break;
+                       return 0;
 
                  default:
                        if (sc != pc)



Home | Main Index | Thread Index | Old Index