[Onhm-cvs-commits] CVS: Software/common/src configuration.c,NONE,1.1
Status: Planning
Brought to you by:
cheezel
|
From: Brian C. <bch...@us...> - 2005-12-06 12:14:43
|
Update of /cvsroot/onhm/Software/common/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1921/common/src Added Files: configuration.c Log Message: Added configuration retrieval code to the project --- NEW FILE: configuration.c --- #include "configuration.h" #include <stdio.h> //#include <stdlib.h> #include <string.h> int reloadConfiguration = 1; int loadConfiguration(char *configFile, struct ConfigItem *config) { FILE *file; char line[MAX_STRING_LEN]; char *parameter; char *value; int i; int var; file = fopen(configFile,"r"); if (NULL == file) { return CONFIG_CANNOT_OPEN_FILE; } while (fgets(line, MAX_STRING_LEN, file) != NULL) { if (line[0]=='#') continue; if (strlen(line)==1) continue; parameter = strtok(line, " =\r\n"); value = strtok(NULL, " =\r\n"); i = 0; while (config[i].paramName != 0) { if (strcmp(config[i].paramName, parameter) == 0) { if (config[i].type == PARAM_TYPE_INT) { var = atoi(value); if ((config[i].min != 0) || (config[i].max != 0)) { if ((var < config[i].min) || (var > config[i].max) ) { return CONFIG_VALUE_OUT_OF_RANGE; } } *((int*)config[i].variable)=var; } else if (config[i].type == PARAM_TYPE_STRING) { // c=(char **)config[i].variable;dd // *c=(char *)strdup(value); *((char **)config[i].variable) = (char *)strdup(value); } } i++; } } /* Check for mandatory parameters */ i=0; while (config[i].paramName != 0) { if (config[i].mandatory ==1) { if (config[i].type == PARAM_TYPE_INT) { if (*((int*)config[i].variable) == 0) { return CONFIG_VALUE_MISSING; } } if (config[i].type == PARAM_TYPE_STRING) { if (*((char **)config[i].variable) == NULL) { return CONFIG_VALUE_MISSING; } } } i++; } return CONFIG_LOAD_SUCCESSFUL; } |