diff options
author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-14 05:55:37 +0000 |
---|---|---|
committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-14 05:55:37 +0000 |
commit | 5ac1783eabb170049375d6cebd909c10a6523a73 (patch) | |
tree | 4b27eec49bce906d83911e64ff173171cc6bc979 /src/libs/zbxconf/cfg.c | |
parent | eb60de08877fe0e6f42e54949bb332e02caf86c1 (diff) | |
download | zabbix-5ac1783eabb170049375d6cebd909c10a6523a73.tar.gz zabbix-5ac1783eabb170049375d6cebd909c10a6523a73.tar.xz zabbix-5ac1783eabb170049375d6cebd909c10a6523a73.zip |
- new comms protocol for ZABBIX agents
git-svn-id: svn://svn.zabbix.com/trunk@4001 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxconf/cfg.c')
-rw-r--r-- | src/libs/zbxconf/cfg.c | 136 |
1 files changed, 72 insertions, 64 deletions
diff --git a/src/libs/zbxconf/cfg.c b/src/libs/zbxconf/cfg.c index 5faddddf..e7b2ffc5 100644 --- a/src/libs/zbxconf/cfg.c +++ b/src/libs/zbxconf/cfg.c @@ -51,76 +51,84 @@ int CONFIG_TIMEOUT = AGENT_TIMEOUT; int parse_cfg_file(const char *cfg_file,struct cfg_line *cfg) { FILE *file; - int lineno; - char line[MAX_STRING_LEN]; - char *parameter; - char *value; + register int + i, lineno; - int i,var; + char + line[MAX_STRING_LEN], + *parameter, + *value; - if(NULL == (file = fopen(cfg_file,"r"))) - { - zbx_error("Cannot open config file [%s] [%s].",cfg_file,strerror(errno)); - return FAIL; - } - - - for(lineno = 1; fgets(line,MAX_STRING_LEN,file) != NULL; lineno++) - { - if(line[0]=='#') continue; - if(strlen(line) < 3) continue; + int var; - parameter = line; + assert(cfg); - value = strstr(line,"="); - if(NULL == value) + if(cfg_file) + { + if( NULL == (file = fopen(cfg_file,"r")) ) { - zbx_error("Error in line [%d] \"%s\"", lineno, line); - return FAIL; + zbx_error("Cannot open config file [%s] [%s].",cfg_file,strerror(errno)); } - - *value = '\0'; - value++; - - for(i = 0; value[i] != '\0'; i++) + else { - if(value[i] == '\n') - { - value[i] = '\0'; - break; - } - } - - for(i = 0; cfg[i].parameter != 0; i++) - { - if(strcmp(cfg[i].parameter, parameter)) - continue; - - /* zbx_error("Accepted configuration parameter: '%s' = '%s'",parameter, value); */ - - if(cfg[i].function != 0) - { - if(cfg[i].function(value) != SUCCEED) - goto lbl_incorrect_config; - } - else if(TYPE_INT == cfg[i].type) - { - var = atoi(value); - - if(cfg[i].min) - if(var < cfg[i].min) - goto lbl_incorrect_config; - - if(cfg[i].max) - if(var > cfg[i].max) - goto lbl_incorrect_config; - - *((int*)cfg[i].variable) = var; - } - else + for(lineno = 1; fgets(line,MAX_STRING_LEN,file) != NULL; lineno++) { - *((char **)cfg[i].variable) = strdup(value); + if(line[0]=='#') continue; + if(strlen(line) < 3) continue; + + parameter = line; + + value = strstr(line,"="); + if(NULL == value) + { + zbx_error("Error in line [%d] \"%s\"", lineno, line); + return FAIL; + } + + *value = '\0'; + value++; + + for(i = 0; value[i] != '\0'; i++) + { + if(value[i] == '\n') + { + value[i] = '\0'; + break; + } + } + + for(i = 0; cfg[i].parameter != 0; i++) + { + if(strcmp(cfg[i].parameter, parameter)) + continue; + + /* zbx_error("Accepted configuration parameter: '%s' = '%s'",parameter, value); */ + + if(cfg[i].function != 0) + { + if(cfg[i].function(value) != SUCCEED) + goto lbl_incorrect_config; + } + else if(TYPE_INT == cfg[i].type) + { + var = atoi(value); + + if(cfg[i].min) + if(var < cfg[i].min) + goto lbl_incorrect_config; + + if(cfg[i].max) + if(var > cfg[i].max) + goto lbl_incorrect_config; + + *((int*)cfg[i].variable) = var; + } + else + { + *((char **)cfg[i].variable) = strdup(value); + } + } } } } @@ -128,7 +136,7 @@ int parse_cfg_file(const char *cfg_file,struct cfg_line *cfg) /* Check for mandatory parameters */ for(i = 0; cfg[i].parameter != 0; i++) { - if(!cfg[i].mandatory) + if(PARM_MAND != cfg[i].mandatory) continue; if(TYPE_INT == cfg[i].type) @@ -147,9 +155,9 @@ int parse_cfg_file(const char *cfg_file,struct cfg_line *cfg) lbl_missing_mandatory: zbx_error("Missing mandatory parameter [%s].", cfg[i].parameter); - return FAIL; + exit(1); lbl_incorrect_config: zbx_error("Wrong value of [%s] in line %d.", cfg[i].parameter, lineno); - return FAIL; + exit(1); } |