diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2014-08-18 21:55:24 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2014-08-18 21:55:24 (GMT) |
commit | a0a7b6c1e05c78ae433f353d15e3366107b67d03 (patch) | |
tree | bca0b187778cf016c6131bfc982b08c67a38442b /src/core/params.c | |
parent | 161c0f8ab227af5033b1b6456607b9b9c3bc60df (diff) |
Inserted storages and collections into loaded binaries (first steps).
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@389 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/core/params.c')
-rw-r--r-- | src/core/params.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/core/params.c b/src/core/params.c index c8263f0..7bc1162 100644 --- a/src/core/params.c +++ b/src/core/params.c @@ -24,6 +24,75 @@ #include "params.h" +#include <limits.h> +#include <malloc.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + + + +/****************************************************************************** +* * +* Paramètres : - * +* * +* Description : Détermine une fois pour toute la désignation de l'usager. * +* * +* Retour : Nom déterminé à libérer de la mémoire. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static char *get_author_name(void) +{ + char *result; /* Désignation à retourner */ + char *chrysalide_user; /* Eventuel nom spécifique */ + char *logname; /* Nom depuis l'environnement */ + char hostname[HOST_NAME_MAX]; /* Nom de la machine courante */ + int ret; /* Bilan d'un appel */ + size_t length; /* Taille de la désignation */ + + chrysalide_user = getenv("CHRYSALIDE_USER"); + + if (chrysalide_user != NULL) + result = strdup(chrysalide_user); + + else + { + logname = getenv("LOGNAME"); + + ret = gethostname(hostname, HOST_NAME_MAX); + if (ret != 0) + hostname[0] = '\0'; + + if (logname != NULL && hostname[0] != '\0') + { + length = strlen(logname) + 1 + strlen(hostname) + 1; + result = (char *)calloc(length, sizeof(char)); + snprintf(result, length, "%s@%s", logname, hostname); + } + else if (logname != NULL && hostname[0] == '\0') + { + length = strlen(logname) + 1; + result = (char *)calloc(length, sizeof(char)); + snprintf(result, length, "%s", logname); + } + else if (logname == NULL && hostname[0] != '\0') + { + length = 1 + strlen(hostname) + 1; + result = (char *)calloc(length, sizeof(char)); + snprintf(result, length, "@%s", hostname); + } + else + result = strdup("anonymous"); + + } + + return result; + +} + /****************************************************************************** * * @@ -41,10 +110,31 @@ bool load_main_config_parameters(void) { GGenConfig *config; /* Configuration à charger */ GCfgParam *param; /* Paramètre chargé */ + char *string; /* Valeur sous forme de texte */ config = g_generic_config_new("main"); set_main_configuration(config); + string = get_author_name(); + param = g_generic_config_create_param(config, MPK_AUTHOR_NAME, CPT_STRING, string); + free(string); + if (param == NULL) return false; + + param = g_generic_config_create_param(config, MPK_REMOTE_HOST, CPT_STRING, "localhost"); + if (param == NULL) return false; + + param = g_generic_config_create_param(config, MPK_REMOTE_PORT, CPT_INTEGER, 9999); + if (param == NULL) return false; + + param = g_generic_config_create_param(config, MPK_LOCAL_HOST, CPT_STRING, "localhost"); + if (param == NULL) return false; + + param = g_generic_config_create_param(config, MPK_LOCAL_PORT, CPT_INTEGER, 1337); + if (param == NULL) return false; + + param = g_generic_config_create_param(config, MPK_SERVER_BACKLOG, CPT_INTEGER, 20); + if (param == NULL) return false; + param = g_generic_config_create_param(config, MPK_LAST_PROJECT, CPT_STRING, NULL); if (param == NULL) return false; |