summaryrefslogtreecommitdiffstats
path: root/source/ap/ash/patches/ash-syntax.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/ash/patches/ash-syntax.patch')
-rw-r--r--source/ap/ash/patches/ash-syntax.patch270
1 files changed, 0 insertions, 270 deletions
diff --git a/source/ap/ash/patches/ash-syntax.patch b/source/ap/ash/patches/ash-syntax.patch
deleted file mode 100644
index 43ce78660..000000000
--- a/source/ap/ash/patches/ash-syntax.patch
+++ /dev/null
@@ -1,270 +0,0 @@
-diff -urN netbsd-sh/mksyntax.c ash-0.3.7.orig/mksyntax.c
---- netbsd-sh/mksyntax.c Fri Jan 12 17:50:38 2001
-+++ ash-0.3.7.orig/mksyntax.c Mon Apr 23 22:16:46 2001
-@@ -238,14 +238,14 @@
- add("$", "CVAR");
- add("}", "CENDVAR");
- /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
-- add("!*?[=~:/-", "CCTL");
-+ add("!*?[=~:/-]", "CCTL");
- print("dqsyntax");
- init();
- fputs("\n/* syntax table used when in single quotes */\n", cfile);
- add("\n", "CNL");
- add("'", "CENDQUOTE");
- /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
-- add("!*?[=~:/-", "CCTL");
-+ add("!*?[=~:/-]\\", "CCTL");
- print("sqsyntax");
- init();
- fputs("\n/* syntax table used when in arithmetic */\n", cfile);
-diff -urN netbsd-sh/parser.c ash-0.3.7.orig/parser.c
---- netbsd-sh/parser.c Fri Jan 12 17:50:39 2001
-+++ ash-0.3.7.orig/parser.c Mon Apr 23 22:16:46 2001
-@@ -221,6 +221,7 @@
- union node *n1, *n2, *n3;
- int t;
-
-+ checkkwd = 1;
- n1 = pipeline();
- for (;;) {
- if ((t = readtoken()) == TAND) {
-@@ -231,6 +232,7 @@
- tokpushback++;
- return n1;
- }
-+ checkkwd = 2;
- n2 = pipeline();
- n3 = (union node *)stalloc(sizeof (struct nbinary));
- n3->type = t;
-@@ -250,9 +252,11 @@
-
- negate = 0;
- TRACE(("pipeline: entered\n"));
-- while (readtoken() == TNOT)
-+ if (readtoken() == TNOT) {
- negate = !negate;
-- tokpushback++;
-+ checkkwd = 1;
-+ } else
-+ tokpushback++;
- n1 = command();
- if (readtoken() == TPIPE) {
- pipenode = (union node *)stalloc(sizeof (struct npipe));
-@@ -264,6 +268,7 @@
- do {
- prev = lp;
- lp = (struct nodelist *)stalloc(sizeof (struct nodelist));
-+ checkkwd = 2;
- lp->n = command();
- prev->next = lp;
- } while (readtoken() == TPIPE);
-@@ -288,9 +293,8 @@
- union node *ap, **app;
- union node *cp, **cpp;
- union node *redir, **rpp;
-- int t, negate = 0;
-+ int t;
-
-- checkkwd = 2;
- redir = NULL;
- n1 = NULL;
- rpp = &redir;
-@@ -303,12 +307,6 @@
- }
- tokpushback++;
-
-- while (readtoken() == TNOT) {
-- TRACE(("command: TNOT recognized\n"));
-- negate = !negate;
-- }
-- tokpushback++;
--
- switch (readtoken()) {
- case TIF:
- n1 = (union node *)stalloc(sizeof (struct nif));
-@@ -417,6 +415,8 @@
- cpp = &n1->ncase.cases;
- checkkwd = 2, readtoken();
- do {
-+ if (lasttoken == TLP)
-+ readtoken();
- *cpp = cp = (union node *)stalloc(sizeof (struct nclist));
- cp->type = NCLIST;
- app = &cp->nclist.pattern;
-@@ -464,21 +464,22 @@
- break;
- /* Handle an empty command like other simple commands. */
- case TSEMI:
-+ case TAND:
-+ case TOR:
-+ case TNL:
-+ case TEOF:
-+ case TRP:
-+ case TBACKGND:
- /*
- * An empty command before a ; doesn't make much sense, and
- * should certainly be disallowed in the case of `if ;'.
- */
- if (!redir)
- synexpect(-1);
-- case TAND:
-- case TOR:
-- case TNL:
-- case TEOF:
- case TWORD:
-- case TRP:
- tokpushback++;
- n1 = simplecmd(rpp, redir);
-- goto checkneg;
-+ return n1;
- default:
- synexpect(-1);
- /* NOTREACHED */
-@@ -502,15 +503,7 @@
- n1->nredir.redirect = redir;
- }
-
--checkneg:
-- if (negate) {
-- n2 = (union node *)stalloc(sizeof (struct nnot));
-- n2->type = NNOT;
-- n2->nnot.com = n1;
-- return n2;
-- }
-- else
-- return n1;
-+ return n1;
- }
-
-
-@@ -520,8 +513,7 @@
- {
- union node *args, **app;
- union node **orig_rpp = rpp;
-- union node *n = NULL, *n2;
-- int negate = 0;
-+ union node *n = NULL;
-
- /* If we don't have any redirections already, then we must reset */
- /* rpp to be the address of the local redir variable. */
-@@ -537,12 +529,6 @@
- */
- orig_rpp = rpp;
-
-- while (readtoken() == TNOT) {
-- TRACE(("command: TNOT recognized\n"));
-- negate = !negate;
-- }
-- tokpushback++;
--
- for (;;) {
- if (readtoken() == TWORD) {
- n = (union node *)stalloc(sizeof (struct narg));
-@@ -565,8 +551,9 @@
- synerror("Bad function name");
- #endif
- n->type = NDEFUN;
-+ checkkwd = 2;
- n->narg.next = command();
-- goto checkneg;
-+ return n;
- } else {
- tokpushback++;
- break;
-@@ -579,16 +566,7 @@
- n->ncmd.backgnd = 0;
- n->ncmd.args = args;
- n->ncmd.redirect = redir;
--
--checkneg:
-- if (negate) {
-- n2 = (union node *)stalloc(sizeof (struct nnot));
-- n2->type = NNOT;
-- n2->nnot.com = n;
-- return n2;
-- }
-- else
-- return n;
-+ return n;
- }
-
- STATIC union node *
-@@ -743,7 +721,7 @@
- }
- }
- out:
-- checkkwd = (t == TNOT) ? savecheckkwd : 0;
-+ checkkwd = 0;
- }
- #ifdef DEBUG
- if (!alreadyseen)
-@@ -882,6 +860,7 @@
- int varnest; /* levels of variables expansion */
- int arinest; /* levels of arithmetic expansion */
- int parenlevel; /* levels of parens in arithmetic */
-+ int dqvarnest; /* levels of variables expansion within double quotes */
- int oldstyle;
- char const *prevsyntax; /* syntax before arithmetic */
- #if __GNUC__
-@@ -892,6 +871,7 @@
- (void) &varnest;
- (void) &arinest;
- (void) &parenlevel;
-+ (void) &dqvarnest;
- (void) &oldstyle;
- (void) &prevsyntax;
- (void) &syntax;
-@@ -906,6 +886,7 @@
- varnest = 0;
- arinest = 0;
- parenlevel = 0;
-+ dqvarnest = 0;
-
- STARTSTACKSTR(out);
- loop: { /* for each line, until end of word */
-@@ -938,7 +919,8 @@
- USTPUTC(c, out);
- break;
- case CCTL:
-- if (eofmark == NULL || dblquote)
-+ if ((eofmark == NULL || dblquote) &&
-+ dqvarnest == 0)
- USTPUTC(CTLESC, out);
- USTPUTC(c, out);
- break;
-@@ -983,7 +965,8 @@
- if (arinest) {
- syntax = ARISYNTAX;
- dblquote = 0;
-- } else if (eofmark == NULL) {
-+ } else if (eofmark == NULL &&
-+ dqvarnest == 0) {
- syntax = BASESYNTAX;
- dblquote = 0;
- }
-@@ -996,6 +979,9 @@
- case CENDVAR: /* '}' */
- if (varnest > 0) {
- varnest--;
-+ if (dqvarnest > 0) {
-+ dqvarnest--;
-+ }
- USTPUTC(CTLENDVAR, out);
- } else {
- USTPUTC(c, out);
-@@ -1260,8 +1248,12 @@
- if (dblquote || arinest)
- flags |= VSQUOTE;
- *(stackblock() + typeloc) = subtype | flags;
-- if (subtype != VSNORMAL)
-+ if (subtype != VSNORMAL) {
- varnest++;
-+ if (dblquote) {
-+ dqvarnest++;
-+ }
-+ }
- }
- goto parsesub_return;
- }
-