which is the simplest way of dealing with this issue.
}
switch (*p) {
+ /*
+ * Magic handling for variable expansions in the
+ * configuration files.
+ *
+ * @todo - make this configurable
+ */
+ case '$':
+ if (p[1] != '{') {
+ return_P("Unexpected '$'");
+ }
+
+ *out = p;
+ *type = T_BARE_WORD;
+
+ p += 2;
+ while (*p && (*p != '}')) {
+ if (isspace((int) *p)) {
+ return_P("Unexpected space in variable expansion");
+ }
+
+ p++;
+ }
+
+ if (!*p) {
+ return_P("Unexpected end of variable expansion");
+ }
+ p++;
+ *outlen = p - (*out);
+ break;
+
+
case '/':
quote = *(p++);
*type = T_OP_REG_EQ;