summaryrefslogtreecommitdiff
path: root/src/configuration.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/configuration.c')
-rw-r--r--src/configuration.c80
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 : - *