summaryrefslogtreecommitdiffstats
path: root/src/libs/zbxconf/cfg.c
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-14 05:55:37 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-14 05:55:37 +0000
commit5ac1783eabb170049375d6cebd909c10a6523a73 (patch)
tree4b27eec49bce906d83911e64ff173171cc6bc979 /src/libs/zbxconf/cfg.c
parenteb60de08877fe0e6f42e54949bb332e02caf86c1 (diff)
downloadzabbix-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.c136
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);
}