Source-Changes-HG archive

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

[src/trunk]: src/bin/sh revert previous. breaks other stuff.



details:   https://anonhg.NetBSD.org/src/rev/4c86404d7f2d
branches:  trunk
changeset: 758746:4c86404d7f2d
user:      christos <christos%NetBSD.org@localhost>
date:      Sun Nov 14 19:49:16 2010 +0000

description:
revert previous. breaks other stuff.

diffstat:

 bin/sh/parser.c |  47 ++++++++++++++++-------------------------------
 1 files changed, 16 insertions(+), 31 deletions(-)

diffs (111 lines):

diff -r bd914c64e93d -r 4c86404d7f2d bin/sh/parser.c
--- a/bin/sh/parser.c   Sun Nov 14 19:43:38 2010 +0000
+++ b/bin/sh/parser.c   Sun Nov 14 19:49:16 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: parser.c,v 1.75 2010/11/14 19:43:38 christos Exp $     */
+/*     $NetBSD: parser.c,v 1.76 2010/11/14 19:49:16 christos Exp $     */
 
 /*-
  * Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)parser.c   8.7 (Berkeley) 5/16/95";
 #else
-__RCSID("$NetBSD: parser.c,v 1.75 2010/11/14 19:43:38 christos Exp $");
+__RCSID("$NetBSD: parser.c,v 1.76 2010/11/14 19:49:16 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -896,27 +896,20 @@
  * This code assumes that an int is 32 bits. We don't use uint32_t,
  * because the rest of the code does not.
  */
-#define VN (varnest - insub)
-#define ISDBLQUOTE() ((VN < 32) ? (dblquote & (1 << VN)) : \
-    (dblquotep[(VN / 32) - 1] & (1 << (VN % 32))))
+#define ISDBLQUOTE() ((varnest < 32) ? (dblquote & (1 << varnest)) : \
+    (dblquotep[(varnest / 32) - 1] & (1 << (varnest % 32))))
 
 #define SETDBLQUOTE() \
-    do { \
-           TRACE(("setdblquote %d\n", varnest)); \
-           if (varnest < 32) \
-                   dblquote |= (1 << varnest); \
-           else \
-                   dblquotep[(varnest / 32) - 1] |= (1 << (varnest % 32));\
-    } while (/*CONSTCOND*/0)
+    if (varnest < 32) \
+       dblquote |= (1 << varnest); \
+    else \
+       dblquotep[(varnest / 32) - 1] |= (1 << (varnest % 32))
 
 #define CLRDBLQUOTE() \
-    do { \
-           TRACE(("clrdblquote %d\n", varnest)); \
-           if (varnest < 32) \
-                   dblquote &= ~(1 << varnest); \
-           else \
-                   dblquotep[(varnest / 32) - 1] &= ~(1 << (varnest % 32)); \
-    } while (/*CONSTCOND*/0)
+    if (varnest < 32) \
+       dblquote &= ~(1 << varnest); \
+    else \
+       dblquotep[(varnest / 32) - 1] &= ~(1 << (varnest % 32))
 
 STATIC int
 readtoken1(int firstc, char const *syn, char *eofmark, int striptabs)
@@ -935,7 +928,6 @@
        volatile int arinest;   /* levels of arithmetic expansion */
        volatile int parenlevel;        /* levels of parens in arithmetic */
        volatile int oldstyle;
-       volatile int insub;
        char const * volatile prevsyntax;       /* syntax before arithmetic */
 #ifdef __GNUC__
        prevsyntax = NULL;      /* XXX gcc4 */
@@ -944,9 +936,9 @@
        startlinno = plinno;
        dblquote = 0;
        varnest = 0;
-       insub = 0;
-       if (syntax == DQSYNTAX)
+       if (syntax == DQSYNTAX) {
                SETDBLQUOTE();
+       }
        quotef = 0;
        bqlist = NULL;
        arinest = 0;
@@ -1002,14 +994,10 @@
                                        break;
                                }
                                quotef = 1;
-                               TRACE(("varnest=%d doubleq=%d c=%c\n",
-                                   varnest, ISDBLQUOTE(), c));
                                if (ISDBLQUOTE() && c != '\\' &&
                                    c != '`' && c != '$' &&
-                                   (c != '"' || eofmark != NULL)) {
-                                       USTPUTC(CTLESC, out);
-                                       USTPUTC(CTLESC, out);
-                               }
+                                   (c != '"' || eofmark != NULL))
+                                       USTPUTC('\\', out);
                                if (SQSYNTAX[c] == CCTL)
                                        USTPUTC(CTLESC, out);
                                else if (eofmark == NULL) {
@@ -1080,7 +1068,6 @@
                                PARSESUB();             /* parse substitution */
                                break;
                        case CENDVAR:   /* CLOSEBRACE */
-                               insub = 0;
                                if (varnest > 0 && !ISDBLQUOTE()) {
                                        varnest--;
                                        USTPUTC(CTLENDVAR, out);
@@ -1353,9 +1340,7 @@
                        flags |= VSQUOTE;
                *(stackblock() + typeloc) = subtype | flags;
                if (subtype != VSNORMAL) {
-                       TRACE(("varnest=%d subtype=%d\n", varnest, subtype));
                        varnest++;
-                       insub = 1;
                        if (varnest >= maxnest) {
                                dblquotep = ckrealloc(dblquotep, maxnest / 8);
                                dblquotep[(maxnest / 32) - 1] = 0;



Home | Main Index | Thread Index | Old Index