From f6b083f73d5b408d6aeab46ef3b5c38eb3fe76ea Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Mon, 5 Jun 2006 23:49:35 +0000 Subject: [PATCH] Browsing possible even without a MIME globs database --- src/browser.c | 9 +++------ src/mime.c | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/browser.c b/src/browser.c index fd74396..cc57cd1 100644 --- a/src/browser.c +++ b/src/browser.c @@ -108,11 +108,7 @@ Browser * browser_new(char const * directory) /* FIXME */ /* mime */ - if((browser->mime = mime_new()) == NULL) - { - free(browser); - return NULL; - } + browser->mime = mime_new(); /* history */ browser->history = g_list_append(NULL, strdup(directory == NULL @@ -296,7 +292,8 @@ static void _fill_store(Browser * browser) gtk_list_store_append(browser->store, &iter); if(is_dir) icon = browser->pb_folder; - else if(!is_dir && (type = mime_type(browser->mime, name)) + else if(!is_dir && browser->mime != NULL + && (type = mime_type(browser->mime, name)) != NULL) { strncpy(&buf[11], type, sizeof(buf)-11); diff --git a/src/mime.c b/src/mime.c index 926f37b..bcdd9dc 100644 --- a/src/mime.c +++ b/src/mime.c @@ -15,7 +15,13 @@ Mime * mime_new(void) { Mime * mime; - FILE * fp; + char * globs[] = { /* ideally taken from Gtk+ but seems impossible */ + "/usr/pkg/share/mime/globs", + "/usr/local/share/mime/globs", + "/usr/share/mime/globs", + NULL }; + char ** g = globs; + FILE * fp = NULL; char buf[256]; size_t len; char * glob; @@ -23,9 +29,12 @@ Mime * mime_new(void) if((mime = malloc(sizeof(*mime))) == NULL) return NULL; - if((fp = fopen("/usr/share/mime/globs", "r")) == NULL) + for(g = globs; *g != NULL; g++) + if((fp = fopen(*g, "r")) != NULL) + break; + if(fp == NULL) { - perror("/usr/share/mime/globs"); /* FIXME */ + perror("Error while loading MIME globs"); free(mime); return NULL; }