Commit 3f62a2857c7aba284f1485b6e332c05103960100
1 parent
438e6222
Exists in
master
and in
5 other branches
Fixing problem with default configuration file.
Showing
2 changed files
with
46 additions
and
25 deletions
Show diff stats
src/pw3270/common/config.c
... | ... | @@ -29,7 +29,13 @@ |
29 | 29 | * |
30 | 30 | */ |
31 | 31 | |
32 | + #define ENABLE_NLS | |
33 | + #define GETTEXT_PACKAGE PACKAGE_NAME | |
34 | + | |
35 | + #include <libintl.h> | |
36 | + #include <glib/gi18n.h> | |
32 | 37 | #include <gtk/gtk.h> |
38 | + | |
33 | 39 | #include "common.h" |
34 | 40 | #include <stdarg.h> |
35 | 41 | #include <glib/gstdio.h> |
... | ... | @@ -58,7 +64,6 @@ |
58 | 64 | #else |
59 | 65 | |
60 | 66 | static GKeyFile * program_config = NULL; |
61 | - static const gchar * mask = "%s" G_DIR_SEPARATOR_S "%s.conf"; | |
62 | 67 | |
63 | 68 | #endif // HAVE_WIN_REGISTRY |
64 | 69 | |
... | ... | @@ -192,51 +197,69 @@ |
192 | 197 | g_get_user_config_dir, |
193 | 198 | g_get_user_data_dir, |
194 | 199 | g_get_home_dir, |
195 | - | |
196 | 200 | }; |
197 | - gchar *filename; | |
198 | - int f; | |
199 | 201 | |
200 | - const gchar * const *sysconfig; | |
202 | + size_t f; | |
203 | + g_autofree gchar * name = g_strconcat(g_get_application_name(),".conf",NULL); | |
201 | 204 | |
202 | -#ifdef DEBUG | |
203 | - filename = g_strdup_printf(mask,".",g_get_application_name()); | |
204 | - trace("Checking for %s",filename); | |
205 | - if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) | |
206 | - return filename; | |
207 | - g_free(filename); | |
208 | -#endif | |
205 | + // | |
206 | + // First search the user data | |
207 | + // | |
209 | 208 | |
210 | 209 | for(f=0;f<G_N_ELEMENTS(dir);f++) |
211 | 210 | { |
212 | - filename = g_strdup_printf(mask,dir[f](),g_get_application_name()); | |
211 | + gchar *filename = g_build_filename(dir[f](),name,NULL); | |
212 | + | |
213 | 213 | trace("Checking for %s",filename); |
214 | + | |
214 | 215 | if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) |
215 | 216 | return filename; |
216 | 217 | g_free(filename); |
218 | + | |
217 | 219 | } |
218 | 220 | |
219 | - sysconfig = g_get_system_config_dirs(); | |
220 | - for(f=0;sysconfig[f];f++) | |
221 | +#ifdef DATADIR | |
222 | + // | |
223 | + // Search the application DATADIR | |
224 | + // | |
221 | 225 | { |
222 | - filename = g_strdup_printf(mask,sysconfig[f],g_get_application_name()); | |
226 | + gchar *filename = g_build_filename(G_STRINGIFY(DATADIR),name,NULL); | |
227 | + | |
223 | 228 | trace("Checking for %s",filename); |
229 | + | |
224 | 230 | if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) |
225 | 231 | return filename; |
226 | 232 | g_free(filename); |
233 | + | |
227 | 234 | } |
235 | +#endif // DATADIR | |
236 | + | |
237 | + // | |
238 | + // Search the system folders | |
239 | + // | |
228 | 240 | |
229 | - sysconfig = g_get_system_data_dirs(); | |
241 | + const gchar * const * sysconfig = g_get_system_config_dirs(); | |
230 | 242 | for(f=0;sysconfig[f];f++) |
231 | 243 | { |
232 | - filename = g_strdup_printf("%s" G_DIR_SEPARATOR_S PACKAGE_NAME G_DIR_SEPARATOR_S "%s.conf",sysconfig[f],g_get_application_name()); | |
244 | + gchar *filename = g_build_filename(sysconfig[f],name,NULL); | |
233 | 245 | trace("Checking for %s",filename); |
234 | 246 | if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) |
235 | 247 | return filename; |
236 | 248 | g_free(filename); |
237 | 249 | } |
238 | 250 | |
239 | - return g_strdup_printf(mask,g_get_user_config_dir(),g_get_application_name()); | |
251 | + const gchar * const * sysdata = g_get_system_data_dirs(); | |
252 | + for(f=0;sysdata[f];f++) | |
253 | + { | |
254 | + gchar *filename = g_build_filename(sysdata[f],name,NULL); | |
255 | + trace("Checking for %s",filename); | |
256 | + if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) | |
257 | + return filename; | |
258 | + g_free(filename); | |
259 | + } | |
260 | + | |
261 | + return g_build_filename(g_get_user_config_dir(),name); | |
262 | + | |
240 | 263 | } |
241 | 264 | #endif // #ifdef HAVE_WIN_REGISTRY |
242 | 265 | |
... | ... | @@ -389,6 +412,7 @@ void configuration_init(void) |
389 | 412 | |
390 | 413 | if(filename) |
391 | 414 | { |
415 | + g_message(_("Loading %s"),filename); | |
392 | 416 | g_key_file_load_from_file(program_config,filename,G_KEY_FILE_NONE,NULL); |
393 | 417 | g_free(filename); |
394 | 418 | } |
... | ... | @@ -530,19 +554,16 @@ void configuration_deinit(void) |
530 | 554 | |
531 | 555 | if(text) |
532 | 556 | { |
533 | - gchar *filename = g_strdup_printf(mask,g_get_user_config_dir(),g_get_application_name()); | |
557 | + g_autofree gchar * name = g_strconcat(g_get_application_name(),".conf",NULL); | |
558 | + g_autofree gchar * filename = g_build_filename(g_get_user_config_dir(),name,NULL); | |
534 | 559 | |
535 | 560 | trace("Saving configuration in \"%s\"",filename); |
536 | 561 | |
537 | 562 | g_mkdir_with_parents(g_get_user_config_dir(),S_IRUSR|S_IWUSR); |
538 | - | |
539 | 563 | g_file_set_contents(filename,text,-1,NULL); |
540 | 564 | |
541 | - g_free(filename); | |
542 | - g_free(text); | |
543 | 565 | } |
544 | 566 | |
545 | - | |
546 | 567 | g_key_file_free(program_config); |
547 | 568 | program_config = NULL; |
548 | 569 | ... | ... |
src/pw3270/main.c
... | ... | @@ -307,7 +307,7 @@ int main(int argc, char *argv[]) |
307 | 307 | { "appname", 'a', 0, G_OPTION_ARG_STRING, &appname, N_( "Application name" ), PACKAGE_NAME }, |
308 | 308 | { "datadir", 'd', 0, G_OPTION_ARG_CALLBACK, datadir, N_( "Path to application data files" ), NULL }, |
309 | 309 | #endif // WIN32 |
310 | - { "session", 's', 0, G_OPTION_ARG_STRING, &session_name, N_( "Session name" ), NULL }, | |
310 | + { "session", 's', 0, G_OPTION_ARG_STRING, &session_name, N_( "Session name" ), PACKAGE_NAME }, | |
311 | 311 | { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), host }, |
312 | 312 | { "colors", 'c', 0, G_OPTION_ARG_CALLBACK, optcolors, N_( "Set reported colors (8/16)" ), "16" }, |
313 | 313 | { "systype", 't', 0, G_OPTION_ARG_STRING, &systype, N_( "Host system type" ), "S390" }, | ... | ... |