This source file includes following definitions.
- mc_config_get_groups
- mc_config_get_keys
- mc_config_get_string
- mc_config_get_string_raw
- mc_config_get_bool
- mc_config_get_int
- mc_config_get_string_list
- mc_config_get_bool_list
- mc_config_get_int_list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 gchar **
49 mc_config_get_groups (const mc_config_t *mc_config, gsize *len)
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)
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,
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,
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)
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)
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,
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,
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,
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