root/lib/mcconfig/get.c

/* [previous][next][first][last][top][bottom][index][help]  */

DEFINITIONS

This source file includes following definitions.
  1. mc_config_get_groups
  2. mc_config_get_keys
  3. mc_config_get_string
  4. mc_config_get_string_raw
  5. mc_config_get_bool
  6. mc_config_get_int
  7. mc_config_get_string_list
  8. mc_config_get_bool_list
  9. mc_config_get_int_list

   1 /*
   2    Configure module for the Midnight Commander
   3 
   4    Copyright (C) 1994-2024
   5    Free Software Foundation, Inc.
   6 
   7    This file is part of the Midnight Commander.
   8 
   9    The Midnight Commander is free software: you can redistribute it
  10    and/or modify it under the terms of the GNU General Public License as
  11    published by the Free Software Foundation, either version 3 of the License,
  12    or (at your option) any later version.
  13 
  14    The Midnight Commander is distributed in the hope that it will be useful,
  15    but WITHOUT ANY WARRANTY; without even the implied warranty of
  16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17    GNU General Public License for more details.
  18 
  19    You should have received a copy of the GNU General Public License
  20    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  21  */
  22 
  23 #include <config.h>
  24 
  25 #include "lib/global.h"
  26 #include "lib/strutil.h"
  27 
  28 #include "lib/mcconfig.h"
  29 
  30 /*** global variables ****************************************************************************/
  31 
  32 /*** file scope macro definitions ****************************************************************/
  33 
  34 /*** file scope type declarations ****************************************************************/
  35 
  36 /*** file scope variables ************************************************************************/
  37 
  38 /*** file scope functions ************************************************************************/
  39 
  40 /* --------------------------------------------------------------------------------------------- */
  41 /*** file scope functions ************************************************************************/
  42 /* --------------------------------------------------------------------------------------------- */
  43 
  44 /* --------------------------------------------------------------------------------------------- */
  45 /*** public functions ****************************************************************************/
  46 /* --------------------------------------------------------------------------------------------- */
  47 
  48 gchar **
  49 mc_config_get_groups (const mc_config_t *mc_config, gsize *len)
     /* [previous][next][first][last][top][bottom][index][help]  */
  50 {
  51     gchar **ret = NULL;
  52 
  53     if (mc_config != NULL)
  54         ret = g_key_file_get_groups (mc_config->handle, len);
  55 
  56     if (ret == NULL)
  57     {
  58         ret = g_try_malloc0 (sizeof (gchar **));
  59         if (len != NULL)
  60             *len = 0;
  61     }
  62 
  63     return ret;
  64 }
  65 
  66 /* --------------------------------------------------------------------------------------------- */
  67 
  68 gchar **
  69 mc_config_get_keys (const mc_config_t *mc_config, const gchar *group, gsize *len)
     /* [previous][next][first][last][top][bottom][index][help]  */
  70 {
  71     gchar **ret = NULL;
  72 
  73     if (mc_config != NULL && group != NULL)
  74         ret = g_key_file_get_keys (mc_config->handle, group, len, NULL);
  75 
  76     if (ret == NULL)
  77     {
  78         ret = g_try_malloc0 (sizeof (gchar **));
  79         if (len != NULL)
  80             *len = 0;
  81     }
  82 
  83     return ret;
  84 }
  85 
  86 /* --------------------------------------------------------------------------------------------- */
  87 
  88 gchar *
  89 mc_config_get_string (mc_config_t *mc_config, const gchar *group,
     /* [previous][next][first][last][top][bottom][index][help]  */
  90                       const gchar *param, const gchar *def)
  91 {
  92     GIConv conv;
  93     GString *buffer;
  94     gchar *ret;
  95     estr_t conv_res;
  96 
  97     ret = mc_config_get_string_raw (mc_config, group, param, def);
  98 
  99     if (mc_global.utf8_display)
 100         return ret;
 101 
 102     conv = str_crt_conv_from ("UTF-8");
 103     if (conv == INVALID_CONV)
 104         return ret;
 105 
 106     buffer = g_string_new ("");
 107     conv_res = str_convert (conv, ret, buffer);
 108     str_close_conv (conv);
 109 
 110     if (conv_res == ESTR_FAILURE)
 111     {
 112         g_string_free (buffer, TRUE);
 113         return ret;
 114     }
 115 
 116     g_free (ret);
 117 
 118     return g_string_free (buffer, FALSE);
 119 }
 120 
 121 /* --------------------------------------------------------------------------------------------- */
 122 
 123 gchar *
 124 mc_config_get_string_raw (mc_config_t *mc_config, const gchar *group,
     /* [previous][next][first][last][top][bottom][index][help]  */
 125                           const gchar *param, const gchar *def)
 126 {
 127     gchar *ret;
 128 
 129     if (mc_config == NULL || group == NULL || param == NULL)
 130         return g_strdup (def);
 131 
 132     if (!mc_config_has_param (mc_config, group, param))
 133     {
 134         if (def != NULL)
 135             mc_config_set_string (mc_config, group, param, def);
 136         return g_strdup (def);
 137     }
 138 
 139     ret = g_key_file_get_string (mc_config->handle, group, param, NULL);
 140 
 141     return ret != NULL ? ret : g_strdup (def);
 142 }
 143 
 144 /* --------------------------------------------------------------------------------------------- */
 145 
 146 gboolean
 147 mc_config_get_bool (mc_config_t *mc_config, const gchar *group, const gchar *param, gboolean def)
     /* [previous][next][first][last][top][bottom][index][help]  */
 148 {
 149     if (mc_config == NULL || group == NULL || param == NULL)
 150         return def;
 151 
 152     if (!mc_config_has_param (mc_config, group, param))
 153     {
 154         mc_config_set_bool (mc_config, group, param, def);
 155         return def;
 156     }
 157 
 158     return g_key_file_get_boolean (mc_config->handle, group, param, NULL);
 159 }
 160 
 161 /* --------------------------------------------------------------------------------------------- */
 162 
 163 int
 164 mc_config_get_int (mc_config_t *mc_config, const gchar *group, const gchar *param, int def)
     /* [previous][next][first][last][top][bottom][index][help]  */
 165 {
 166     if (mc_config == NULL || group == NULL || param == NULL)
 167         return def;
 168 
 169     if (!mc_config_has_param (mc_config, group, param))
 170     {
 171         mc_config_set_int (mc_config, group, param, def);
 172         return def;
 173     }
 174 
 175     return g_key_file_get_integer (mc_config->handle, group, param, NULL);
 176 }
 177 
 178 /* --------------------------------------------------------------------------------------------- */
 179 
 180 gchar **
 181 mc_config_get_string_list (mc_config_t *mc_config, const gchar *group,
     /* [previous][next][first][last][top][bottom][index][help]  */
 182                            const gchar *param, gsize *length)
 183 {
 184     if (mc_config == NULL || group == NULL || param == NULL)
 185         return NULL;
 186 
 187     return g_key_file_get_string_list (mc_config->handle, group, param, length, NULL);
 188 }
 189 
 190 /* --------------------------------------------------------------------------------------------- */
 191 
 192 gboolean *
 193 mc_config_get_bool_list (mc_config_t *mc_config, const gchar *group,
     /* [previous][next][first][last][top][bottom][index][help]  */
 194                          const gchar *param, gsize *length)
 195 {
 196     if (mc_config == NULL || group == NULL || param == NULL)
 197         return NULL;
 198 
 199     return g_key_file_get_boolean_list (mc_config->handle, group, param, length, NULL);
 200 }
 201 
 202 /* --------------------------------------------------------------------------------------------- */
 203 
 204 int *
 205 mc_config_get_int_list (mc_config_t *mc_config, const gchar *group,
     /* [previous][next][first][last][top][bottom][index][help]  */
 206                         const gchar *param, gsize *length)
 207 {
 208     if (mc_config == NULL || group == NULL || param == NULL)
 209         return NULL;
 210 
 211     return g_key_file_get_integer_list (mc_config->handle, group, param, length, NULL);
 212 }
 213 
 214 /* --------------------------------------------------------------------------------------------- */

/* [previous][next][first][last][top][bottom][index][help]  */