From 05f22f8f6ae26c09031e0c59b0225610954a3f5b Mon Sep 17 00:00:00 2001 From: Sebastian Ramacher Date: Sat, 11 Dec 2010 17:17:31 +0100 Subject: [PATCH] Make :open ~/some/file.pdf work again. --- zathura.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/zathura.c b/zathura.c index 07ae6b6..7540a46 100644 --- a/zathura.c +++ b/zathura.c @@ -1224,24 +1224,30 @@ open_file(char* path, char* password) pm = 4096; #endif - /* get filename */ - char* file = (char*) g_malloc0(sizeof(char) * pm); - if(!file || !realpath(path, file)) - { - notify(ERROR, "File does not exist"); - if(file) - free(file); - g_static_mutex_unlock(&(Zathura.Lock.pdf_obj_lock)); - return FALSE; - } - + char* rpath = NULL; if(path[0] == '~') { gchar* home_path = get_home_dir(); - g_free(file); - file = g_build_filename(home_path, path + 1, NULL); + rpath = g_build_filename(home_path, path + 1, NULL); g_free(home_path); } + else + rpath = g_strdup(path); + + /* get filename */ + char* file = (char*) g_malloc0(sizeof(char) * pm); + if (!file) + out_of_memory(); + + if(!realpath(rpath, file)) + { + notify(ERROR, "File does not exist"); + g_free(file); + g_free(rpath); + g_static_mutex_unlock(&(Zathura.Lock.pdf_obj_lock)); + return FALSE; + } + g_free(rpath); /* check if file exists */ if(!g_file_test(file, G_FILE_TEST_IS_REGULAR))