const char *errptr = NULL;
char *errmsg = NULL;
int cond;
+ char *w;
- if (*args[2]) {
- ha_alert("parsing [%s:%d]: Unexpected argument '%s' for '%s'.\n",
- file, linenum, args[2], args[0]);
- err_code |= ERR_ALERT | ERR_FATAL | ERR_ABORT;
- break;
- }
+ /* remerge all words into a single expression */
+ for (w = *args; (w += strlen(w)) < outline + outlen - 1; *w = ' ')
+ ;
nested_cond_lvl++;
if (nested_cond_lvl >= MAXNESTEDCONDS) {
const char *errptr = NULL;
char *errmsg = NULL;
int cond;
+ char *w;
- if (*args[2]) {
- ha_alert("parsing [%s:%d]: Unexpected argument '%s' for '%s'.\n",
- file, linenum, args[2], args[0]);
- err_code |= ERR_ALERT | ERR_FATAL | ERR_ABORT;
- break;
- }
+ /* remerge all words into a single expression */
+ for (w = *args; (w += strlen(w)) < outline + outlen - 1; *w = ' ')
+ ;
if (!nested_cond_lvl) {
ha_alert("parsing [%s:%d]: lone '.elif' with no matching '.if'.\n", file, linenum);
char *args[MAX_LINE_ARGS+1];
int arg = sizeof(args) / sizeof(*args);
size_t outlen = strlen(check_condition) + 1;
+ char *w;
err = parse_line(check_condition, check_condition, &outlen, args, &arg,
PARSE_OPT_ENV | PARSE_OPT_WORD_EXPAND | PARSE_OPT_DQUOTE | PARSE_OPT_SQUOTE | PARSE_OPT_BKSLASH,
exit(2);
}
- if ((err & PARSE_ERR_TOOMANY) || *args[1]) {
+ if (err & PARSE_ERR_TOOMANY) {
ha_alert("Error in condition: Too many words.\n");
exit(2);
}
exit(2);
}
+ /* remerge all words into a single expression */
+ for (w = *args; (w += strlen(w)) < check_condition + outlen - 1; *w = ' ')
+ ;
+
result = cfg_eval_condition(args, &errmsg, &errptr);
if (result < 0) {