From 9b62d7c6a7501b3f35f3253975ef65f89124340b Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sat, 27 Jan 2018 11:06:29 +0100 Subject: [PATCH] Allow setting the environment for "OnlyShowIn" --- include/Desktop/mimehandler.h | 4 ++++ src/mimehandler.c | 29 +++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/include/Desktop/mimehandler.h b/include/Desktop/mimehandler.h index 65a2071..2481758 100644 --- a/include/Desktop/mimehandler.h +++ b/include/Desktop/mimehandler.h @@ -61,6 +61,7 @@ int mimehandler_can_open(MimeHandler * handler); String const ** mimehandler_get_categories(MimeHandler * handler); String const * mimehandler_get_comment(MimeHandler * handler, int translate); +String const * mimehandler_get_environment(MimeHandler * handler); String const * mimehandler_get_filename(MimeHandler * handler); String const * mimehandler_get_generic_name(MimeHandler * handler, int translate); @@ -74,6 +75,9 @@ String const * mimehandler_get_url(MimeHandler * handler); int mimehandler_is_deleted(MimeHandler * handler); +int mimehandler_set_environment(MimeHandler * handler, + String const * environment); + /* useful */ int mimehandler_open(MimeHandler * handler, String const * filename); diff --git a/src/mimehandler.c b/src/mimehandler.c index 29bd7e7..7b31ce4 100644 --- a/src/mimehandler.c +++ b/src/mimehandler.c @@ -66,6 +66,7 @@ struct _MimeHandler String * filename; String ** categories; String ** types; + String * environment; }; @@ -96,6 +97,7 @@ MimeHandler * mimehandler_new(void) handler->filename = NULL; handler->categories = NULL; handler->types = NULL; + handler->environment = NULL; if(handler->config == NULL) { mimehandler_delete(handler); @@ -143,6 +145,7 @@ void mimehandler_delete(MimeHandler * handler) _mimehandler_cache_invalidate(handler); config_delete(handler->config); string_delete(handler->filename); + string_delete(handler->environment); object_delete(handler); } @@ -155,8 +158,9 @@ int mimehandler_can_display(MimeHandler * handler) if(mimehandler_is_deleted(handler)) return 0; - /* XXX allow setting a value for the desktop environment */ - if(config_get(handler->config, SECTION, "OnlyShowIn") != NULL) + if((p = config_get(handler->config, SECTION, "OnlyShowIn")) != NULL + && (handler->environment == NULL + || string_compare(p, handler->environment))) return 0; if((p = config_get(handler->config, SECTION, "NoDisplay")) != NULL && string_compare(p, "true") == 0) @@ -321,6 +325,13 @@ String const * mimehandler_get_comment(MimeHandler * handler, int translate) } +/* mimehandler_get_environment */ +String const * mimehandler_get_environment(MimeHandler * handler) +{ + return handler->environment; +} + + /* mimehandler_get_filename */ String const * mimehandler_get_filename(MimeHandler * handler) { @@ -506,6 +517,20 @@ int mimehandler_is_deleted(MimeHandler * handler) } +/* mimehandler_set_environment */ +int mimehandler_set_environment(MimeHandler * handler, + String const * environment) +{ + String * p; + + if((p = string_new(environment)) == NULL) + return -1; + string_delete(handler->environment); + handler->environment = p; + return 0; +} + + /* useful */ /* mimehandler_load */ int mimehandler_load(MimeHandler * handler, String const * filename)