From 98bf13102ce8e4aa308b75e0e83f3c66c82be015 Mon Sep 17 00:00:00 2001 From: Moritz Lipp Date: Thu, 22 Jul 2010 23:27:17 +0200 Subject: [PATCH] Read global configuration file Thanks to Sebastinas --- config.def.h | 1 + zathura.c | 74 +++++++++++++++++++++++++++------------------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/config.def.h b/config.def.h index f5824e9..0f49704 100644 --- a/config.def.h +++ b/config.def.h @@ -17,6 +17,7 @@ static const char FORMAT_DESCRIPTION[] = "%s"; static const char ZATHURA_DIR[] = ".config/zathura"; static const char BOOKMARK_FILE[] = "bookmarks"; static const char ZATHURA_RC[] = "zathurarc"; +static const char GLOBAL_RC[] = "/etc/zathurarc"; /* bookmarks */ static const char BM_PAGE_ENTRY[] = "page"; diff --git a/zathura.c b/zathura.c index 8220ed1..73f52db 100644 --- a/zathura.c +++ b/zathura.c @@ -1365,45 +1365,49 @@ update_status() g_free(zoom_level); } +void +read_configuration_file(const char* rcfile) +{ + if(!rcfile) + return; + + if(!g_file_test(rcfile, G_FILE_TEST_IS_REGULAR)) + return; + + char* content = NULL; + if(g_file_get_contents(rcfile, &content, NULL, NULL)) + { + gchar **lines = g_strsplit(content, "\n", -1); + int n = g_strv_length(lines) - 1; + + int i; + for(i = 0; i <= n; i++) + { + if(!strlen(lines[i])) + continue; + + gchar **tokens = g_strsplit(lines[i], " ", -1); + int length = g_strv_length(tokens); + + if(!strcmp(tokens[0], "set")) + cmd_set(length - 1, tokens + 1); + else if(!strcmp(tokens[0], "map")) + cmd_map(length - 1, tokens + 1); + + g_strfreev(tokens); + } + + g_strfreev(lines); + g_free(content); + } +} + void read_configuration() { char* zathurarc = g_strdup_printf("%s/%s/%s", g_get_home_dir(), ZATHURA_DIR, ZATHURA_RC); - - if(!zathurarc) - return; - - if(g_file_test(zathurarc, G_FILE_TEST_IS_REGULAR)) - { - char* content = NULL; - - if(g_file_get_contents(zathurarc, &content, NULL, NULL)) - { - gchar **lines = g_strsplit(content, "\n", -1); - int n = g_strv_length(lines) - 1; - - int i; - for(i = 0; i <= n; i++) - { - if(!strlen(lines[i])) - continue; - - gchar **tokens = g_strsplit(lines[i], " ", -1); - int length = g_strv_length(tokens); - - if(!strcmp(tokens[0], "set")) - cmd_set(length - 1, tokens + 1); - else if(!strcmp(tokens[0], "map")) - cmd_map(length - 1, tokens + 1); - - g_strfreev(tokens); - } - - g_strfreev(lines); - g_free(content); - } - } - + read_configuration_file(GLOBAL_RC); + read_configuration_file(zathurarc); g_free(zathurarc); }