mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	Cleanup formatting in config.c
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3235 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										205
									
								
								config.c
									
									
									
									
									
								
							
							
						
						
									
										205
									
								
								config.c
									
									
									
									
									
								
							@@ -43,11 +43,11 @@ static char *strip(char *buf)
 | 
			
		||||
{
 | 
			
		||||
	char *start;
 | 
			
		||||
	/* Strip off trailing whitespace, returns, etc */
 | 
			
		||||
	while(!ast_strlen_zero(buf) && (buf[strlen(buf)-1]<33))
 | 
			
		||||
	while (!ast_strlen_zero(buf) && (buf[strlen(buf)-1]<33))
 | 
			
		||||
		buf[strlen(buf)-1] = '\0';
 | 
			
		||||
	start = buf;
 | 
			
		||||
	/* Strip off leading whitespace, returns, etc */
 | 
			
		||||
	while(*start && (*start < 33))
 | 
			
		||||
	while (*start && (*start < 33))
 | 
			
		||||
		*start++ = '\0';
 | 
			
		||||
	return start;
 | 
			
		||||
}
 | 
			
		||||
@@ -519,7 +519,7 @@ static int cfg_process(struct ast_config *tmp, struct ast_category **_tmpc, stru
 | 
			
		||||
					while((*c == '<') || (*c == '>') || (*c == '\"')) c++;
 | 
			
		||||
					/* Get rid of leading mess */
 | 
			
		||||
					cur = c;
 | 
			
		||||
					while(!ast_strlen_zero(cur)) {
 | 
			
		||||
					while (!ast_strlen_zero(cur)) {
 | 
			
		||||
						c = cur + strlen(cur) - 1;
 | 
			
		||||
						if ((*c == '>') || (*c == '<') || (*c == '\"'))
 | 
			
		||||
							*c = '\0';
 | 
			
		||||
@@ -625,9 +625,8 @@ static int cfg_process(struct ast_config *tmp, struct ast_category **_tmpc, stru
 | 
			
		||||
				acs->root = com;
 | 
			
		||||
			acs->prev = com;
 | 
			
		||||
		} else {
 | 
			
		||||
		if (*_last) 
 | 
			
		||||
			(*_last)->blanklines++;
 | 
			
		||||
 | 
			
		||||
			if (*_last) 
 | 
			
		||||
				(*_last)->blanklines++;
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
@@ -739,38 +738,34 @@ static struct ast_config *__ast_load(char *configfile, struct ast_config *tmp, s
 | 
			
		||||
#endif
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	load_func=NULL;
 | 
			
		||||
	if(strcmp(configfile,config_conf_file) && strcmp(configfile,"asterisk.conf") && ast_cust_config_list) {
 | 
			
		||||
	  if(global_load_func)
 | 
			
		||||
	    load_func = global_load_func;
 | 
			
		||||
	  else {
 | 
			
		||||
	    reg = get_ast_cust_config_keyword(configfile);
 | 
			
		||||
	    if(reg && reg->func)
 | 
			
		||||
	      load_func = reg->func;
 | 
			
		||||
	    else {
 | 
			
		||||
	      reg = get_ast_cust_config_keyword("global");
 | 
			
		||||
	      if(reg && reg->func)
 | 
			
		||||
		global_load_func = load_func = reg->func;
 | 
			
		||||
	    }
 | 
			
		||||
	  }
 | 
			
		||||
	  
 | 
			
		||||
	  if(load_func) {
 | 
			
		||||
	    ast_log(LOG_NOTICE,"Loading Config %s via %s engine\n",configfile,reg && reg->name ? reg->name : "global");
 | 
			
		||||
	    tmp = load_func(configfile,tmp, _tmpc, _last, includelevel
 | 
			
		||||
	if (strcmp(configfile,config_conf_file) && strcmp(configfile,"asterisk.conf") && ast_cust_config_list) {
 | 
			
		||||
		if (global_load_func) {
 | 
			
		||||
			load_func = global_load_func;
 | 
			
		||||
		} else {
 | 
			
		||||
			reg = get_ast_cust_config_keyword(configfile);
 | 
			
		||||
			if (reg && reg->func) {
 | 
			
		||||
				load_func = reg->func;
 | 
			
		||||
			} else {
 | 
			
		||||
				reg = get_ast_cust_config_keyword("global");
 | 
			
		||||
				if (reg && reg->func)
 | 
			
		||||
					global_load_func = load_func = reg->func;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (load_func) {
 | 
			
		||||
			ast_log(LOG_NOTICE,"Loading Config %s via %s engine\n",configfile,reg && reg->name ? reg->name : "global");
 | 
			
		||||
			tmp = load_func(configfile,tmp, _tmpc, _last, includelevel
 | 
			
		||||
#ifdef PRESERVE_COMMENTS
 | 
			
		||||
,&acs
 | 
			
		||||
#endif
 | 
			
		||||
);
 | 
			
		||||
	    
 | 
			
		||||
	    if(tmp)
 | 
			
		||||
	      return tmp;
 | 
			
		||||
	  }
 | 
			
		||||
			if (tmp)
 | 
			
		||||
				return tmp;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if (configfile[0] == '/') {
 | 
			
		||||
		strncpy(fn, configfile, sizeof(fn)-1);
 | 
			
		||||
	} else {
 | 
			
		||||
@@ -828,80 +823,85 @@ static struct ast_config *__ast_load(char *configfile, struct ast_config *tmp, s
 | 
			
		||||
	return tmp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct ast_config_reg *get_ast_cust_config_keyword(char *name) {
 | 
			
		||||
struct ast_config_reg *get_ast_cust_config_keyword(char *name) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *reg,*ret=NULL;
 | 
			
		||||
	int x=0;
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	for(reg=ast_cust_config_list;reg && !ret;reg=reg->next)
 | 
			
		||||
		for(x=0;x<reg->keycount && !ret ;x++) 
 | 
			
		||||
			if(!strcmp(reg->keywords[x],name))
 | 
			
		||||
	for (reg=ast_cust_config_list;reg && !ret;reg=reg->next) {
 | 
			
		||||
		for (x=0;x<reg->keycount && !ret ;x++) {
 | 
			
		||||
			if (!strcmp(reg->keywords[x],name))
 | 
			
		||||
				ret=reg;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct ast_config_reg *get_ast_cust_config(char *name) {
 | 
			
		||||
struct ast_config_reg *get_ast_cust_config(char *name) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *ptr=NULL;
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	for(ptr=ast_cust_config_list;ptr;ptr=ptr->next) {
 | 
			
		||||
		if(!strcmp(name,ptr->name))
 | 
			
		||||
	for (ptr=ast_cust_config_list;ptr;ptr=ptr->next) {
 | 
			
		||||
		if (!strcmp(name,ptr->name))
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
	return ptr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ast_config_destroy_all(void) {
 | 
			
		||||
void ast_config_destroy_all(void) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *key;
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	for(key=ast_cust_config_list;key;key=key->next) {
 | 
			
		||||
	for (key=ast_cust_config_list;key;key=key->next) {
 | 
			
		||||
		ast_config_deregister(key);
 | 
			
		||||
	}
 | 
			
		||||
	ast_cust_config_list = NULL;
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct ast_config_reg *get_config_registrations(void) {
 | 
			
		||||
struct ast_config_reg *get_config_registrations(void) 
 | 
			
		||||
{
 | 
			
		||||
	return ast_cust_config_list;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ast_config_register(struct ast_config_reg *new) {
 | 
			
		||||
int ast_config_register(struct ast_config_reg *new) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *ptr;
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	new->keycount = 0;
 | 
			
		||||
	if(!ast_cust_config_list)
 | 
			
		||||
	if (!ast_cust_config_list) {
 | 
			
		||||
		ast_cust_config_list = new;
 | 
			
		||||
	else {
 | 
			
		||||
	} else {
 | 
			
		||||
		for(ptr=ast_cust_config_list;ptr->next;ptr=ptr->next);
 | 
			
		||||
		ptr->next = new;
 | 
			
		||||
			ptr->next = new;
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
	ast_log(LOG_NOTICE,"Registered Config Engine %s\n",new->name);
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ast_config_deregister(struct ast_config_reg *del) {
 | 
			
		||||
  struct ast_config_reg *ptr=NULL,*last=NULL;
 | 
			
		||||
  ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
  for(ptr=ast_cust_config_list;ptr;ptr=ptr->next) {
 | 
			
		||||
	  if(ptr == del) {
 | 
			
		||||
		  if(last && ptr->next) {
 | 
			
		||||
			  last->next = ptr->next;
 | 
			
		||||
		  }
 | 
			
		||||
		  else if(last && ! ptr->next) {
 | 
			
		||||
			  last->next = NULL;
 | 
			
		||||
		  }
 | 
			
		||||
		  else if(! last && ptr->next) {
 | 
			
		||||
			  ast_cust_config_list = ptr->next;
 | 
			
		||||
		  }
 | 
			
		||||
		  else if(! last && ! ptr->next) {
 | 
			
		||||
			  ast_cust_config_list = NULL;
 | 
			
		||||
		  }
 | 
			
		||||
	  }
 | 
			
		||||
	  last = ptr;
 | 
			
		||||
  }
 | 
			
		||||
  ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
  return 0;
 | 
			
		||||
int ast_config_deregister(struct ast_config_reg *del) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *ptr=NULL,*last=NULL;
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	for (ptr=ast_cust_config_list;ptr;ptr=ptr->next) {
 | 
			
		||||
		if (ptr == del) {
 | 
			
		||||
			if (last && ptr->next) {
 | 
			
		||||
				last->next = ptr->next;
 | 
			
		||||
			} else if (last && ! ptr->next) {
 | 
			
		||||
				last->next = NULL;
 | 
			
		||||
			} else if (!last && ptr->next) {
 | 
			
		||||
				ast_cust_config_list = ptr->next;
 | 
			
		||||
			} else if (!last && !ptr->next) {
 | 
			
		||||
				ast_cust_config_list = NULL;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		last = ptr;
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ast_cust_config_active(void) {
 | 
			
		||||
@@ -959,7 +959,8 @@ char *ast_category_browse(struct ast_config *config, char *prev)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct ast_config *ast_new_config(void) {
 | 
			
		||||
struct ast_config *ast_new_config(void) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config *config;
 | 
			
		||||
	config = malloc(sizeof(struct ast_config));
 | 
			
		||||
	memset(config,0,sizeof(struct ast_config));
 | 
			
		||||
@@ -968,10 +969,11 @@ struct ast_config *ast_new_config(void) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct ast_category *ast_new_category(char *name) {
 | 
			
		||||
struct ast_category *ast_new_category(char *name) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_category *category;
 | 
			
		||||
	category = malloc(sizeof(struct ast_category));
 | 
			
		||||
	if(category) {
 | 
			
		||||
	if (category) {
 | 
			
		||||
		memset(category,0,sizeof(struct ast_category));
 | 
			
		||||
		strncpy(category->name,name,sizeof(category->name));
 | 
			
		||||
	}
 | 
			
		||||
@@ -979,26 +981,26 @@ struct ast_category *ast_new_category(char *name) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct ast_variable *ast_new_variable(char *name,char *value) {
 | 
			
		||||
struct ast_variable *ast_new_variable(char *name, char *value) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_variable *variable;
 | 
			
		||||
	variable = malloc(sizeof(struct ast_variable));
 | 
			
		||||
	if(variable) {
 | 
			
		||||
	if (variable) {
 | 
			
		||||
		memset(variable,0,sizeof(struct ast_variable));
 | 
			
		||||
		variable->object=0;
 | 
			
		||||
		variable->name = malloc(strlen(name)+1);
 | 
			
		||||
		if(variable->name) {
 | 
			
		||||
		if (variable->name) {
 | 
			
		||||
			strcpy(variable->name,name);
 | 
			
		||||
			variable->value = malloc(strlen(value)+1);
 | 
			
		||||
			if(variable->value) {
 | 
			
		||||
			if (variable->value) {
 | 
			
		||||
				strcpy(variable->value,value);
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
			} else {
 | 
			
		||||
				free(variable->name);
 | 
			
		||||
				variable->name = NULL;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if(!variable->value) {
 | 
			
		||||
	if (!variable->value) {
 | 
			
		||||
		free(variable);
 | 
			
		||||
		variable = NULL;
 | 
			
		||||
	}
 | 
			
		||||
@@ -1006,23 +1008,26 @@ struct ast_variable *ast_new_variable(char *name,char *value) {
 | 
			
		||||
	return variable;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ast_cust_config_register(struct ast_config_reg *new) {
 | 
			
		||||
int ast_cust_config_register(struct ast_config_reg *new) 
 | 
			
		||||
{
 | 
			
		||||
	ast_config_register(new);
 | 
			
		||||
	read_ast_cust_config();
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
int ast_cust_config_deregister(struct ast_config_reg *new) {
 | 
			
		||||
int ast_cust_config_deregister(struct ast_config_reg *new) 
 | 
			
		||||
{
 | 
			
		||||
	ast_config_deregister(new);
 | 
			
		||||
	read_ast_cust_config();
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void clear_cust_keywords(void) {
 | 
			
		||||
static void clear_cust_keywords(void) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *key;
 | 
			
		||||
	int x;
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	for(key=get_config_registrations();key;key=key->next) {
 | 
			
		||||
		for(x=0;x<key->keycount;x++) {
 | 
			
		||||
	for (key=get_config_registrations();key;key=key->next) {
 | 
			
		||||
		for (x=0;x<key->keycount;x++) {
 | 
			
		||||
			key->keywords[x][0] = '\0';
 | 
			
		||||
		}
 | 
			
		||||
		key->keycount=0;
 | 
			
		||||
@@ -1030,56 +1035,58 @@ static void clear_cust_keywords(void) {
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int config_command(int fd, int argc, char **argv) {
 | 
			
		||||
static int config_command(int fd, int argc, char **argv) 
 | 
			
		||||
{
 | 
			
		||||
	struct ast_config_reg *key;
 | 
			
		||||
	int x;
 | 
			
		||||
	
 | 
			
		||||
	ast_cli(fd,"\n\n");
 | 
			
		||||
	ast_mutex_lock(&ast_cust_config_lock);
 | 
			
		||||
	for(key=get_config_registrations();key;key=key->next) {
 | 
			
		||||
	for (key=get_config_registrations();key;key=key->next) {
 | 
			
		||||
		ast_cli(fd,"\nConfig Engine: %s\n",key->name);
 | 
			
		||||
		for(x=0;x<key->keycount;x++)
 | 
			
		||||
		for (x=0;x<key->keycount;x++)
 | 
			
		||||
			ast_cli(fd,"===>%s\n",key->keywords[x]);
 | 
			
		||||
	}
 | 
			
		||||
	ast_mutex_unlock(&ast_cust_config_lock);
 | 
			
		||||
	ast_cli(fd,"\n\n");
 | 
			
		||||
	
 | 
			
		||||
  return 0;
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct ast_cli_entry config_command_struct = {
 | 
			
		||||
  { "show","config","handles", NULL }, config_command,
 | 
			
		||||
  "Show Config Handles", NULL };
 | 
			
		||||
 | 
			
		||||
int register_config_cli() {
 | 
			
		||||
int register_config_cli() 
 | 
			
		||||
{
 | 
			
		||||
	return ast_cli_register(&config_command_struct);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int read_ast_cust_config(void) {
 | 
			
		||||
int read_ast_cust_config(void) 
 | 
			
		||||
{
 | 
			
		||||
	char *cfg = config_conf_file;
 | 
			
		||||
	struct ast_config *config;
 | 
			
		||||
	struct ast_variable *v;
 | 
			
		||||
	struct ast_config_reg *ptr;
 | 
			
		||||
	struct ast_config_reg *test = NULL;
 | 
			
		||||
 | 
			
		||||
	clear_cust_keywords();
 | 
			
		||||
	config = ast_load(cfg);
 | 
			
		||||
	if(config) {
 | 
			
		||||
		for(v = ast_variable_browse(config,"settings");v;v=v->next) {
 | 
			
		||||
	if (config) {
 | 
			
		||||
		for (v = ast_variable_browse(config,"settings");v;v=v->next) {
 | 
			
		||||
			
 | 
			
		||||
			ptr = get_ast_cust_config(v->value);
 | 
			
		||||
			if(ptr) {
 | 
			
		||||
				if(ptr->keycount >= CONFIG_KEYWORD_ARRAYLEN) {
 | 
			
		||||
			if (ptr) {
 | 
			
		||||
				if (ptr->keycount >= CONFIG_KEYWORD_ARRAYLEN) {
 | 
			
		||||
					ast_log(LOG_WARNING,"Max Number of Bindings exceeded for %s->%s %d/%d\n",v->name,v->value,ptr->keycount,CONFIG_KEYWORD_ARRAYLEN);
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
					if(strcmp(v->name,config_conf_file) && strcmp(v->name,"asterisk.conf")) {
 | 
			
		||||
						if(!(test = get_ast_cust_config_keyword(v->name))) {
 | 
			
		||||
				} else {
 | 
			
		||||
					if (strcmp(v->name,config_conf_file) && strcmp(v->name,"asterisk.conf")) {
 | 
			
		||||
						if (!(test = get_ast_cust_config_keyword(v->name))) {
 | 
			
		||||
							ast_log(LOG_NOTICE,"Binding: %s to %s\n",v->name,v->value);
 | 
			
		||||
							strncpy(ptr->keywords[ptr->keycount],v->name,sizeof(ptr->keywords[ptr->keycount]));
 | 
			
		||||
							ptr->keycount++;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					else {
 | 
			
		||||
					} else {
 | 
			
		||||
						ast_log(LOG_WARNING,"Cannot bind %s, Permission Denied\n",v->name);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
@@ -1088,8 +1095,6 @@ int read_ast_cust_config(void) {
 | 
			
		||||
		
 | 
			
		||||
		ast_destroy(config);
 | 
			
		||||
	}
 | 
			
		||||
	else 
 | 
			
		||||
		ast_log(LOG_WARNING,"config loader has no config file so nevermind.\n");
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user