From 6fc608f0991f802ed7cc8c8a5d0504a0445c4beb Mon Sep 17 00:00:00 2001 From: o9000 Date: Sun, 3 Jan 2016 15:09:46 +0100 Subject: [PATCH] Work better without a config file --- src/config.c | 21 +++++++++++++++++---- src/tint.c | 9 +++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/config.c b/src/config.c index 7f14280..f4fdd91 100644 --- a/src/config.c +++ b/src/config.c @@ -1057,7 +1057,7 @@ gboolean config_read_file(const char *path) char *key, *value; if ((fp = fopen(path, "r")) == NULL) - return 0; + return FALSE; while (fgets(line, sizeof(line), fp) != NULL) { if (parse_line(line, &key, &value)) { @@ -1098,7 +1098,7 @@ gboolean config_read_file(const char *path) memcpy(&bg->border_color_pressed, &bg->border_color_hover, sizeof(Color)); } - return 1; + return TRUE; } gboolean config_read_default_path() @@ -1133,7 +1133,7 @@ gboolean config_read_default_path() // copy file in user directory (path1) gchar *dir = g_build_filename(g_get_user_config_dir(), "tint2", NULL); if (!g_file_test(dir, G_FILE_TEST_IS_DIR)) - g_mkdir(dir, 0777); + g_mkdir(dir, 0700); g_free(dir); path1 = g_build_filename(g_get_user_config_dir(), "tint2", "tint2rc", NULL); @@ -1145,7 +1145,20 @@ gboolean config_read_default_path() g_free(path1); return result; } - return 0; + + // generate empty config file + gchar *dir = g_build_filename(g_get_user_config_dir(), "tint2", NULL); + if (!g_file_test(dir, G_FILE_TEST_IS_DIR)) + g_mkdir(dir, 0700); + g_free(dir); + + path1 = g_build_filename(g_get_user_config_dir(), "tint2", "tint2rc", NULL); + copy_file("/dev/null", path1); + + gboolean result = config_read_file(path1); + config_path = strdup(path1); + g_free(path1); + return result; } gboolean config_read() diff --git a/src/tint.c b/src/tint.c index 4eb5481..7b5d047 100644 --- a/src/tint.c +++ b/src/tint.c @@ -369,9 +369,10 @@ void init_X11_pre_config() { server.display = XOpenDisplay(NULL); if (!server.display) { - fprintf(stderr, "tint2 exit : could not open display.\n"); - exit(0); + fprintf(stderr, "tint2: could not open display.\n"); + exit(1); } + XSetErrorHandler((XErrorHandler)server_catch_error); server_init_atoms(); server.screen = DefaultScreen(server.display); server.root_win = RootWindow(server.display, server.screen); @@ -396,7 +397,6 @@ void init_X11_pre_config() void init_X11_post_config() { server_init_visual(); - XSetErrorHandler((XErrorHandler)server_catch_error); #ifdef HAVE_SN // Initialize startup-notification @@ -1392,7 +1392,8 @@ start: init_X11_pre_config(); if (!config_read()) { - fprintf(stderr, "usage: tint2 [-c] \n"); + fprintf(stderr, "Could not read config file.\n" + "Usage: tint2 [[-c] ]\n"); cleanup(); exit(1); }