Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals

config_pvt.h File Reference

#include <asterisk/config.h>

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)
ast_config_regget_config_registrations (void)
ast_config_regget_ast_cust_config (char *name)
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)
ast_configast_new_config (void)
ast_categoryast_new_category (char *name)
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.

Referenced by read_ast_cust_config().

#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 884 of file config.c.

References ast_mutex_lock, ast_mutex_unlock, and ast_config_reg::next.

Referenced by ast_config_destroy_all(), and ast_cust_config_deregister().

00885 { 00886 struct ast_config_reg *ptr=NULL,*last=NULL; 00887 ast_mutex_lock(&ast_cust_config_lock); 00888 for (ptr=ast_cust_config_list;ptr;ptr=ptr->next) { 00889 if (ptr == del) { 00890 if (last && ptr->next) { 00891 last->next = ptr->next; 00892 } else if (last && ! ptr->next) { 00893 last->next = NULL; 00894 } else if (!last && ptr->next) { 00895 ast_cust_config_list = ptr->next; 00896 } else if (!last && !ptr->next) { 00897 ast_cust_config_list = NULL; 00898 } 00899 } 00900 last = ptr; 00901 } 00902 ast_mutex_unlock(&ast_cust_config_lock); 00903 return 0; 00904 }

void ast_config_destroy_all void   ) 
 

Definition at line 852 of file config.c.

References ast_config_deregister(), ast_mutex_lock, ast_mutex_unlock, and key().

00853 { 00854 struct ast_config_reg *key; 00855 ast_mutex_lock(&ast_cust_config_lock); 00856 for (key=ast_cust_config_list;key;key=key->next) { 00857 ast_config_deregister(key); 00858 } 00859 ast_cust_config_list = NULL; 00860 ast_mutex_unlock(&ast_cust_config_lock); 00861 }

int ast_config_register struct ast_config_reg new  ) 
 

Definition at line 868 of file config.c.

References ast_log(), ast_mutex_lock, ast_mutex_unlock, LOG_NOTICE, ast_config_reg::name, and ast_config_reg::next.

Referenced by ast_cust_config_register().

00869 { 00870 struct ast_config_reg *ptr; 00871 ast_mutex_lock(&ast_cust_config_lock); 00872 new->keycount = 0; 00873 if (!ast_cust_config_list) { 00874 ast_cust_config_list = new; 00875 } else { 00876 for(ptr=ast_cust_config_list;ptr->next;ptr=ptr->next); 00877 ptr->next = new; 00878 } 00879 ast_mutex_unlock(&ast_cust_config_lock); 00880 ast_log(LOG_NOTICE,"Registered Config Engine %s\n",new->name); 00881 return 1; 00882 }

int ast_cust_config_active void   ) 
 

Definition at line 906 of file config.c.

00906 { 00907 return (ast_cust_config >0) ? 1 : 0; 00908 }

int ast_cust_config_deregister struct ast_config_reg new  ) 
 

Definition at line 1016 of file config.c.

References ast_config_deregister(), and read_ast_cust_config().

01017 { 01018 ast_config_deregister(new); 01019 read_ast_cust_config(); 01020 return 1; 01021 }

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 1010 of file config.c.

References ast_config_register(), and read_ast_cust_config().

01011 { 01012 ast_config_register(new); 01013 read_ast_cust_config(); 01014 return 1; 01015 }

struct ast_category* ast_new_category char *  name  ) 
 

Definition at line 971 of file config.c.

References malloc.

00972 { 00973 struct ast_category *category; 00974 category = malloc(sizeof(struct ast_category)); 00975 if (category) { 00976 memset(category,0,sizeof(struct ast_category)); 00977 strncpy(category->name,name,sizeof(category->name) - 1); 00978 } 00979 return category; 00980 }

struct ast_config* ast_new_config void   ) 
 

Definition at line 961 of file config.c.

References malloc.

00962 { 00963 struct ast_config *config; 00964 config = malloc(sizeof(struct ast_config)); 00965 memset(config,0,sizeof(struct ast_config)); 00966 return config; 00967 }

struct ast_variable* ast_new_variable char *  name,
char *  value
 

Definition at line 983 of file config.c.

References free, and malloc.

00984 { 00985 struct ast_variable *variable; 00986 variable = malloc(sizeof(struct ast_variable)); 00987 if (variable) { 00988 memset(variable,0,sizeof(struct ast_variable)); 00989 variable->object=0; 00990 variable->name = malloc(strlen(name)+1); 00991 if (variable->name) { 00992 strcpy(variable->name,name); 00993 variable->value = malloc(strlen(value)+1); 00994 if (variable->value) { 00995 strcpy(variable->value,value); 00996 } else { 00997 free(variable->name); 00998 variable->name = NULL; 00999 } 01000 } 01001 } 01002 if (!variable->value) { 01003 free(variable); 01004 variable = NULL; 01005 } 01006 01007 return variable; 01008 }

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

Definition at line 645 of file config.c.

References AST_CONFIG_DIR, ast_verbose(), option_debug, option_verbose, ast_config::root, and VERBOSE_PREFIX_2.

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

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

struct ast_config_reg* get_ast_cust_config char *  name  ) 
 

Definition at line 840 of file config.c.

References ast_mutex_lock, ast_mutex_unlock, and ast_config_reg::next.

Referenced by read_ast_cust_config().

00841 { 00842 struct ast_config_reg *ptr=NULL; 00843 ast_mutex_lock(&ast_cust_config_lock); 00844 for (ptr=ast_cust_config_list;ptr;ptr=ptr->next) { 00845 if (!strcmp(name,ptr->name)) 00846 break; 00847 } 00848 ast_mutex_unlock(&ast_cust_config_lock); 00849 return ptr; 00850 }

struct ast_config_reg* get_ast_cust_config_keyword char *  name  ) 
 

Definition at line 825 of file config.c.

References ast_mutex_lock, ast_mutex_unlock, and ast_config_reg::next.

Referenced by read_ast_cust_config().

00826 { 00827 struct ast_config_reg *reg,*ret=NULL; 00828 int x=0; 00829 ast_mutex_lock(&ast_cust_config_lock); 00830 for (reg=ast_cust_config_list;reg && !ret;reg=reg->next) { 00831 for (x=0;x<reg->keycount && !ret ;x++) { 00832 if (!strcmp(reg->keywords[x],name)) 00833 ret=reg; 00834 } 00835 } 00836 ast_mutex_unlock(&ast_cust_config_lock); 00837 return ret; 00838 }

struct ast_config_reg* get_config_registrations void   ) 
 

Definition at line 863 of file config.c.

00864 { 00865 return ast_cust_config_list; 00866 }

int read_ast_cust_config void   ) 
 

Definition at line 1064 of file config.c.

References ast_destroy(), ast_load(), ast_log(), ast_variable_browse(), CONFIG_KEYWORD_ARRAYLEN, get_ast_cust_config(), get_ast_cust_config_keyword(), LOG_NOTICE, and LOG_WARNING.

Referenced by ast_cust_config_deregister(), ast_cust_config_register(), ast_module_reload(), and main().

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

int register_config_cli void   ) 
 

Definition at line 1059 of file config.c.

References ast_cli_register().

Referenced by main().

01060 { 01061 return ast_cli_register(&config_command_struct); 01062 }


Generated on Tue Aug 17 16:13:55 2004 for Asterisk by doxygen 1.3.8