Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

cfg_parser.c File Reference

#include "cfg_parser.h"
#include "mem/mem.h"
#include "mem/shm_mem.h"
#include "dprint.h"
#include "trim.h"
#include "ut.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <libgen.h>

Go to the source code of this file.

Defines

#define IS_ALPHA(c)
#define IS_DELIM(c)
#define IS_WHITESPACE(c)   ((c) == ' ' || (c) == '\t' || (c) == '\r')
#define IS_QUOTE(c)   ((c) == '\"')
#define IS_COMMENT(c)   ((c) == '#')
#define IS_ESCAPE(c)   ((c) == '\\')
#define IS_EOL(c)   ((c) == '\n')
#define PUSH(c)
#define RETURN(c)
#define READ_CHAR

Enumerations

enum  st {
  ST_S, ST_A, ST_AE, ST_Q,
  ST_QE, ST_C, ST_CE, ST_E
}
 Built-in parsing functions *_val functions parse the whole option body (including =). More...

Functions

void print_token (cfg_token_t *token)
int cfg_get_token (cfg_token_t *token, cfg_parser_t *st, unsigned int flags)
int cfg_parse_section (void *param, cfg_parser_t *st, unsigned int flags)
char * get_base_name (str *filename)
cfg_parser_tcfg_parser_init (str *filename)
void cfg_parser_close (cfg_parser_t *st)
void cfg_section_parser (cfg_parser_t *st, cfg_func_f parser, void *param)
void cfg_set_options (cfg_parser_t *st, cfg_option_t *options)
int process_option (cfg_parser_t *st, cfg_option_t *opt)
int cfg_parse (cfg_parser_t *st)
cfg_option_tcfg_lookup_token (cfg_option_t *table, str *token)
int cfg_eat_equal (cfg_parser_t *st, unsigned int flags)
int cfg_eat_eol (cfg_parser_t *st, unsigned int flags)
int cfg_parse_enum (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_enum_opt (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_str (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_str_opt (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_int (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_int_opt (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_bool (void *param, cfg_parser_t *st, unsigned int flags)
int cfg_parse_bool_opt (void *param, cfg_parser_t *st, unsigned int flags)

Variables

cfg_option_t cfg_bool_values []


Define Documentation

#define IS_ALPHA  ) 
 

Value:

(((c) >= 'a' && (c) <= 'z') || \
     ((c) >= 'A' && (c) <= 'Z') || \
     ((c) >= '0' && (c) <= '9') || \
     (c) == '_')

Definition at line 152 of file cfg_parser.c.

Referenced by cfg_get_token().

#define IS_COMMENT  )     ((c) == '#')
 

Definition at line 187 of file cfg_parser.c.

Referenced by cfg_get_token().

#define IS_DELIM  ) 
 

Value:

((c) == '=' || \
     (c) == ':' || \
     (c) == ';' || \
     (c) == '.' || \
     (c) == ',' || \
     (c) == '?' || \
     (c) == '[' || \
     (c) == ']' || \
     (c) == '/' || \
     (c) == '@' || \
     (c) == '!' || \
     (c) == '$' || \
     (c) == '%' || \
     (c) == '&' || \
     (c) == '*' || \
     (c) == '(' || \
     (c) == ')' || \
     (c) == '-' || \
     (c) == '+' || \
     (c) == '|' || \
     (c) == '\'')

Definition at line 160 of file cfg_parser.c.

Referenced by cfg_get_token().

#define IS_EOL  )     ((c) == '\n')
 

Definition at line 189 of file cfg_parser.c.

Referenced by cfg_get_token().

#define IS_ESCAPE  )     ((c) == '\\')
 

Definition at line 188 of file cfg_parser.c.

Referenced by cfg_get_token().

#define IS_QUOTE  )     ((c) == '\"')
 

Definition at line 186 of file cfg_parser.c.

Referenced by cfg_get_token().

#define IS_WHITESPACE  )     ((c) == ' ' || (c) == '\t' || (c) == '\r')
 

Definition at line 185 of file cfg_parser.c.

Referenced by cfg_get_token().

#define PUSH  ) 
 

Value:

if (token->val.len >= MAX_TOKEN_LEN) { \
        ERR("%s:%d:%d: Token too long\n",  \
        st->file, st->line, st->col);      \
        return -1;                         \
    }                                      \
    if (token->val.len == 0) {             \
         token->start.line = st->line;     \
         token->start.col = st->col;       \
    }                                      \
    token->val.s[token->val.len++] = (c);

Definition at line 196 of file cfg_parser.c.

Referenced by cfg_get_token().

#define READ_CHAR
 

Value:

c = fgetc(st->f); \
     if (IS_EOL(c)) {  \
         st->line++;   \
         st->col = 0;  \
     } else {          \
         st->col++;    \
     }

Definition at line 223 of file cfg_parser.c.

#define RETURN  ) 
 

Value:

token->end.line = st->line; \
    token->end.col = st->col;   \
    token->type = (c);          \
    print_token(token);         \
    return 0;

Definition at line 212 of file cfg_parser.c.


Enumeration Type Documentation

enum st
 

Built-in parsing functions *_val functions parse the whole option body (including =).

Enumeration values:
ST_S  Begin.
ST_A  Alphanumeric.
ST_AE  Alphanumeric escaped.
ST_Q  Quoted.
ST_QE  Quoted escaped.
ST_C  Comment.
ST_CE  Comment escaped.
ST_E  Escaped.

Definition at line 139 of file cfg_parser.c.

Referenced by attr_equals(), attr_equals_xl(), bind_mysql_params(), bind_result(), cfg_eat_eol(), cfg_eat_equal(), cfg_get_token(), cfg_parse(), cfg_parse_addr_port(), cfg_parse_bool(), cfg_parse_bool_opt(), cfg_parse_dummy(), cfg_parse_enum(), cfg_parse_enum_opt(), cfg_parse_int(), cfg_parse_int_opt(), cfg_parse_section(), cfg_parse_str(), cfg_parse_str_opt(), cfg_parser_close(), cfg_parser_init(), cfg_section_parser(), cfg_set_options(), del_attr(), delete_avp(), do_action(), dump(), dump_domain(), hash_table_print(), next_contacts(), ops_copy_avp(), ops_dbstore_avps(), ops_pushto_avp(), parse_domain(), parse_field_map(), parse_hostport(), parse_ipv4(), parse_ipv6(), parse_ldap_uri(), parse_mysql_uri(), parse_postgres_uri(), parse_section(), parse_switchboard_section(), print_attrs(), print_structures(), print_ucontact(), process_option(), request_hf_helper(), rpc_add(), rpc_pa_publish(), rpc_stats(), rpc_struct_add(), rpc_struct_printf(), save_real(), search_avp(), search_avp_by_index(), search_reverse(), skip_uri(), str2ip(), tm_rpc_hash_stats(), tm_rpc_stats(), update_result(), upload_cmd(), and xl_get_avp().


Function Documentation

int cfg_eat_eol cfg_parser_t st,
unsigned int  flags
 

Definition at line 769 of file cfg_parser.c.

References cfg_get_token(), cfg_parser_t, cfg_token_t, cfg_token::col, ERR, cfg_parser::file, cfg_token::line, st, cfg_token::start, and cfg_token::type.

int cfg_eat_equal cfg_parser_t st,
unsigned int  flags
 

Definition at line 747 of file cfg_parser.c.

References cfg_get_token(), cfg_parser_t, cfg_token_t, cfg_token::col, cfg_parser::col, ERR, cfg_parser::file, flags, cfg_token::line, cfg_parser::line, st, cfg_token::start, and cfg_token::type.

int cfg_get_token cfg_token_t token,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 282 of file cfg_parser.c.

References cfg_token::buf, BUG, cfg_parser_t, CFG_TOKEN_ALPHA, CFG_TOKEN_STRING, cfg_token_t, cfg_parser::col, ERR, cfg_parser::file, flags, IS_ALPHA, IS_COMMENT, IS_DELIM, IS_EOL, IS_ESCAPE, IS_QUOTE, IS_WHITESPACE, _str::len, cfg_parser::line, PUSH, RETURN, _str::s, st, ST_A, ST_AE, ST_C, ST_CE, ST_E, ST_Q, ST_QE, ST_S, and cfg_token::val.

cfg_option_t* cfg_lookup_token cfg_option_t table,
str token
 

Definition at line 717 of file cfg_parser.c.

References cfg_option_t, cfg_option::flags, int, _str::len, len, cfg_option::name, _str::s, and str.

int cfg_parse cfg_parser_t st  ) 
 

Definition at line 671 of file cfg_parser.c.

References cfg_get_token(), cfg_lookup_token(), cfg_option_t, cfg_parser_t, CFG_TOKEN_ALPHA, cfg_token_t, cfg_token::col, cfg_parser::cur_opt, ERR, cfg_parser::file, cfg_token::line, cfg_parser::options, cfg_parser::param, cfg_parser::parser, process_option(), cfg_parser::section, st, cfg_token::start, STR_FMT, cfg_token::type, and cfg_token::val.

int cfg_parse_bool void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 957 of file cfg_parser.c.

References cfg_bool_values, cfg_get_token(), cfg_lookup_token(), cfg_option_t, cfg_parser_t, CFG_TOKEN_ALPHA, cfg_token_t, cfg_token::col, ERR, cfg_parser::file, flags, cfg_token::line, st, cfg_token::start, STR_FMT, cfg_token::type, cfg_option::val, and cfg_token::val.

int cfg_parse_bool_opt void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 985 of file cfg_parser.c.

References cfg_eat_eol(), cfg_eat_equal(), CFG_EXTENDED_ALPHA, cfg_parse_bool(), cfg_parser_t, cfg_parser::col, ERR, cfg_parser::file, flags, cfg_parser::line, and st.

int cfg_parse_enum void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 787 of file cfg_parser.c.

References cfg_get_token(), cfg_lookup_token(), cfg_option_t, cfg_parser_t, CFG_TOKEN_ALPHA, cfg_token_t, cfg_token::col, ERR, cfg_parser::file, flags, cfg_token::line, process_option(), st, cfg_token::start, STR_FMT, cfg_token::type, and cfg_token::val.

int cfg_parse_enum_opt void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 817 of file cfg_parser.c.

References cfg_eat_eol(), cfg_eat_equal(), CFG_EXTENDED_ALPHA, cfg_parse_enum(), cfg_parser_t, cfg_parser::col, ERR, cfg_parser::file, flags, cfg_parser::line, and st.

int cfg_parse_int void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 912 of file cfg_parser.c.

References cfg_get_token(), cfg_parser_t, CFG_TOKEN_ALPHA, cfg_token_t, cfg_token::col, ERR, cfg_parser::file, flags, cfg_token::line, st, cfg_token::start, str2sint(), STR_FMT, cfg_token::type, and cfg_token::val.

int cfg_parse_int_opt void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 940 of file cfg_parser.c.

References cfg_eat_eol(), cfg_eat_equal(), cfg_parse_int(), cfg_parser_t, cfg_parser::col, ERR, cfg_parser::file, flags, cfg_parser::line, and st.

int cfg_parse_section void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 510 of file cfg_parser.c.

References cfg_eat_eol(), cfg_get_token(), cfg_parse_str(), cfg_parser_t, cfg_token_t, cfg_token::col, cfg_parser::col, ERR, cfg_parser::file, flags, cfg_token::line, cfg_parser::line, pkg_free, _str::s, s, st, cfg_token::start, str, and cfg_token::type.

int cfg_parse_str void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 835 of file cfg_parser.c.

References buf, cfg_get_token(), cfg_parser_t, CFG_TOKEN_ALPHA, cfg_token_t, cfg_token::col, ERR, cfg_parser::file, flags, _str::len, cfg_token::line, pkg_free, pkg_malloc, _str::s, st, cfg_token::start, str, STR_FMT, cfg_token::type, and cfg_token::val.

int cfg_parse_str_opt void param,
cfg_parser_t st,
unsigned int  flags
 

Definition at line 895 of file cfg_parser.c.

References cfg_eat_eol(), cfg_eat_equal(), CFG_EXTENDED_ALPHA, cfg_parse_str(), cfg_parser_t, cfg_parser::col, ERR, cfg_parser::file, flags, cfg_parser::line, and st.

void cfg_parser_close cfg_parser_t st  ) 
 

Definition at line 632 of file cfg_parser.c.

References cfg_parser_t, cfg_parser::f, cfg_parser::file, pkg_free, and st.

cfg_parser_t* cfg_parser_init str filename  ) 
 

Definition at line 586 of file cfg_parser.c.

References cfg_parser_t, cfg_parser::col, ERR, cfg_parser::file, get_abs_pathname(), get_base_name(), cfg_parser::line, pkg_free, pkg_malloc, st, str, and STR_FMT.

Referenced by ld_load_cfg(), parse_iptrtpproxy_cfg(), and tls_load_config().

void cfg_section_parser cfg_parser_t st,
cfg_func_f  parser,
void param
 

Definition at line 641 of file cfg_parser.c.

References cfg_parser_t, cfg_parser::param, cfg_parser::parser, cfg_parser::section, and st.

void cfg_set_options cfg_parser_t st,
cfg_option_t options
 

Definition at line 649 of file cfg_parser.c.

References cfg_option_t, cfg_parser_t, cfg_parser::options, and st.

char* get_base_name str filename  )  [static]
 

Definition at line 555 of file cfg_parser.c.

References as_asciiz(), ERR, len, pkg_free, pkg_malloc, and str.

Referenced by cfg_parser_init().

void print_token cfg_token_t token  )  [static]
 

Definition at line 250 of file cfg_parser.c.

References buf, cfg_token_t, cfg_token::col, DBG, cfg_token::end, _str::len, cfg_token::line, pkg_free, pkg_malloc, _str::s, cfg_token::start, STR_FMT, cfg_token::type, and cfg_token::val.

int process_option cfg_parser_t st,
cfg_option_t opt
[static]
 

Definition at line 655 of file cfg_parser.c.

References cfg_option_t, cfg_parser_t, cfg_option::f, cfg_option::flags, cfg_option::param, st, and cfg_option::val.

Referenced by cfg_parse(), and cfg_parse_enum().


Variable Documentation

cfg_option_t cfg_bool_values[]
 

Initial value:

 {
        {"yes",      .val = 1},
        {"true",     .val = 1},
        {"enable",   .val = 1},
        {"enabled",  .val = 1},
        {"1",        .val = 1},
        {"on",       .val = 1},
        {"no",       .val = 0},
        {"false",    .val = 0},
        {"disable",  .val = 0},
        {"disabled", .val = 0},
        {"0",        .val = 0},
        {"off",      .val = 0},
        {0}
}

Definition at line 233 of file cfg_parser.c.

Referenced by cfg_parse_bool().


Generated on Thu Jul 29 04:15:53 2010 for SIPExpressRouter by  doxygen 1.3.9.1