return -1;
}
- if (!fr_assignment_op[name2_token]) {
- ERROR("%s[%d]: Parse error: Invalid assignment operator '%s' for group",
+ if (!fr_list_assignment_op[name2_token]) {
+ ERROR("%s[%d]: Parse error: Invalid assignment operator '%s' for list",
frame->filename, frame->lineno, buff[2]);
return -1;
}
return NULL;
}
op = cf_section_name2_quote(cs);
- if ((op == T_INVALID) || !fr_assignment_op[op]) {
+ if ((op == T_INVALID) || !fr_list_assignment_op[op]) {
cf_log_err(cs, "Invalid operator '%s' for editing list %s.", fr_tokens[op], cf_section_name1(cs));
return NULL;
}
T(PREPEND),
};
+const bool fr_list_assignment_op[T_TOKEN_LAST] = {
+ T(ADD_EQ), /* append */
+ T(AND_EQ), /* intersection */
+ T(OR_EQ), /* union */
+ T(LE), /* merge RHS */
+ T(GE), /* merge LHS */
+
+ T(SET),
+ T(EQ),
+ T(PREPEND), /* prepend */
+};
+
const bool fr_equality_op[T_TOKEN_LAST] = {
T(NE),
T(GE),
extern const bool fr_equality_op[T_TOKEN_LAST];
extern const bool fr_binary_op[T_TOKEN_LAST];
extern const bool fr_str_tok[T_TOKEN_LAST];
+extern const bool fr_list_assignment_op[T_TOKEN_LAST];
int getword (char const **ptr, char *buf, int buflen, bool unescape);
fr_token_t gettoken(char const **ptr, char *buf, int buflen, bool unescape);