13 #ifndef TOR_CONFLINE_H
14 #define TOR_CONFLINE_H
19 #define CONFIG_LINE_NORMAL 0
22 #define CONFIG_LINE_APPEND 1
24 #define CONFIG_LINE_CLEAR 2
26 #define MAX_INCLUDE_RECURSION_LEVEL 31
43 const char *key,
const char *val);
45 const char *key,
const char *val);
57 #define config_free_lines(front) \
59 config_free_lines_(front); \
63 char **key_out,
char **value_out,
64 const char **err_out);
69 typedef int (*include_handler_fn)(
const char *, int, int,
76 int allow_include,
int *has_include,
77 struct smartlist_t *opened_lst,
int recursion_level,
79 include_handler_fn handle_include);
void config_line_prepend(config_line_t **lst, const char *key, const char *val)
const config_line_t * config_line_find(const config_line_t *lines, const char *key)
config_line_t * config_lines_dup_and_filter(const config_line_t *inp, const char *key)
int config_get_lines(const char *string, struct config_line_t **result, int extended)
config_line_t * config_lines_partition(config_line_t *inp, const char *header)
int config_get_lines_aux(const char *string, struct config_line_t **result, int extended, int allow_include, int *has_include, struct smartlist_t *opened_lst, int recursion_level, config_line_t **last, include_handler_fn handle_include)
void config_free_lines_(config_line_t *front)
const char * parse_config_line_from_str_verbose(const char *line, char **key_out, char **value_out, const char **err_out)
int config_count_key(const config_line_t *a, const char *key)
config_line_t * config_lines_dup(const config_line_t *inp)
void config_line_append(config_line_t **lst, const char *key, const char *val)
const config_line_t * config_line_find_case(const config_line_t *lines, const char *key)
int config_lines_eq(const config_line_t *a, const config_line_t *b)