25RCSID(
"$Id: dcfd4eb71cf26ad86774962a0c41610c8854faf3 $")
29#include <freeradius-devel/util/skip.h>
30#include <freeradius-devel/util/strerror.h>
31#include <freeradius-devel/util/token.h>
150#pragma clang diagnostic ignored "-Wgnu-designator"
167#define T(_x) [T_OP_ ## _x] = true
215#define T(_x) [T_ ## _x] = true
231#define T(_x) [T_## _x] = true
234 T(DOUBLE_QUOTED_STRING),
235 T(SINGLE_QUOTED_STRING),
236 T(BACK_QUOTED_STRING),
243#define TOKEN_MATCH(bptr, tptr) \
244 ( (tptr)[0] == (bptr)[0] && \
245 ((tptr)[1] == (bptr)[1] || (tptr)[1] == 0))
281 for (i = 0; i < tokenlist_len; i++) {
292 token = tokenlist[i].
value;
324 if ((buflen >= 3) && (p[1] == quote) && (p[2] == quote)) {
333 while (*p && buflen-- > 1) {
340 if (isspace((
uint8_t) *p))
break;
344 for (i = 0; i < tokenlist_len; i++) {
351 if (*p ==
',')
break;
370 if ((buflen >= 3) && (p[1] == quote) && (p[2] == quote)) {
411 if (*p >=
'0' && *p <=
'9' &&
412 sscanf(p,
"%3o", &x) == 1) {
460int getword(
char const **ptr,
char *buf,
int buflen,
bool unescape)
497 if (!ptr || !*ptr || !buf)
return T_INVALID;
505 if ((*p ==
'"') || (*p ==
'\'') || (*p ==
'`')) {
506 return gettoken(ptr, buf, buflen, unescape);
strcpy(log_entry->msg, buffer)
#define L(_str)
Helper for initialising arrays of string literals.
#define fr_skip_whitespace(_p)
Skip whitespace ('\t', '\n', '\v', '\f', '\r', ' ')
#define fr_table_str_by_value(_table, _number, _def)
Convert an integer to a string.
fr_table_elem_name_t name
size_t len
Literal string length.
An element in an arbitrarily ordered array of name to num mappings.
An element in a lexicographically sorted array of name to num mappings.
const bool fr_assignment_op[T_TOKEN_LAST]
const bool fr_list_assignment_op[T_TOKEN_LAST]
#define TOKEN_MATCH(bptr, tptr)
char const * fr_token_name(int token)
fr_token_t gettoken(char const **ptr, char *buf, int buflen, bool unescape)
fr_table_num_ordered_t const fr_tokens_table[]
static fr_token_t getthing(char const **ptr, char *buf, int buflen, bool tok, fr_table_num_ordered_t const *tokenlist, size_t tokenlist_len, bool unescape)
const bool fr_str_tok[T_TOKEN_LAST]
fr_table_num_sorted_t const fr_token_quotes_table[]
size_t fr_token_quotes_table_len
size_t fr_tokens_table_len
fr_token_t getop(char const **ptr)
const char fr_token_quote[T_TOKEN_LAST]
Convert tokens back to a quoting character.
char const * fr_tokens[T_TOKEN_LAST]
fr_token_t getstring(char const **ptr, char *buf, int buflen, bool unescape)
int getword(char const **ptr, char *buf, int buflen, bool unescape)
const bool fr_comparison_op[T_TOKEN_LAST]
const bool fr_binary_op[T_TOKEN_LAST]
@ T_SOLIDUS_QUOTED_STRING
#define fr_strerror_const(_msg)