diff --git a/src/conf.c b/src/conf.c index 59073131..bf296686 100644 --- a/src/conf.c +++ b/src/conf.c @@ -87,6 +87,7 @@ static int _conf_existdir(char *path); static int _conf_split(char *s, char *delimiters, char ***argvp); static void _conf_dispose_split(char **argv); static int _conf_xml_dump(XMLSTRUCT *pxml,LL *pll,int sublevel,char *parent); +static int _conf_verify_element(char *section, char *key, char *value); static CONF_ELEMENTS conf_elements[] = { { 1, 0, CONF_T_STRING,"general","runas" }, @@ -303,7 +304,7 @@ int _conf_verify_element(char *section, char *key, char *value) { return CONF_E_BADELEMENT; } - switch(pce->conf_elements) { + switch(pce->type) { case CONF_T_MULTICOMMA: /* can't really check these */ case CONF_T_STRING: return CONF_E_SUCCESS; @@ -857,11 +858,11 @@ char *conf_alloc_string(char *section, char *key, char *dflt) { * @param value value to set it to * @returns E_CONF_SUCCESS on success, error code otherwise */ -int conf_set_int(char *section, char *key, int value) { +int conf_set_int(char *section, char *key, int value, int verify) { char buffer[40]; /* ?? */ snprintf(buffer,sizeof(buffer),"%d",value); - return conf_set_string(section, key, buffer); + return conf_set_string(section, key, buffer, verify); } /** @@ -872,7 +873,7 @@ int conf_set_int(char *section, char *key, int value) { * @param value value to set it to * @returns E_CONF_SUCCESS on success, error code otherwise */ -int conf_set_string(char *section, char *key, char *value) { +int conf_set_string(char *section, char *key, char *value, int verify) { LL_ITEM *pitem; LL_ITEM *psection; LL *section_ll; @@ -886,6 +887,16 @@ int conf_set_string(char *section, char *key, char *value) { _conf_lock(); /* verify the item */ + err=_conf_verify_element(section,key,value); + if(err != CONF_E_SUCCESS) { + _conf_unlock(); + return err; + } + + if(verify) { + _conf_unlock(); + return CONF_E_SUCCESS; + } pce = _conf_get_keyinfo(section,key); if(pce) diff --git a/src/conf.h b/src/conf.h index 95e508fe..dfdeefcd 100644 --- a/src/conf.h +++ b/src/conf.h @@ -1,4 +1,4 @@ -o/* +/* * $Id$ * Functions for reading and writing the config file * @@ -19,19 +19,19 @@ o/* * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _CONFIG_H_ -#define _CONFIG_H_ +#ifndef _CONF_H_ +#define _CONF_H_ -#define CONF_E_SUCCESS 0 -#define CONF_E_FOPEN 1 -#define CONF_E_UNKNOWN 2 -#define CONF_E_BADHEADER 3 -#define CONF_E_PARSE 4 -#define CONF_E_OVERFLOW 5 /**