config_pvt.h File Reference

#include <asterisk/config.h>

Include dependency graph for config_pvt.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ast_category
struct  ast_config
struct  ast_config_reg

Defines

#define CONFIG_KEYWORD_STRLEN   128
#define CONFIG_KEYWORD_ARRAYLEN   512
#define MAX_INCLUDE_LEVEL   10

Functions

int ast_config_register (struct ast_config_reg *new)
int ast_config_deregister (struct ast_config_reg *del)
void ast_cust_config_on (void)
void ast_cust_config_off (void)
int ast_cust_config_active (void)
struct ast_config_regget_config_registrations (void)
struct ast_config_regget_ast_cust_config (char *name)
struct ast_config_regget_ast_cust_config_keyword (char *name)
void ast_config_destroy_all (void)
int ast_category_delete (struct ast_config *cfg, char *category)
int ast_variable_delete (struct ast_config *cfg, char *category, char *variable, char *value)
int ast_save (char *filename, struct ast_config *cfg, char *generator)
struct ast_configast_new_config (void)
struct ast_categoryast_new_category (char *name)
struct ast_variableast_new_variable (char *name, char *value)
int ast_cust_config_register (struct ast_config_reg *new)
int ast_cust_config_deregister (struct ast_config_reg *new)
int register_config_cli (void)
int read_ast_cust_config (void)


Define Documentation

#define CONFIG_KEYWORD_ARRAYLEN   512

Definition at line 8 of file config_pvt.h.

#define CONFIG_KEYWORD_STRLEN   128

Definition at line 7 of file config_pvt.h.

#define MAX_INCLUDE_LEVEL   10

Definition at line 11 of file config_pvt.h.


Function Documentation

int ast_category_delete ( struct ast_config cfg,
char *  category 
)

int ast_config_deregister ( struct ast_config_reg del  ) 

Definition at line 892 of file config.c.

00893 {
00894    struct ast_config_reg *ptr=NULL,*last=NULL;
00895    ast_mutex_lock(&ast_cust_config_lock);
00896    for (ptr=ast_cust_config_list;ptr;ptr=ptr->next) {
00897       if (ptr == del) {
00898          if (last && ptr->next) {
00899             last->next = ptr->next;
00900          } else if (last && ! ptr->next) {
00901             last->next = NULL;
00902          } else if (!last && ptr->next) {
00903             ast_cust_config_list = ptr->next;
00904          } else if (!last && !ptr->next) {
00905             ast_cust_config_list = NULL;
00906          }
00907       }
00908       last = ptr;
00909    }
00910    ast_mutex_unlock(&ast_cust_config_lock);
00911    return 0;
00912 }

void ast_config_destroy_all ( void   ) 

Definition at line 860 of file config.c.

00861 {
00862    struct ast_config_reg *key;
00863    ast_mutex_lock(&ast_cust_config_lock);
00864    for (key=ast_cust_config_list;key;key=key->next) {
00865       ast_config_deregister(key);
00866    }
00867    ast_cust_config_list = NULL;
00868    ast_mutex_unlock(&ast_cust_config_lock);
00869 }

int ast_config_register ( struct ast_config_reg new  ) 

Definition at line 876 of file config.c.

00877 {
00878    struct ast_config_reg *ptr;
00879    ast_mutex_lock(&ast_cust_config_lock);
00880    new->keycount = 0;
00881    if (!ast_cust_config_list) {
00882       ast_cust_config_list = new;
00883    } else {
00884       for(ptr=ast_cust_config_list;ptr->next;ptr=ptr->next);
00885          ptr->next = new;
00886    }
00887    ast_mutex_unlock(&ast_cust_config_lock);
00888    ast_log(LOG_NOTICE,"Registered Config Engine %s\n",new->name);
00889    return 1;
00890 }

int ast_cust_config_active ( void   ) 

Definition at line 914 of file config.c.

00914                                  {
00915    return (ast_cust_config >0) ? 1 : 0;
00916 }

int ast_cust_config_deregister ( struct ast_config_reg new  ) 

Definition at line 1024 of file config.c.

01025 {
01026    ast_config_deregister(new);
01027    read_ast_cust_config();
01028    return 1;
01029 }

void ast_cust_config_off ( void   ) 

void ast_cust_config_on ( void   ) 

int ast_cust_config_register ( struct ast_config_reg new  ) 

Definition at line 1018 of file config.c.

01019 {
01020    ast_config_register(new);
01021    read_ast_cust_config();
01022    return 1;
01023 }

struct ast_category* ast_new_category ( char *  name  )  [read]

Definition at line 979 of file config.c.

00980 {
00981    struct ast_category *category;
00982    category = malloc(sizeof(struct ast_category));
00983    if (category) {
00984       memset(category,0,sizeof(struct ast_category));
00985       strncpy(category->name,name,sizeof(category->name) - 1);
00986    }
00987    return category;
00988 }

struct ast_config* ast_new_config ( void   )  [read]

Definition at line 969 of file config.c.

00970 {
00971    struct ast_config *config;
00972    config = malloc(sizeof(struct ast_config));
00973    memset(config,0,sizeof(struct ast_config));
00974    return config;
00975 }

struct ast_variable* ast_new_variable ( char *  name,
char *  value 
) [read]

Definition at line 991 of file config.c.

00992 {
00993    struct ast_variable *variable;
00994    variable = malloc(sizeof(struct ast_variable));
00995    if (variable) {
00996       memset(variable,0,sizeof(struct ast_variable));
00997       variable->object=0;
00998       variable->name = malloc(strlen(name)+1);
00999       if (variable->name) {
01000          strcpy(variable->name,name);
01001          variable->value = malloc(strlen(value)+1);
01002          if (variable->value) {
01003             strcpy(variable->value,value);
01004          } else {
01005             free(variable->name);
01006             variable->name = NULL;
01007          }
01008       }
01009    }
01010    if (!variable->value) {
01011       free(variable);
01012       variable = NULL;
01013    }
01014       
01015    return variable;
01016 }

int ast_save ( char *  filename,
struct ast_config cfg,
char *  generator 
)

Definition at line 653 of file config.c.

00654 {
00655    FILE *f;
00656    char fn[256];
00657    char date[256]="";
00658    time_t t;
00659    struct ast_variable *var;
00660    struct ast_category *cat;
00661    int blanklines = 0;
00662    if (configfile[0] == '/') {
00663       strncpy(fn, configfile, sizeof(fn)-1);
00664    } else {
00665       snprintf(fn, sizeof(fn), "%s/%s", ast_config_AST_CONFIG_DIR, configfile);
00666    }
00667    time(&t);
00668    strncpy(date, ctime(&t), sizeof(date) - 1);
00669    if ((f = fopen(fn, "w"))) {
00670       if ((option_verbose > 1) && !option_debug)
00671          ast_verbose(  VERBOSE_PREFIX_2 "Saving '%s': ", fn);
00672       fprintf(f, ";!\n");
00673       fprintf(f, ";! Automatically generated configuration file\n");
00674       fprintf(f, ";! Filename: %s (%s)\n", configfile, fn);
00675       fprintf(f, ";! Generator: %s\n", generator);
00676       fprintf(f, ";! Creation Date: %s", date);
00677       fprintf(f, ";!\n");
00678       cat = cfg->root;
00679       while(cat) {
00680 #ifdef PRESERVE_COMMENTS
00681          /* Dump any precomments */
00682          dump_comments(f, cat->precomments);
00683 #endif
00684          /* Dump section with any appropriate comment */
00685 #ifdef PRESERVE_COMMENTS
00686          if (cat->sameline) 
00687             fprintf(f, "[%s]  ; %s\n", cat->name, cat->sameline->cmt);
00688          else
00689 #endif
00690             fprintf(f, "[%s]\n", cat->name);
00691          var = cat->root;
00692          while(var) {
00693 #ifdef PRESERVE_COMMENTS
00694             dump_comments(f, var->precomments);
00695 #endif            
00696             if (var->sameline) 
00697                fprintf(f, "%s %s %s  ; %s\n", var->name, (var->object ? "=>" : "="), var->value, var->sameline->cmt);
00698             else  
00699                fprintf(f, "%s %s %s\n", var->name, (var->object ? "=>" : "="), var->value);
00700             if (var->blanklines) {
00701                blanklines = var->blanklines;
00702                while (blanklines) {
00703                   fprintf(f, "\n");
00704                   blanklines--;
00705                }
00706             }
00707                
00708             var = var->next;
00709          }
00710 #if 0
00711          /* Put an empty line */
00712          fprintf(f, "\n");
00713 #endif
00714          cat = cat->next;
00715       }
00716 #ifdef PRESERVE_COMMENTS
00717       dump_comments(f, cfg->trailingcomments);
00718 #endif      
00719    } else {
00720       if (option_debug)
00721          printf("Unable to open for writing: %s\n", fn);
00722       else if (option_verbose > 1)
00723          printf( "Unable to write (%s)", strerror(errno));
00724       return -1;
00725    }
00726    fclose(f);
00727    return 0;
00728 }

int ast_variable_delete ( struct ast_config cfg,
char *  category,
char *  variable,
char *  value 
)

struct ast_config_reg* get_ast_cust_config ( char *  name  )  [read]

Definition at line 848 of file config.c.

00849 {
00850    struct ast_config_reg *ptr=NULL;
00851    ast_mutex_lock(&ast_cust_config_lock);
00852    for (ptr=ast_cust_config_list;ptr;ptr=ptr->next) {
00853       if (!strcmp(name,ptr->name))
00854          break;
00855    }
00856    ast_mutex_unlock(&ast_cust_config_lock);
00857    return ptr;
00858 }

struct ast_config_reg* get_ast_cust_config_keyword ( char *  name  )  [read]

Definition at line 833 of file config.c.

00834 {
00835    struct ast_config_reg *reg,*ret=NULL;
00836    int x=0;
00837    ast_mutex_lock(&ast_cust_config_lock);
00838    for (reg=ast_cust_config_list;reg && !ret;reg=reg->next) {
00839       for (x=0;x<reg->keycount && !ret ;x++) {
00840          if (!strcmp(reg->keywords[x],name))
00841             ret=reg;
00842       }
00843    }
00844    ast_mutex_unlock(&ast_cust_config_lock);
00845    return ret;
00846 }

struct ast_config_reg* get_config_registrations ( void   )  [read]

Definition at line 871 of file config.c.

00872 {
00873    return ast_cust_config_list;
00874 }

int read_ast_cust_config ( void   ) 

Definition at line 1072 of file config.c.

01073 {
01074    char *cfg = config_conf_file;
01075    struct ast_config *config;
01076    struct ast_variable *v;
01077    struct ast_config_reg *ptr;
01078    struct ast_config_reg *test = NULL;
01079 
01080    clear_cust_keywords();
01081    config = ast_load(cfg);
01082    if (config) {
01083       for (v = ast_variable_browse(config,"settings");v;v=v->next) {
01084          
01085          ptr = get_ast_cust_config(v->value);
01086          if (ptr) {
01087             if (ptr->keycount >= CONFIG_KEYWORD_ARRAYLEN) {
01088                ast_log(LOG_WARNING,"Max Number of Bindings exceeded for %s->%s %d/%d\n",v->name,v->value,ptr->keycount,CONFIG_KEYWORD_ARRAYLEN);
01089             } else {
01090                if (strcmp(v->name,config_conf_file) && strcmp(v->name,"asterisk.conf")) {
01091                   if (!(test = get_ast_cust_config_keyword(v->name))) {
01092                      ast_log(LOG_NOTICE,"Binding: %s to %s\n",v->name,v->value);
01093                      strncpy(ptr->keywords[ptr->keycount],v->name,sizeof(ptr->keywords[ptr->keycount]) - 1);
01094                      ptr->keywords[ptr->keycount][sizeof(ptr->keywords[ptr->keycount])-1] = '\0';
01095                      ptr->keycount++;
01096                   }
01097                } else {
01098                   ast_log(LOG_WARNING,"Cannot bind %s, Permission Denied\n",v->name);
01099                }
01100             }
01101          }
01102       }
01103       
01104       ast_destroy(config);
01105    }
01106 
01107    return 0;
01108 }

int register_config_cli ( void   ) 

Definition at line 1067 of file config.c.

01068 {
01069    return ast_cli_register(&config_command_struct);
01070 }


Generated on Wed Oct 28 17:00:53 2009 for Asterisk by  doxygen 1.5.6