diff options
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; |