![]() |
The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
|
Parse dictionary files. More...
#include <freeradius-devel/radius/defs.h>#include <freeradius-devel/util/conf.h>#include <freeradius-devel/util/dict_fixup_priv.h>#include <freeradius-devel/util/file.h>#include <freeradius-devel/util/rand.h>#include <freeradius-devel/util/syserror.h>#include <sys/stat.h>
Include dependency graph for dict_tokenize.c:Go to the source code of this file.
Data Structures | |
| struct | dict_tokenize_ctx_s |
| struct | dict_tokenize_frame_t |
| Parser context for dict_from_file. More... | |
| struct | fr_dict_keyword_parser_t |
| struct | fr_dict_keyword_t |
Macros | |
| #define | ASSERT_CURRENT_NEST(_dctx, _nest) |
| #define | CURRENT_DA(_dctx) (CURRENT_FRAME(_dctx)->da) |
| #define | CURRENT_FILENAME(_dctx) (CURRENT_FRAME(_dctx)->filename) |
| #define | CURRENT_FRAME(_dctx) (&(_dctx)->stack[(_dctx)->stack_depth]) |
| #define | CURRENT_LINE(_dctx) (CURRENT_FRAME(_dctx)->line) |
| #define | DICT_MAX_ARGV (8) |
| Maximum number of arguments. | |
| #define | DICT_MAX_STACK (32) |
| Maximum stack size. | |
| #define | FLAG_FUNC(_name) |
| Define a flag setting function, which sets one bit in a fr_dict_attr_flags_t. | |
| #define | NEST_ANY (NEST_TOP | NEST_PROTOCOL | NEST_VENDOR | NEST_ATTRIBUTE) |
Typedefs | |
| typedef int(* | fr_dict_keyword_finalise_t) (dict_tokenize_ctx_t *dctx) |
| typedef int(* | fr_dict_keyword_parse_t) (dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
| Keyword parser. | |
| typedef int(* | fr_dict_section_begin_t) (dict_tokenize_ctx_t *dctx) |
| Pushes a new frame onto the top of the stack based on the current frame. | |
Enumerations | |
| enum | dict_nest_t { NEST_NONE = 0x00 , NEST_TOP = 0x01 , NEST_PROTOCOL = 0x02 , NEST_VENDOR = 0x04 , NEST_ATTRIBUTE = 0x08 } |
| This represents explicit BEGIN/END frames pushed onto the stack. More... | |
Functions | |
| static int | _dict_from_file (dict_tokenize_ctx_t *dctx, char const *dir_name, char const *filename, char const *src_file, int src_line) |
| static int | dict_attr_add_or_fixup (dict_fixup_ctx_t *fixup, fr_dict_attr_t **da_p) |
| Add an attribute to the dictionary, or add it to a list of attributes to clone later. | |
| static int | dict_attr_allow_dup (fr_dict_attr_t const *da) |
| Check if this definition is a duplicate, and if it is, whether we should skip it error out. | |
| static void | dict_attr_location_set (dict_tokenize_ctx_t *dctx, fr_dict_attr_t *da) |
| static int | dict_begin_protocol (NDEBUG_UNUSED dict_tokenize_ctx_t *dctx) |
| Process an inline BEGIN PROTOCOL block. | |
| void | dict_dctx_debug (dict_tokenize_ctx_t *dctx) |
| static dict_tokenize_frame_t const * | dict_dctx_find_frame (dict_tokenize_ctx_t *dctx, dict_nest_t nest) |
| static dict_tokenize_frame_t const * | dict_dctx_pop (dict_tokenize_ctx_t *dctx) |
| Pop the current stack frame. | |
| static int | dict_dctx_push (dict_tokenize_ctx_t *dctx, fr_dict_attr_t const *da, dict_nest_t nest) |
| static dict_tokenize_frame_t const * | dict_dctx_unwind (dict_tokenize_ctx_t *dctx) |
| static dict_tokenize_frame_t const * | dict_dctx_unwind_until (dict_tokenize_ctx_t *dctx, dict_nest_t nest) |
| Unwind the stack until it points to a particular type of stack frame. | |
| static int | dict_filename_add (char **filename_out, fr_dict_t *dict, char const *filename, char const *src_file, int src_line) |
| Maintain a linked list of filenames which we've seen loading this dictionary. | |
| static bool | dict_filename_loaded (fr_dict_t *dict, char const *filename, char const *src_file, int src_line) |
| See if we have already loaded the file,. | |
| static int | dict_finalise (dict_tokenize_ctx_t *dctx) |
| static int | dict_flag_clone (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules) |
| static int | dict_flag_enum (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_key (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_length (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_offset (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_precision (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_ref (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_secret (fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_flag_subtype (fr_dict_attr_t **da_p, char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule) |
| static int | dict_from_file (fr_dict_t *dict, char const *dir_name, char const *filename, char const *src_file, int src_line) |
| static int | dict_process_type_field (dict_tokenize_ctx_t *dctx, char const *name, fr_dict_attr_t **da_p) |
| static int | dict_read_parse_format (char const *format, int *ptype, int *plength, bool *pcontinuation) |
| static int | dict_read_process_alias (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_attribute (dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_begin (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_begin_protocol (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_begin_vendor (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_common (dict_tokenize_ctx_t *dctx, fr_dict_attr_t **da_p, fr_dict_attr_t const *parent, char const *name, char const *type_name, char *flag_name, fr_dict_attr_flags_t const *base_flags) |
| static int | dict_read_process_define (dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_end (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_end_protocol (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_end_vendor (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_enum (dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_flags (UNUSED dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_include (dict_tokenize_ctx_t *dctx, char **argv, int argc, char const *dir) |
| static int | dict_read_process_member (dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_process_protocol (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flag) |
| Register the specified dictionary as a protocol dictionary. | |
| static int | dict_read_process_struct (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| Process a STRUCT name attr value. | |
| static int | dict_read_process_value (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| Process a value alias. | |
| static int | dict_read_process_vendor (dict_tokenize_ctx_t *dctx, char **argv, int argc, UNUSED fr_dict_attr_flags_t *base_flags) |
| static int | dict_read_sscanf_i (unsigned int *pvalue, char const *str) |
| static int | dict_root_set (fr_dict_t *dict, char const *name, unsigned int proto_number) |
| Set a new root dictionary attribute. | |
| static int | dict_set_value_attr (dict_tokenize_ctx_t *dctx, fr_dict_attr_t *da) |
| static int | dict_struct_finalise (dict_tokenize_ctx_t *dctx) |
| fr_dict_t * | fr_dict_alloc (char const *proto_name, unsigned int proto_number) |
| int | fr_dict_internal_afrom_file (fr_dict_t **out, char const *dict_subdir, char const *dependent) |
| (Re-)Initialize the special internal dictionary | |
| int | fr_dict_parse_str (fr_dict_t *dict, char *buf, fr_dict_attr_t const *parent) |
| int | fr_dict_protocol_afrom_file (fr_dict_t **out, char const *proto_name, char const *proto_dir, char const *dependent) |
| (Re)-initialize a protocol dictionary | |
| int | fr_dict_read (fr_dict_t *dict, char const *dir, char const *filename) |
| Read supplementary attribute definitions into an existing dictionary. | |
| int | fr_dict_str_to_argv (char *str, char **argv, int max_argc) |
| static | TABLE_TYPE_NAME_FUNC_RPTR (table_sorted_value_by_str, fr_dict_flag_parser_t const *, fr_dict_attr_flag_to_parser, fr_dict_flag_parser_rule_t const *, fr_dict_flag_parser_rule_t const *) |
| A lookup function for dictionary attribute flags. | |
| static | TABLE_TYPE_NAME_FUNC_RPTR (table_sorted_value_by_str, fr_dict_keyword_t const *, fr_dict_keyword, fr_dict_keyword_parser_t const *, fr_dict_keyword_parser_t const *) |
Variables | |
| static fr_table_num_sorted_t const | dict_nest_table [] |
| static size_t const | dict_nest_table_len = NUM_ELEMENTS(dict_nest_table) |
Parse dictionary files.
Definition in file dict_tokenize.c.
| struct dict_tokenize_ctx_s |
Definition at line 90 of file dict_tokenize.c.
Collaboration diagram for dict_tokenize_ctx_s:| Data Fields | ||
|---|---|---|
| fr_dict_t * | dict | Protocol dictionary we're inserting attributes into. |
| char * | filename | current filename |
| dict_fixup_ctx_t | fixup | |
| int | line | current line |
| fr_dict_attr_t const * | relative_attr | for ".82" instead of "1.2.3.82". only for parents of type "tlv" |
| dict_tokenize_frame_t | stack[DICT_MAX_STACK] | stack of attributes to track |
| int | stack_depth | points to the last used stack frame |
| fr_dict_attr_t * | value_attr | Cache of last attribute to speed up value processing. |
| struct dict_tokenize_frame_t |
Parser context for dict_from_file.
Allows vendor and TLV context to persist across $INCLUDEs
Definition at line 78 of file dict_tokenize.c.
Collaboration diagram for dict_tokenize_frame_t:| Data Fields | ||
|---|---|---|
| fr_dict_attr_t const * | da | the da we care about |
| char * | filename | name of the file where we read this entry |
| fr_dict_keyword_finalise_t | finalise | function to call when popping |
| int | line | line number where we read this entry |
| int | member_num | structure member numbers |
| dict_nest_t | nest | for manual vs automatic begin / end things |
| fr_dict_attr_t const * | struct_is_closed | no more members are allowed |
| ssize_t | struct_size | size of the struct. |
| struct fr_dict_keyword_parser_t |
Definition at line 3220 of file dict_tokenize.c.
Collaboration diagram for fr_dict_keyword_parser_t:| Data Fields | ||
|---|---|---|
| fr_dict_section_begin_t | begin | Can have a BEGIN prefix. |
| fr_dict_keyword_parse_t | parse | Function to parse the keyword with. |
| struct fr_dict_keyword_t |
Definition at line 3225 of file dict_tokenize.c.
Collaboration diagram for fr_dict_keyword_t:| Data Fields | ||
|---|---|---|
| fr_table_elem_name_t | name | Name of the keyword, e.g. "ATTRIBUTE". |
| fr_dict_keyword_parser_t | value | Value to return from lookup. |
| #define ASSERT_CURRENT_NEST | ( | _dctx, | |
| _nest | |||
| ) |
Definition at line 113 of file dict_tokenize.c.
| #define CURRENT_DA | ( | _dctx | ) | (CURRENT_FRAME(_dctx)->da) |
Definition at line 109 of file dict_tokenize.c.
| #define CURRENT_FILENAME | ( | _dctx | ) | (CURRENT_FRAME(_dctx)->filename) |
Definition at line 110 of file dict_tokenize.c.
| #define CURRENT_FRAME | ( | _dctx | ) | (&(_dctx)->stack[(_dctx)->stack_depth]) |
Definition at line 108 of file dict_tokenize.c.
| #define CURRENT_LINE | ( | _dctx | ) | (CURRENT_FRAME(_dctx)->line) |
Definition at line 111 of file dict_tokenize.c.
| #define DICT_MAX_ARGV (8) |
Maximum number of arguments.
For any one keyword, this is the maxiumum number of arguments that can be passed.
Definition at line 39 of file dict_tokenize.c.
| #define DICT_MAX_STACK (32) |
Maximum stack size.
This is the maximum number of nested BEGIN and $INCLUDE statements.
Definition at line 45 of file dict_tokenize.c.
| #define FLAG_FUNC | ( | _name | ) |
Define a flag setting function, which sets one bit in a fr_dict_attr_flags_t.
This is here, because AFAIK there's no completely portable way to get the bit offset of a bit field in a structure.
Definition at line 484 of file dict_tokenize.c.
| #define NEST_ANY (NEST_TOP | NEST_PROTOCOL | NEST_VENDOR | NEST_ATTRIBUTE) |
Definition at line 61 of file dict_tokenize.c.
| typedef int(* fr_dict_keyword_finalise_t) (dict_tokenize_ctx_t *dctx) |
Definition at line 72 of file dict_tokenize.c.
| typedef int(* fr_dict_keyword_parse_t) (dict_tokenize_ctx_t *dctx, char **argv, int argc, fr_dict_attr_flags_t *base_flags) |
Keyword parser.
| [in] | dctx | containing the dictionary we're currently parsing. |
| [in] | argv | arguments to the keyword. |
| [in] | argc | number of arguments. |
| [in] | base_flags | set in the context of the current file. |
Definition at line 3200 of file dict_tokenize.c.
| typedef int(* fr_dict_section_begin_t) (dict_tokenize_ctx_t *dctx) |
Pushes a new frame onto the top of the stack based on the current frame.
Whenever a protocol, vendor, or attribute is defined in the dictionary it either mutates or pushes a new NONE frame onto the stack. This holds the last defined object at a given level of nesting.
This function is used to push an additional frame onto the stack, effectively entering the context of the last defined object at a given level of nesting
| [in] | dctx | Contains the current state of the dictionary parser. Used to track what PROTOCOL, VENDOR or TLV block we're in. |
Definition at line 3218 of file dict_tokenize.c.
| enum dict_nest_t |
This represents explicit BEGIN/END frames pushed onto the stack.
These are flags to allow multiple nesting types to be passed to the search function.
| Enumerator | |
|---|---|
| NEST_NONE | |
| NEST_TOP | top of the stack |
| NEST_PROTOCOL | BEGIN-PROTOCOL. |
| NEST_VENDOR | BEGIN-VENDOR. |
| NEST_ATTRIBUTE | BEGIN foo. |
Definition at line 52 of file dict_tokenize.c.
|
static |
Here is the caller graph for this function:
|
static |
Add an attribute to the dictionary, or add it to a list of attributes to clone later.
| [in] | fixup | context to add an entry to (if needed). |
| [in] | da_p | to either add, or create a fixup for. |
Definition at line 907 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Check if this definition is a duplicate, and if it is, whether we should skip it error out.
Definition at line 990 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
|
static |
Process an inline BEGIN PROTOCOL block.
This function is called after the PROTOCOL handler.
Definition at line 3176 of file dict_tokenize.c.
Here is the caller graph for this function:| void dict_dctx_debug | ( | dict_tokenize_ctx_t * | dctx | ) |
|
static |
|
static |
Pop the current stack frame.
| [in] | dctx | Stack to pop from. |
Definition at line 168 of file dict_tokenize.c.
Here is the caller graph for this function:
|
static |
|
inlinestatic |
Definition at line 225 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Unwind the stack until it points to a particular type of stack frame.
| [in] | dctx | Stack to unwind. |
| [in] | nest | Frame type to unwind to. |
Definition at line 185 of file dict_tokenize.c.
Here is the caller graph for this function:
|
inlinestatic |
Maintain a linked list of filenames which we've seen loading this dictionary.
This is used for debug messages, so we have a copy of the original file path that we can reference from fr_dict_attr_t without having the memory bloat of assigning a buffer to every attribute.
Definition at line 3123 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinestatic |
See if we have already loaded the file,.
Definition at line 3152 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 881 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 493 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 511 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 533 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
|
static |
|
static |
Definition at line 658 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 683 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
|
static |
Definition at line 717 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 3526 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 339 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1260 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1331 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1384 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1654 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1704 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1759 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1096 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 1898 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2022 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2076 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2133 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2174 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
|
static |
Definition at line 1171 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2304 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Register the specified dictionary as a protocol dictionary.
Allows vendor and TLV context to persist across $INCLUDEs
Definition at line 2952 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Process a STRUCT name attr value.
Define struct 'name' when key 'attr' has 'value'.
Which MUST be a sub-structure of another struct
Definition at line 2555 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Process a value alias.
Definition at line 2766 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Definition at line 2896 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
|
static |
Set a new root dictionary attribute.
| [in] | dict | to modify. |
| [in] | name | of dictionary root. |
| [in] | proto_number | The artificial (or IANA allocated) number for the protocol. This is only used for |
Definition at line 314 of file dict_tokenize.c.
Here is the caller graph for this function:
|
static |
Definition at line 1074 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
| fr_dict_t * fr_dict_alloc | ( | char const * | proto_name, |
| unsigned int | proto_number | ||
| ) |
Definition at line 3816 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_dict_internal_afrom_file | ( | fr_dict_t ** | out, |
| char const * | dict_subdir, | ||
| char const * | dependent | ||
| ) |
(Re-)Initialize the special internal dictionary
This dictionary has additional programmatically generated attributes added to it, and is checked in addition to the protocol specific dictionaries.
| [out] | out | Where to write pointer to the internal dictionary. |
| [in] | dict_subdir | name of the internal dictionary dir (may be NULL). |
| [in] | dependent | Either C src file, or another dictionary. |
Definition at line 3570 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_dict_parse_str | ( | fr_dict_t * | dict, |
| char * | buf, | ||
| fr_dict_attr_t const * | parent | ||
| ) |
Definition at line 3873 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_dict_protocol_afrom_file | ( | fr_dict_t ** | out, |
| char const * | proto_name, | ||
| char const * | proto_dir, | ||
| char const * | dependent | ||
| ) |
(Re)-initialize a protocol dictionary
Initialize the directory, then fix the attr number of all attributes.
| [out] | out | Where to write a pointer to the new dictionary. Will free existing dictionary if files have changed and *out is not NULL. |
| [in] | proto_name | that we're loading the dictionary for. |
| [in] | proto_dir | Explicitly set where to hunt for the dictionary files. May be NULL. |
| [in] | dependent | Either C src file, or another dictionary. |
Definition at line 3707 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_dict_read | ( | fr_dict_t * | dict, |
| char const * | dir, | ||
| char const * | filename | ||
| ) |
Read supplementary attribute definitions into an existing dictionary.
| [in] | dict | Existing dictionary. |
| [in] | dir | dictionary is located in. |
| [in] | filename | of the dictionary. |
Definition at line 3851 of file dict_tokenize.c.
Here is the call graph for this function:
Here is the caller graph for this function:| int fr_dict_str_to_argv | ( | char * | str, |
| char ** | argv, | ||
| int | max_argc | ||
| ) |
|
static |
A lookup function for dictionary attribute flags.
Definition at line 784 of file dict_tokenize.c.
Here is the call graph for this function:
|
static |
|
static |
Definition at line 63 of file dict_tokenize.c.
|
static |
Definition at line 70 of file dict_tokenize.c.
1.9.8