DOUBLE,
SINGLE,
ESCAPEDOUBLE,
+ ANY,
} degree;
static char buffer[MAXCHARS + 1];
case '|':
case ';':
case ' ':
- if (degree < DOUBLE) degree = DOUBLE;
+ degree |= ANY;
break;
case '$':
case '~':
case '"':
- if (degree < SINGLE) degree = SINGLE;
+ degree |= SINGLE;
break;
case '\'':
- if (degree == NONE || degree == SINGLE) ++degree;
+ degree |= DOUBLE;
}
if (degree == NONE) return token;
+ degree = degree == ANY ? DOUBLE : degree & ~ANY;
quote = degree == SINGLE ? '\'' : '"';
p = buffer;