tor  master
confline.h
1 /* Copyright (c) 2001 Matej Pfajfar.
2  * Copyright (c) 2001-2004, Roger Dingledine.
3  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4  * Copyright (c) 2007-2017, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
6 
7 #ifndef TOR_CONFLINE_H
8 #define TOR_CONFLINE_H
9 
10 #include "container.h"
11 
13 #define CONFIG_LINE_NORMAL 0
14 
16 #define CONFIG_LINE_APPEND 1
17 /* Removes all previous configuration for an option. */
18 #define CONFIG_LINE_CLEAR 2
19 
20 #define MAX_INCLUDE_RECURSION_LEVEL 31
21 
23 typedef struct config_line_t {
24  char *key;
25  char *value;
26  struct config_line_t *next;
27 
29  unsigned int command:2;
33  unsigned int fragile:1;
35 
36 void config_line_append(config_line_t **lst,
37  const char *key, const char *val);
38 void config_line_prepend(config_line_t **lst,
39  const char *key, const char *val);
40 config_line_t *config_lines_dup(const config_line_t *inp);
41 config_line_t *config_lines_dup_and_filter(const config_line_t *inp,
42  const char *key);
43 const config_line_t *config_line_find(const config_line_t *lines,
44  const char *key);
45 int config_lines_eq(config_line_t *a, config_line_t *b);
46 int config_count_key(const config_line_t *a, const char *key);
47 int config_get_lines(const char *string, config_line_t **result, int extended);
48 int config_get_lines_include(const char *string, config_line_t **result,
49  int extended, int *has_include,
50  smartlist_t *opened_lst);
51 void config_free_lines_(config_line_t *front);
52 #define config_free_lines(front) \
53  do { \
54  config_free_lines_(front); \
55  (front) = NULL; \
56  } while (0)
57 const char *parse_config_line_from_str_verbose(const char *line,
58  char **key_out, char **value_out,
59  const char **err_out);
60 #endif /* !defined(TOR_CONFLINE_H) */
61 
Definition: confline.h:23
unsigned int fragile
Definition: confline.h:33
Definition: container.h:18
unsigned int command
Definition: confline.h:29