Work better without a config file

This commit is contained in:
o9000 2016-01-03 15:09:46 +01:00
parent 07256c0ed3
commit 6fc608f099
2 changed files with 22 additions and 8 deletions

View file

@ -1057,7 +1057,7 @@ gboolean config_read_file(const char *path)
char *key, *value; char *key, *value;
if ((fp = fopen(path, "r")) == NULL) if ((fp = fopen(path, "r")) == NULL)
return 0; return FALSE;
while (fgets(line, sizeof(line), fp) != NULL) { while (fgets(line, sizeof(line), fp) != NULL) {
if (parse_line(line, &key, &value)) { 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)); memcpy(&bg->border_color_pressed, &bg->border_color_hover, sizeof(Color));
} }
return 1; return TRUE;
} }
gboolean config_read_default_path() gboolean config_read_default_path()
@ -1133,7 +1133,7 @@ gboolean config_read_default_path()
// copy file in user directory (path1) // copy file in user directory (path1)
gchar *dir = g_build_filename(g_get_user_config_dir(), "tint2", NULL); gchar *dir = g_build_filename(g_get_user_config_dir(), "tint2", NULL);
if (!g_file_test(dir, G_FILE_TEST_IS_DIR)) if (!g_file_test(dir, G_FILE_TEST_IS_DIR))
g_mkdir(dir, 0777); g_mkdir(dir, 0700);
g_free(dir); g_free(dir);
path1 = g_build_filename(g_get_user_config_dir(), "tint2", "tint2rc", NULL); path1 = g_build_filename(g_get_user_config_dir(), "tint2", "tint2rc", NULL);
@ -1145,7 +1145,20 @@ gboolean config_read_default_path()
g_free(path1); g_free(path1);
return result; 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() gboolean config_read()

View file

@ -369,9 +369,10 @@ void init_X11_pre_config()
{ {
server.display = XOpenDisplay(NULL); server.display = XOpenDisplay(NULL);
if (!server.display) { if (!server.display) {
fprintf(stderr, "tint2 exit : could not open display.\n"); fprintf(stderr, "tint2: could not open display.\n");
exit(0); exit(1);
} }
XSetErrorHandler((XErrorHandler)server_catch_error);
server_init_atoms(); server_init_atoms();
server.screen = DefaultScreen(server.display); server.screen = DefaultScreen(server.display);
server.root_win = RootWindow(server.display, server.screen); server.root_win = RootWindow(server.display, server.screen);
@ -396,7 +397,6 @@ void init_X11_pre_config()
void init_X11_post_config() void init_X11_post_config()
{ {
server_init_visual(); server_init_visual();
XSetErrorHandler((XErrorHandler)server_catch_error);
#ifdef HAVE_SN #ifdef HAVE_SN
// Initialize startup-notification // Initialize startup-notification
@ -1392,7 +1392,8 @@ start:
init_X11_pre_config(); init_X11_pre_config();
if (!config_read()) { if (!config_read()) {
fprintf(stderr, "usage: tint2 [-c] <config_file>\n"); fprintf(stderr, "Could not read config file.\n"
"Usage: tint2 [[-c] <config_file>]\n");
cleanup(); cleanup();
exit(1); exit(1);
} }