00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _ASTERISK_CONFIG_H
00024 #define _ASTERISK_CONFIG_H
00025
00026 #if defined(__cplusplus) || defined(c_plusplus)
00027 extern "C" {
00028 #endif
00029
00030 #include <stdarg.h>
00031
00032 struct ast_config;
00033
00034 struct ast_category;
00035
00036 struct ast_variable {
00037 char *name;
00038 char *value;
00039 int lineno;
00040 int object;
00041 int blanklines;
00042 struct ast_comment *precomments;
00043 struct ast_comment *sameline;
00044 struct ast_variable *next;
00045 char stuff[0];
00046 };
00047
00048 typedef struct ast_config *config_load_func(const char *database, const char *table, const char *configfile, struct ast_config *config, int withcomments);
00049 typedef struct ast_variable *realtime_var_get(const char *database, const char *table, va_list ap);
00050 typedef struct ast_config *realtime_multi_get(const char *database, const char *table, va_list ap);
00051 typedef int realtime_update(const char *database, const char *table, const char *keyfield, const char *entity, va_list ap);
00052
00053 struct ast_config_engine {
00054 char *name;
00055 config_load_func *load_func;
00056 realtime_var_get *realtime_func;
00057 realtime_multi_get *realtime_multi_func;
00058 realtime_update *update_func;
00059 struct ast_config_engine *next;
00060 };
00061
00062
00063
00064
00065
00066
00067
00068 struct ast_config *ast_config_load(const char *filename);
00069 struct ast_config *ast_config_load_with_comments(const char *filename);
00070
00071
00072
00073
00074
00075
00076 void ast_config_destroy(struct ast_config *config);
00077
00078
00079
00080
00081
00082
00083
00084 struct ast_variable *ast_category_root(struct ast_config *config, char *cat);
00085
00086
00087
00088
00089
00090
00091
00092
00093 char *ast_category_browse(struct ast_config *config, const char *prev);
00094
00095
00096
00097
00098
00099
00100
00101 struct ast_variable *ast_variable_browse(const struct ast_config *config, const char *category);
00102
00103
00104
00105
00106
00107
00108
00109 struct ast_variable *ast_variable_next(struct ast_config *config, char *category,struct ast_variable *prev);
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 const char *ast_variable_retrieve(const struct ast_config *config, const char *category, const char *variable);
00120
00121
00122
00123
00124
00125
00126
00127
00128 struct ast_category *ast_category_get(const struct ast_config *config, const char *category_name);
00129
00130
00131
00132
00133
00134
00135
00136
00137 int ast_category_exist(const struct ast_config *config, const char *category_name);
00138
00139
00140
00141
00142
00143
00144
00145
00146 struct ast_variable *ast_load_realtime(const char *family, ...);
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156 struct ast_config *ast_load_realtime_multientry(const char *family, ...);
00157
00158
00159
00160
00161
00162
00163
00164
00165 int ast_update_realtime(const char *family, const char *keyfield, const char *lookup, ...);
00166
00167
00168
00169
00170
00171 int ast_check_realtime(const char *family);
00172
00173
00174
00175
00176 int ast_realtime_enabled(void);
00177
00178
00179
00180
00181
00182 void ast_variables_destroy(struct ast_variable *var);
00183
00184
00185 int ast_config_engine_register(struct ast_config_engine *newconfig);
00186
00187
00188 int ast_config_engine_deregister(struct ast_config_engine *del);
00189
00190 int register_config_cli(void);
00191 int read_config_maps(void);
00192
00193 struct ast_config *ast_config_new(void);
00194 struct ast_category *ast_config_get_current_category(const struct ast_config *cfg);
00195 void ast_config_set_current_category(struct ast_config *cfg, const struct ast_category *cat);
00196 const char *ast_config_option(struct ast_config *cfg, const char *cat, const char *var);
00197
00198 struct ast_category *ast_category_new(const char *name);
00199 void ast_category_append(struct ast_config *config, struct ast_category *cat);
00200 int ast_category_delete(struct ast_config *cfg, char *category);
00201 void ast_category_destroy(struct ast_category *cat);
00202 struct ast_variable *ast_category_detach_variables(struct ast_category *cat);
00203 void ast_category_rename(struct ast_category *cat, const char *name);
00204
00205 struct ast_variable *ast_variable_new(const char *name, const char *value);
00206 void ast_variable_append(struct ast_category *category, struct ast_variable *variable);
00207 int ast_variable_delete(struct ast_category *category, char *variable, char *match);
00208 int ast_variable_update(struct ast_category *category, const char *variable,
00209 const char *value, const char *match, unsigned int object);
00210
00211 int config_text_file_save(const char *filename, const struct ast_config *cfg, const char *generator);
00212
00213 struct ast_config *ast_config_internal_load(const char *configfile, struct ast_config *cfg, int withcomments);
00214
00215 #if defined(__cplusplus) || defined(c_plusplus)
00216 }
00217 #endif
00218
00219 #endif