/* Chrysalide - Outil d'analyse de fichiers binaires * params.c - éléments de la configuration principale * * Copyright (C) 2009-2012 Cyrille Bagard * * This file is part of Chrysalide. * * Chrysalide is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Chrysalide is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . */ #include "params.h" #include #include #include #include #include /****************************************************************************** * * * 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; } /****************************************************************************** * * * Paramètres : - * * * * Description : Procède au chargement de la configuration principale. * * * * Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ 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_FORMAT_NO_NAME, CPT_BOOLEAN, false); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_INTERNAL_THEME, CPT_STRING, "Adwaita"); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_TITLE_BAR, CPT_BOOLEAN, true); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_LAST_PROJECT, CPT_STRING, NULL); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_MAXIMIZED, CPT_BOOLEAN, true); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_ELLIPSIS_HEADER, CPT_INTEGER, 54); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_ELLIPSIS_TAB, CPT_INTEGER, 35); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_DISPLAY_ON_SEL, CPT_BOOLEAN, false); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_WELCOME_STARTUP, CPT_BOOLEAN, true); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_WELCOME_CHECK, CPT_BOOLEAN, false); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_SELECTION_LINE, CPT_BOOLEAN, true); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_TOOLTIP_SIZE, CPT_INTEGER, 8); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_KEYBINDINGS_EDIT, CPT_STRING, "F2"); if (param == NULL) return false; param = g_generic_config_create_param(config, MPK_AUTO_SAVE, CPT_BOOLEAN, true); if (param == NULL) return false; g_generic_config_create_group(config, "gui.panels.positions", CPT_INTEGER); return true; } /****************************************************************************** * * * Paramètres : - * * * * Description : Procède au déchargement de la configuration principale. * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ void unload_main_config_parameters(void) { GGenConfig *config; /* Configuration à décharger */ config = get_main_configuration(); g_object_unref(G_OBJECT(config)); } /****************************************************************************** * * * Paramètres : config = éventuelle configuration à définir comme principale.* * * * Description : Fournit un lien vers la configuration principale. * * * * Retour : Configuration prête à emploi ou NULL si aucune définie. * * * * Remarques : - * * * ******************************************************************************/ GGenConfig *_get_main_configuration(GGenConfig *config) { static GGenConfig *result = NULL; /* Structure à retourner */ if (config != NULL) result = config; return result; }