From f83bdb3324f16ee3222bfd4a2180604a992e169d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 22 Dec 2007 18:06:02 +0000 Subject: [PATCH] fix desktop file handling --- desktopfiles.patch | 106 +++++++++++++++++++++++++++++++++++++++++++++ glib2.spec | 10 ++++- 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 desktopfiles.patch diff --git a/desktopfiles.patch b/desktopfiles.patch new file mode 100644 index 0000000..39de44b --- /dev/null +++ b/desktopfiles.patch @@ -0,0 +1,106 @@ +diff -up glib-2.15.0/gio/gdesktopappinfo.c.desktopfiles glib-2.15.0/gio/gdesktopappinfo.c +--- glib-2.15.0/gio/gdesktopappinfo.c.desktopfiles 2007-12-22 12:43:05.000000000 -0500 ++++ glib-2.15.0/gio/gdesktopappinfo.c 2007-12-22 12:43:17.000000000 -0500 +@@ -920,10 +920,10 @@ static gboolean + g_desktop_app_info_supports_uris (GAppInfo *appinfo) + { + GDesktopAppInfo *info = G_DESKTOP_APP_INFO (appinfo); +- +- return +- (strstr (info->exec, "%u") != NULL) || +- (strstr (info->exec, "%U") != NULL); ++ ++ return info->exec && ++ ((strstr (info->exec, "%u") != NULL) || ++ (strstr (info->exec, "%U") != NULL)); + } + + static gboolean +@@ -1581,7 +1581,8 @@ g_app_info_get_default_for_type (const c + * g_app_info_get_default_for_uri_scheme: + * @uri_scheme: a string containing a URI scheme. + * +- * Gets the default application for launching applications using this URI scheme. ++ * Gets the default application for launching applications ++ * using this URI scheme. + * + * TODO: This is currently unimplemented. + * +@@ -1625,11 +1626,12 @@ get_apps_from_dir (GHashTable *apps, + + /* Don't return apps that don't take arguments */ + if (appinfo && +- g_desktop_app_info_get_is_hidden (appinfo) && +- strstr (appinfo->exec,"%U") == NULL && +- strstr (appinfo->exec,"%u") == NULL && +- strstr (appinfo->exec,"%f") == NULL && +- strstr (appinfo->exec,"%F") == NULL) ++ (g_desktop_app_info_get_is_hidden (appinfo) || ++ (appinfo->exec && ++ strstr (appinfo->exec,"%U") == NULL && ++ strstr (appinfo->exec,"%u") == NULL && ++ strstr (appinfo->exec,"%f") == NULL && ++ strstr (appinfo->exec,"%F") == NULL))) + { + g_object_unref (appinfo); + appinfo = NULL; +@@ -1679,7 +1681,7 @@ g_app_info_get_all (void) + const char * const *dirs; + GHashTable *apps; + GHashTableIter iter; +- gpointer key; ++ gpointer value; + int i; + GList *infos; + +@@ -1695,8 +1697,8 @@ g_app_info_get_all (void) + + infos = NULL; + g_hash_table_iter_init (&iter, apps); +- while (g_hash_table_iter_next (&iter, &key, NULL)) +- infos = g_list_prepend (infos, key); ++ while (g_hash_table_iter_next (&iter, NULL, &value)) ++ infos = g_list_prepend (infos, value); + + g_hash_table_destroy (apps); + +@@ -2142,13 +2144,13 @@ append_desktop_entry (GList *list, + * get_all_desktop_entries_for_mime_type: + * @mime_type: a mime type. + * +- * Returns all the desktop filenames for @mime_type. The desktop files ++ * Returns all the desktop ids for @mime_type. The desktop files + * are listed in an order so that default applications are listed before + * non-default ones, and handlers for inherited mimetypes are listed + * after the base ones. + * +- * Return value: a #GList containing the desktop filenames containing the +- * @mime_type. ++ * Return value: a #GList containing the desktop ids which claim ++ * to handle @mime_type. + */ + static GList * + get_all_desktop_entries_for_mime_type (const char *base_mime_type) +diff -up glib-2.15.0/gio/gappinfo.c.desktopfiles glib-2.15.0/gio/gappinfo.c +--- glib-2.15.0/gio/gappinfo.c.desktopfiles 2007-12-22 12:42:57.000000000 -0500 ++++ glib-2.15.0/gio/gappinfo.c 2007-12-22 12:43:17.000000000 -0500 +@@ -139,6 +139,9 @@ g_app_info_equal (GAppInfo *appinfo1, + * platform dependent. For instance on Unix this is the + * desktop file id from the xdg menu specification. + * ++ * Note that the returned ID may be %NULL, depending on how ++ * the @appinfo has been constructed. ++ * + * Returns: a string containing the application's ID. + **/ + const char * +@@ -180,8 +183,7 @@ g_app_info_get_name (GAppInfo *appinfo) + * Gets a human-readable description of an installed application. + * + * Returns: a string containing a description of the +- * application @appinfo, or %NULL if none. The returned string should be not freed +- * when no longer needed. ++ * application @appinfo, or %NULL if none. + **/ + const char * + g_app_info_get_description (GAppInfo *appinfo) diff --git a/glib2.spec b/glib2.spec index 7c83ed8..5324352 100644 --- a/glib2.spec +++ b/glib2.spec @@ -3,13 +3,14 @@ Summary: A library of handy utility functions Name: glib2 Version: 2.15.0 -Release: 2%{?dist} +Release: 3%{?dist} License: LGPLv2+ Group: System Environment/Libraries URL: http://www.gtk.org Source: http://download.gnome.org/sources/glib/2.15/glib-%{version}.tar.bz2 Source2: glib2.sh Source3: glib2.csh +Patch0: desktopfiles.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: pkgconfig >= 1:0.14 BuildRequires: gamin-devel @@ -48,7 +49,11 @@ of version 2 of the GLib library. %prep %setup -q -n glib-%{version} +<<<<<<< glib2.spec +%patch0 -p1 -b .desktopfiles +======= %patch0 -p1 -b .gtestutils.patch +>>>>>>> 1.146 %build for i in config.guess config.sub ; do @@ -124,6 +129,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/lib*.a %changelog +* Sat Dec 22 2007 Matthias Clasen - 2.15.0-3 +- Fix some errors in desktop files handling + * Fri Dec 21 2007 Caolan McNamara - 2.15.0-2 - add jakubs patch in so xulrunner will build and so gcc too