* - > 0 on success. The number of flag bytes parsed.
* - <= 0 on failure. Negative offset of first unrecognised flag.
*/
-ssize_t regex_flags_parse(int *err, fr_regex_flags_t *out, fr_sbuff_t *in,
- fr_sbuff_term_t const *terminals, bool err_on_dup)
+fr_slen_t regex_flags_parse(int *err, fr_regex_flags_t *out, fr_sbuff_t *in,
+ fr_sbuff_term_t const *terminals, bool err_on_dup)
{
fr_sbuff_t our_in = FR_SBUFF(in);
if (err_on_dup && out->_f) { \
fr_strerror_printf("Duplicate regex flag '%c'", *our_in.p); \
if (err) *err = -2; \
- return -fr_sbuff_used(&our_in); \
+ return fr_sbuff_error(&our_in); \
} \
out->_f = 1; \
break
fr_strerror_printf("Unsupported regex flag '%c'", *our_in.p);
if (err) *err = -1;
- return -(fr_sbuff_used_total(&our_in));
+ return fr_sbuff_error(&our_in);
}
fr_sbuff_advance(&our_in, 1);
}
match 'foo' =~ /bar/im
condition foo =~ /bar/ima
-match ERROR offset 14: Unsupported regex flag 'a'
+match ERROR offset 15: Unsupported regex flag 'a'
condition foo =~ /bar/ii
-match ERROR offset 13: Duplicate regex flag 'i'
+match ERROR offset 14: Duplicate regex flag 'i'
condition foo =~ /bar/iia
-match ERROR offset 13: Duplicate regex flag 'i'
+match ERROR offset 14: Duplicate regex flag 'i'
#
# Escape the backslashes correctly
match (&User-Name =~ /bar/im)
xlat_purify &User-Name =~ /bar/ima
-match ERROR offset 21: Unsupported regex flag 'a'
+match ERROR offset 22: Unsupported regex flag 'a'
xlat_purify &User-Name =~ /bar/ii
-match ERROR offset 20: Duplicate regex flag 'i'
+match ERROR offset 21: Duplicate regex flag 'i'
xlat_purify &User-Name =~ /bar/iia
-match ERROR offset 20: Duplicate regex flag 'i'
+match ERROR offset 21: Duplicate regex flag 'i'
#
# Escape the backslashes correctly