#580 simplify load configuration file

Use fgets() and strtok() to parse the configuration to simplify the
existing handler.
master
OpenGnSys Support Team 2018-10-30 20:26:33 +01:00
parent 4665749212
commit 20fa7b937e
1 changed files with 30 additions and 49 deletions

View File

@ -21,15 +21,14 @@
//________________________________________________________________________________________________________
BOOLEAN tomaConfiguracion(char* filecfg) {
char modulo[] = "tomaConfiguracion()";
char buf[1024], *line;
char *key, *value;
FILE *fcfg;
if (filecfg == NULL || strlen(filecfg) == 0) {
errorLog(modulo, 1, FALSE); // Fichero de configuración del servicio vacío
return (FALSE);
}
FILE *fcfg;
long lSize;
char * buffer, *lineas[MAXPRM], *dualparametro[2];
int i, numlin, resul;
fcfg = fopen(filecfg, "rt");
if (fcfg == NULL) {
@ -37,18 +36,6 @@ BOOLEAN tomaConfiguracion(char* filecfg) {
return (FALSE);
}
fseek(fcfg, 0, SEEK_END);
lSize = ftell(fcfg); // Obtiene tamaño del fichero.
rewind(fcfg);
buffer = (char*) reservaMemoria(lSize + 1); // Toma memoria para el buffer de lectura.
if (buffer == NULL) { // No hay memoria suficiente para el buffer
errorLog(modulo, 3, FALSE);
return (FALSE);
}
fread(buffer, 1, lSize, fcfg); // Lee contenido del fichero
buffer[lSize] = (char) NULL;
fclose(fcfg);
servidoradm[0] = (char) NULL; //inicializar variables globales
usuario[0] = (char) NULL;
pasguor[0] = (char) NULL;
@ -56,66 +43,60 @@ BOOLEAN tomaConfiguracion(char* filecfg) {
catalog[0] = (char) NULL;
aulaup[0] = (char) NULL;
numlin = splitCadena(lineas, buffer, '\n');
for (i = 0; i < numlin; i++) {
splitCadena(dualparametro, lineas[i], '=');
resul = strcmp(StrToUpper(dualparametro[0]), "SERVIDORADM");
if (resul == 0)
strcpy(servidoradm, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "PUERTO");
if (resul == 0)
strcpy(puerto, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "USUARIO");
if (resul == 0)
strcpy(usuario, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "PASSWORD");
if (resul == 0)
strcpy(pasguor, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "DATASOURCE");
if (resul == 0)
strcpy(datasource, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "CATALOG");
if (resul == 0)
strcpy(catalog, dualparametro[1]);
resul = strcmp(StrToUpper(dualparametro[0]), "AULAUP");
if (resul == 0)
strcpy(catalog, dualparametro[1]);
line = fgets(buf, sizeof(buf), fcfg);
while (line != NULL) {
const char *delim = "=";
line[strlen(line) - 1] = '\0';
key = strtok(line, delim);
value = strtok(NULL, delim);
if (!strcmp(StrToUpper(key), "SERVIDORADM"))
snprintf(servidoradm, sizeof(servidoradm), "%s", value);
else if (!strcmp(StrToUpper(key), "PUERTO"))
snprintf(puerto, sizeof(puerto), "%s", value);
else if (!strcmp(StrToUpper(key), "USUARIO"))
snprintf(usuario, sizeof(usuario), "%s", value);
else if (!strcmp(StrToUpper(key), "PASSWORD"))
snprintf(pasguor, sizeof(pasguor), "%s", value);
else if (!strcmp(StrToUpper(key), "DATASOURCE"))
snprintf(datasource, sizeof(datasource), "%s", value);
else if (!strcmp(StrToUpper(key), "CATALOG"))
snprintf(catalog, sizeof(catalog), "%s", value);
else if (!strcmp(StrToUpper(key), "AULAUP"))
snprintf(catalog, sizeof(catalog), "%s", value);
line = fgets(buf, sizeof(buf), fcfg);
}
if (servidoradm[0] == (char) NULL) {
liberaMemoria(buffer);
errorLog(modulo, 4, FALSE); // Falta parámetro SERVIDORADM
return (FALSE);
}
if (puerto[0] == (char) NULL) {
liberaMemoria(buffer);
errorLog(modulo, 5, FALSE); // Falta parámetro PUERTO
return (FALSE);
}
if (usuario[0] == (char) NULL) {
liberaMemoria(buffer);
errorLog(modulo, 6, FALSE); // Falta parámetro USUARIO
return (FALSE);
}
if (pasguor[0] == (char) NULL) {
liberaMemoria(buffer);
errorLog(modulo, 7, FALSE); // Falta parámetro PASSWORD
return (FALSE);
}
if (datasource[0] == (char) NULL) {
liberaMemoria(buffer);
errorLog(modulo, 8, FALSE); // Falta parámetro DATASOURCE
return (FALSE);
}
if (catalog[0] == (char) NULL) {
liberaMemoria(buffer);
errorLog(modulo, 9, FALSE); // Falta parámetro CATALOG
return (FALSE);
}
if (aulaup[0] == (char) NULL) {
if (aulaup[0] == (char) NULL)
strcpy(aulaup, "0"); // Por defecto el conmutador de registro automático esta en off
}
liberaMemoria(buffer);
return (TRUE);
}