Hello community, here is the log from the commit of package thunar-volman for openSUSE:Factory checked in at 2017-12-09 20:33:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/thunar-volman (Old) and /work/SRC/openSUSE:Factory/.thunar-volman.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "thunar-volman" Sat Dec 9 20:33:21 2017 rev:29 rq:555549 version:0.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/thunar-volman/thunar-volman.changes 2015-03-09 10:05:52.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.thunar-volman.new/thunar-volman.changes 2017-12-09 20:33:53.039270406 +0100 @@ -1,0 +2,5 @@ +Sun Nov 19 11:13:23 UTC 2017 - seife+...@b1-systems.com + +- add thunar-volman-use-udisks-hints.diff (bnc#949808) + +------------------------------------------------------------------- New: ---- thunar-volman-use-udisks-hints.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ thunar-volman.spec ++++++ --- /var/tmp/diff_new_pack.vcZK5X/_old 2017-12-09 20:33:53.627242401 +0100 +++ /var/tmp/diff_new_pack.vcZK5X/_new 2017-12-09 20:33:53.627242401 +0100 @@ -25,6 +25,8 @@ Url: http://goodies.xfce.org/projects/thunar-plugins/thunar-volman Source0: http://archive.xfce.org/src/apps/thunar-volman/0.8/%{name}-%{version}.tar.bz2 Source1: thunar-volman.xml +# PATCH-FIX-OPENSUSE thunar-volman-use-udisks-hints.diff bnc#949808 -- seife+...@b1-systems.com +Patch0: thunar-volman-use-udisks-hints.diff BuildRequires: intltool BuildRequires: update-desktop-files BuildRequires: pkgconfig(exo-1) @@ -66,6 +68,7 @@ %prep %setup -q +%patch0 -p1 %build %configure ++++++ thunar-volman-use-udisks-hints.diff ++++++ diff --git a/thunar-volman/tvm-block-device.c b/thunar-volman/tvm-block-device.c index edb6cad..5397bbc 100644 --- a/thunar-volman/tvm-block-device.c +++ b/thunar-volman/tvm-block-device.c @@ -754,7 +754,44 @@ tvm_block_device_mount (TvmContext *context) return FALSE; } - +static gboolean +tvm_block_device_removable (TvmContext *context) +{ + /* traverse sysfs to find out if the device has the removable flag set */ + /* this would be much easier with udisks, but udisks2 dropped the udev */ + /* property settings... */ + const gchar *partn; + gchar *devpath; + gchar *removable; + gboolean ret = TRUE; /* default to handling the device */ + partn = g_udev_device_get_property (context->device, "PARTN"); + devpath = g_strdup(g_udev_device_get_property (context->device, "DEVPATH")); + if (! devpath) + goto out; + if (partn) + { /* partition, one directory up */ + gchar *p = strrchr(devpath, '/'); + if (! p) + goto out; + *p = 0; + } + removable = g_strdup_printf("/sys%s/removable", devpath); + if (removable) + { + gchar *contents; + if (g_file_get_contents(removable, &contents, NULL, NULL)) + { + ret = (*contents == '1'); + g_free (contents); + } + else + g_message("%s: g_file_get_contents of %s failed", __func__, removable); + g_free(removable); + } +out: + g_free(devpath); + return ret; +} void tvm_block_device_added (TvmContext *context) @@ -763,11 +800,13 @@ tvm_block_device_added (TvmContext *context) const gchar *id_type; const gchar *media_state; const gchar *id_fs_usage; + const gchar *udisks_nopolicy; gboolean is_cdrom; gboolean is_partition; gboolean is_volume; gboolean automount; gboolean autoplay; + gboolean u_nopolicy; guint64 audio_tracks; guint64 data_tracks; GError *error = NULL; @@ -779,12 +818,28 @@ tvm_block_device_added (TvmContext *context) devtype = g_udev_device_get_property (context->device, "DEVTYPE"); id_type = g_udev_device_get_property (context->device, "ID_TYPE"); id_fs_usage = g_udev_device_get_property (context->device, "ID_FS_USAGE"); + udisks_nopolicy = g_udev_device_get_property (context->device, "UDISKS_PRESENTATION_NOPOLICY"); /* distinguish device types */ is_cdrom = (g_strcmp0 (id_type, "cd") == 0); is_partition = (g_strcmp0 (devtype, "partition") == 0); is_volume = (g_strcmp0 (devtype, "disk") == 0) && (g_strcmp0 (id_fs_usage, "filesystem") == 0); + u_nopolicy = (g_strcmp0 (udisks_nopolicy, "1") == 0); + + /* if udisks properties are avaible, use them; if not, check the removable flag in sysfs */ + if (udisks_nopolicy == NULL && !tvm_block_device_removable(context)) + { + g_message("%s: non-removable device ignored", __func__); + tvm_device_handler_finished (context); + return; + } + if (u_nopolicy) + { + g_message("%s: ignoring device with UDISKS_PRESENTATION_NOPOLICY=1", __func__); + tvm_device_handler_finished (context); + return; + } if (is_cdrom) {