--- tree.c 2001-10-01 09:21:08.000000000 -0300 +++ tree.c.new 2007-09-30 00:36:37.968464448 -0300 @@ -81,8 +81,9 @@ n->u[2].i = s->u[2].i; break; case nWord: - n = (*alloc)(offsetof(Node, u[2])); + n = (*alloc)(offsetof(Node, u[3])); n->u[0].s = strcpy((char *) (*alloc)(strlen(s->u[0].s) + 1), s->u[0].s); + n->u[2].i = s->u[2].i; if (s->u[1].s != NULL) { size_t i = strlen(s->u[0].s); n->u[1].s = (*alloc)(i); --- footobar.c 2001-10-12 06:10:27.000000000 -0300 +++ footobar.c.new 2007-09-30 00:39:06.458259082 -0300 @@ -73,7 +73,7 @@ case nForin: fmtprint(f, "for(%T in %T)%T", n->u[0].p, n->u[1].p, n->u[2].p); break; case nVarsub: fmtprint(f, "$%T(%T)", n->u[0].p, n->u[1].p); break; case nWord: - fmtprint(f, quotep(n->u[0].s, dollar) ? "%#S" : "%S", n->u[0].s); + fmtprint(f, n->u[2].i || quotep(n->u[0].s, dollar) ? "%#S" : "%S", n->u[0].s); break; case nLappend: { static bool inlist;