From 8bc1c968cce743834dcf33130474ec6880ee3e55 Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Wed, 1 Oct 2008 18:08:45 +0000 Subject: [PATCH] - Update the patch to always pass FUSE POSIX URI's --- gio-2.16-only-pass-uri-to-gio-apps.patch | 117 ----------------------- gio-2.18-always-pass-fuse-file-uri.patch | 75 +++++++++++++++ glib2.spec | 10 +- 3 files changed, 82 insertions(+), 120 deletions(-) delete mode 100644 gio-2.16-only-pass-uri-to-gio-apps.patch create mode 100644 gio-2.18-always-pass-fuse-file-uri.patch diff --git a/gio-2.16-only-pass-uri-to-gio-apps.patch b/gio-2.16-only-pass-uri-to-gio-apps.patch deleted file mode 100644 index 8f3715b..0000000 --- a/gio-2.16-only-pass-uri-to-gio-apps.patch +++ /dev/null @@ -1,117 +0,0 @@ -diff -up glib-2.17.3/gio/gdesktopappinfo.c.only-pass-uri-to-gio-apps glib-2.17.3/gio/gdesktopappinfo.c ---- glib-2.17.3/gio/gdesktopappinfo.c.only-pass-uri-to-gio-apps 2008-07-02 17:13:13.000000000 -0400 -+++ glib-2.17.3/gio/gdesktopappinfo.c 2008-07-03 13:21:42.000000000 -0400 -@@ -1,3 +1,5 @@ -+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -+ - /* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. -@@ -89,6 +91,7 @@ struct _GDesktopAppInfo - char *exec; - char *binary; - char *path; -+ char *vfs_system; - - guint nodisplay : 1; - guint hidden : 1; -@@ -151,6 +154,7 @@ g_desktop_app_info_finalize (GObject *ob - g_free (info->try_exec); - g_free (info->exec); - g_free (info->binary); -+ g_free (info->vfs_system); - g_free (info->path); - - G_OBJECT_CLASS (g_desktop_app_info_parent_class)->finalize (object); -@@ -254,6 +258,7 @@ g_desktop_app_info_new_from_keyfile (GKe - info->terminal = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_TERMINAL, NULL) != FALSE; - info->startup_notify = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY, NULL) != FALSE; - info->hidden = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_HIDDEN, NULL) != FALSE; -+ info->vfs_system = g_key_file_get_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "X-Gnome-Vfs-System", NULL); - - info->icon = NULL; - if (info->icon_name) -@@ -392,6 +397,7 @@ g_desktop_app_info_dup (GAppInfo *appinf - new_info->exec = g_strdup (info->exec); - new_info->binary = g_strdup (info->binary); - new_info->path = g_strdup (info->path); -+ new_info->vfs_system = g_strdup (info->vfs_system); - new_info->hidden = info->hidden; - new_info->terminal = info->terminal; - new_info->startup_notify = info->startup_notify; -@@ -517,9 +523,35 @@ expand_macro (char macro, - { - GList *uris = *uri_list; - char *expanded; -- -+ gboolean force_file_uri; -+ char force_file_uri_macro; -+ - g_return_if_fail (exec != NULL); -- -+ -+ /* On %u and %U, only pass gio URI's if the desktop file has the -+ * X-Gnome-Vfs-System key set to 'gio' or if FUSE is not available. -+ * Otherwise we pass in a POSIX file path pointing to the URI via -+ * the FUSE mount in ~/.gvfs. -+ */ -+ force_file_uri = FALSE; -+ if (macro == 'u' || macro == 'U') -+ { -+ if (info->vfs_system == NULL || strcmp (info->vfs_system, "gio") != 0) -+ { -+ switch (macro) -+ { -+ case 'u': -+ force_file_uri_macro = 'f'; -+ force_file_uri = TRUE; -+ break; -+ case 'U': -+ force_file_uri_macro = 'F'; -+ force_file_uri = TRUE; -+ break; -+ } -+ } -+ } -+ - switch (macro) - { - case 'u': -@@ -528,7 +560,17 @@ expand_macro (char macro, - case 'n': - if (uris) - { -- expanded = expand_macro_single (macro, uris->data); -+ if (!force_file_uri || g_str_has_prefix (uris->data, "http")) -+ { -+ expanded = expand_macro_single (macro, uris->data); -+ } -+ else -+ { -+ expanded = expand_macro_single (force_file_uri_macro, uris->data); -+ if (expanded == NULL) -+ expanded = expand_macro_single (macro, uris->data); -+ } -+ - if (expanded) - { - g_string_append (exec, expanded); -@@ -545,7 +587,17 @@ expand_macro (char macro, - case 'N': - while (uris) - { -- expanded = expand_macro_single (macro, uris->data); -+ if (!force_file_uri || g_str_has_prefix (uris->data, "http")) -+ { -+ expanded = expand_macro_single (macro, uris->data); -+ } -+ else -+ { -+ expanded = expand_macro_single (force_file_uri_macro, uris->data); -+ if (expanded == NULL) -+ expanded = expand_macro_single (macro, uris->data); -+ } -+ - if (expanded) - { - g_string_append (exec, expanded); diff --git a/gio-2.18-always-pass-fuse-file-uri.patch b/gio-2.18-always-pass-fuse-file-uri.patch new file mode 100644 index 0000000..2c3c350 --- /dev/null +++ b/gio-2.18-always-pass-fuse-file-uri.patch @@ -0,0 +1,75 @@ +--- trunk/gio/gdesktopappinfo.c 2008/09/26 19:57:36 7554 ++++ trunk/gio/gdesktopappinfo.c 2008/10/01 17:46:57 7566 +@@ -530,9 +530,32 @@ + { + GList *uris = *uri_list; + char *expanded; +- ++ gboolean force_file_uri; ++ char force_file_uri_macro; ++ + g_return_if_fail (exec != NULL); +- ++ ++ /* On %u and %U, pass POSIX file path pointing to the URI via ++ * the FUSE mount in ~/.gvfs. Note that if the FUSE daemon isn't ++ * running or the URI doesn't have a POSIX file path via FUSE ++ * we'll just pass the URI. ++ */ ++ switch (macro) ++ { ++ case 'u': ++ force_file_uri_macro = 'f'; ++ force_file_uri = TRUE; ++ break; ++ case 'U': ++ force_file_uri_macro = 'F'; ++ force_file_uri = TRUE; ++ break; ++ default: ++ force_file_uri_macro = macro; ++ force_file_uri = FALSE; ++ break; ++ } ++ + switch (macro) + { + case 'u': +@@ -541,7 +564,17 @@ + case 'n': + if (uris) + { +- expanded = expand_macro_single (macro, uris->data); ++ if (!force_file_uri) ++ { ++ expanded = expand_macro_single (macro, uris->data); ++ } ++ else ++ { ++ expanded = expand_macro_single (force_file_uri_macro, uris->data); ++ if (expanded == NULL) ++ expanded = expand_macro_single (macro, uris->data); ++ } ++ + if (expanded) + { + g_string_append (exec, expanded); +@@ -558,7 +591,17 @@ + case 'N': + while (uris) + { +- expanded = expand_macro_single (macro, uris->data); ++ if (!force_file_uri) ++ { ++ expanded = expand_macro_single (macro, uris->data); ++ } ++ else ++ { ++ expanded = expand_macro_single (force_file_uri_macro, uris->data); ++ if (expanded == NULL) ++ expanded = expand_macro_single (macro, uris->data); ++ } ++ + if (expanded) + { + g_string_append (exec, expanded); diff --git a/glib2.spec b/glib2.spec index 6cece97..d57aa67 100644 --- a/glib2.spec +++ b/glib2.spec @@ -3,7 +3,7 @@ Summary: A library of handy utility functions Name: glib2 Version: 2.18.1 -Release: 1%{?dist} +Release: 2%{?dist} License: LGPLv2+ Group: System Environment/Libraries URL: http://www.gtk.org @@ -20,7 +20,8 @@ BuildRequires: libselinux-devel BuildRequires: glibc-devel # https://bugzilla.redhat.com/show_bug.cgi?id=442835 -Patch2: gio-2.16-only-pass-uri-to-gio-apps.patch +# http://bugzilla.gnome.org/show_bug.cgi?id=528670 +Patch2: gio-2.18-always-pass-fuse-file-uri.patch # this patch requires autoreconf BuildRequires: autoconf automake libtool gettext-devel gtk-doc @@ -56,7 +57,7 @@ of version 2 of the GLib library. %prep %setup -q -n glib-%{version} -%patch2 -p1 -b .only-pass-uri-to-gio-apps +%patch2 -p1 -b .always-pass-fuse-file-uri autoreconf @@ -133,6 +134,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/lib*.a %changelog +* Wed Oct 1 2008 David Zeuthen - 2.18.1-2 +- Update the patch to always pass FUSE POSIX URI's + * Wed Sep 17 2008 Matthias Clasen - 2.18.1-1 - Update to 2.18.1