diff options
Diffstat (limited to 'src/configuration.c')
-rw-r--r-- | src/configuration.c | 80 |
1 files changed, 78 insertions, 2 deletions
diff --git a/src/configuration.c b/src/configuration.c index 8448c03..1369159 100644 --- a/src/configuration.c +++ b/src/configuration.c @@ -110,6 +110,15 @@ configuration *load_configuration(const char *name, config_param *params, unsign } break; + case CVT_INTEGER: + strval = get_node_text_value(result->context, params[i].path); + if (strval != NULL) + { + set_integer_config_value(result, i, atoi(strval)); + free(strval); + } + break; + case CVT_STRING: strval = get_node_text_value(result->context, params[i].path); set_string_config_value(result, i, strval); @@ -181,6 +190,7 @@ void unload_configuration(configuration *config) int ret; /* Bilan de l'assurance */ unsigned int i; /* Boucle de parcours */ config_param *params; /* Confort d'utilisation */ + char tmp[12 /* -INT_MIN */]; /* Reconstruction en chaîne */ close_xml_file(config->xdoc, config->context); @@ -205,6 +215,16 @@ void unload_configuration(configuration *config) break; + case CVT_INTEGER: + if (params->cur.integer == params->def.integer) + continue; + + snprintf(tmp, 12, "%d", params->cur.integer); + add_content_to_node(config->xdoc, config->context, + params->path, tmp); + + break; + case CVT_STRING: if (params->cur.string == NULL && params->def.string == NULL) @@ -281,8 +301,8 @@ bool get_boolean_config_value(configuration *config, unsigned int index) { bool result; /* Valeur à retourner */ - if (index >= config->count) return NULL; - if (config->params[index].type != CVT_BOOLEAN) return NULL; + if (index >= config->count) return false; + if (config->params[index].type != CVT_BOOLEAN) return false; if (config->params[index].defined) result = config->params[index].cur.boolean; else result = config->params[index].def.boolean; @@ -298,6 +318,62 @@ bool get_boolean_config_value(configuration *config, unsigned int index) * index = indice de l'élément à traiter. * * value = valeur à considérer comme valeur courante. * * * +* Description : Définit une valeur entière dans la configuration. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool set_integer_config_value(configuration *config, unsigned int index, int value) +{ + if (index >= config->count) return false; + if (config->params[index].type != CVT_INTEGER) return false; + + config->params[index].defined = true; + + config->params[index].cur.integer = value; + + return true; + +} + + +/****************************************************************************** +* * +* Paramètres : config = configuration à venir consulter. * +* index = indice de l'élément à traiter. * +* * +* Description : Fournit une valeur entière issue de la configuration. * +* * +* Retour : Valeur courante ou par défaut de la configuration. * +* * +* Remarques : - * +* * +******************************************************************************/ + +int get_integer_config_value(configuration *config, unsigned int index) +{ + int result; /* Valeur à retourner */ + + if (index >= config->count) return 0; + if (config->params[index].type != CVT_INTEGER) return 0; + + if (config->params[index].defined) result = config->params[index].cur.integer; + else result = config->params[index].def.integer; + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : config = configuration à venir consulter. * +* index = indice de l'élément à traiter. * +* value = valeur à considérer comme valeur courante. * +* * * Description : Définit une chaîne de caractères dans la configuration. * * * * Retour : - * |