Module Name:    src
Committed By:   christos
Date:           Sun Nov 14 19:49:17 UTC 2010

Modified Files:
        src/bin/sh: parser.c

Log Message:
revert previous. breaks other stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 src/bin/sh/parser.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/sh/parser.c
diff -u src/bin/sh/parser.c:1.75 src/bin/sh/parser.c:1.76
--- src/bin/sh/parser.c:1.75	Sun Nov 14 14:43:38 2010
+++ src/bin/sh/parser.c	Sun Nov 14 14:49:16 2010
@@ -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;

Reply via email to