summaryrefslogtreecommitdiff
path: root/metadata
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2017-10-24 16:12:39 +0200
committerOndrej Holy <oholy@redhat.com>2017-11-01 10:55:29 +0100
commitc2d856447e9067089388d70a85ab47821b375729 (patch)
tree53774f66f7d62a01ad83eac30b2196be32ca4e0c /metadata
parent1e9d338fe10f501cd9a6c9cdb2192755ba2b9bd9 (diff)
downloadgvfs-c2d856447e9067089388d70a85ab47821b375729.tar.gz
metadata: Remove udev dependency in favor of gudev
GVfs uses udev and also gudev. Let's use just gudev and remove corresponding --enable-udev option. https://bugzilla.gnome.org/show_bug.cgi?id=786149
Diffstat (limited to 'metadata')
-rw-r--r--metadata/Makefile.am4
-rw-r--r--metadata/meson.build2
-rw-r--r--metadata/meta-daemon.c44
3 files changed, 22 insertions, 28 deletions
diff --git a/metadata/Makefile.am b/metadata/Makefile.am
index 9acc2135..a6da9705 100644
--- a/metadata/Makefile.am
+++ b/metadata/Makefile.am
@@ -60,9 +60,9 @@ meta_get_tree_SOURCES = meta-get-tree.c
convert_nautilus_metadata_LDADD = libmetadata.la $(LIBXML_LIBS)
convert_nautilus_metadata_SOURCES = metadata-nautilus.c
-gvfsd_metadata_LDADD = libmetadata.la ../common/libgvfscommon.la $(UDEV_LIBS)
+gvfsd_metadata_LDADD = libmetadata.la ../common/libgvfscommon.la $(GUDEV_LIBS)
gvfsd_metadata_SOURCES = meta-daemon.c
-gvfsd_metadata_CFLAFGS = $(UDEV_CFLAGS)
+gvfsd_metadata_CFLAGS = $(GUDEV_CFLAGS)
# D-BUS service file
%.service: %.service.in ../config.log
diff --git a/metadata/meson.build b/metadata/meson.build
index cdcb715a..a4f939a5 100644
--- a/metadata/meson.build
+++ b/metadata/meson.build
@@ -62,7 +62,7 @@ executable(
dependencies: [
libgvfscommon_dep,
libmetadata_dep,
- libudev_dep
+ gudev_dep
],
c_args: cflags,
install: true,
diff --git a/metadata/meta-daemon.c b/metadata/meta-daemon.c
index 17402df4..444a4394 100644
--- a/metadata/meta-daemon.c
+++ b/metadata/meta-daemon.c
@@ -31,9 +31,8 @@
#include "gvfsdaemonprotocol.h"
#include "metadata-dbus.h"
-#ifdef HAVE_LIBUDEV
-#define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
-#include <libudev.h>
+#ifdef HAVE_GUDEV
+#include <gudev/gudev.h>
#endif
#if MAJOR_IN_MKDEV
@@ -53,6 +52,9 @@ typedef struct {
static GHashTable *tree_infos = NULL;
static GVfsMetadata *skeleton = NULL;
+#ifdef HAVE_GUDEV
+static GUdevClient *gudev_client = NULL;
+#endif
static void
tree_info_free (TreeInfo *info)
@@ -309,32 +311,21 @@ handle_get_tree_from_device (GVfsMetadata *object,
{
char *res = NULL;
-#ifdef HAVE_LIBUDEV
- dev_t devnum = makedev (arg_major, arg_minor);
- struct udev_device *dev;
- const char *uuid, *label;
- static struct udev *udev;
-
- if (udev == NULL)
- udev = udev_new ();
+#ifdef HAVE_GUDEV
+ GUdevDeviceNumber devnum = makedev (arg_major, arg_minor);
+ GUdevDevice *device;
- dev = udev_device_new_from_devnum (udev, 'b', devnum);
- uuid = udev_device_get_property_value (dev, "ID_FS_UUID_ENC");
+ if (g_once_init_enter (&gudev_client))
+ g_once_init_leave (&gudev_client, g_udev_client_new (NULL));
- res = NULL;
- if (uuid)
- {
- res = g_strconcat ("uuid-", uuid, NULL);
- }
- else
- {
- label = udev_device_get_property_value (dev, "ID_FS_LABEL_ENC");
+ device = g_udev_client_query_by_device_number (gudev_client, G_UDEV_DEVICE_TYPE_BLOCK, devnum);
- if (label)
- res = g_strconcat ("label-", label, NULL);
- }
+ if (g_udev_device_has_property (device, "ID_FS_UUID_ENC"))
+ res = g_strconcat ("uuid-", g_udev_device_get_property (device, "ID_FS_UUID_ENC"), NULL);
+ else if (g_udev_device_has_property (device, "ID_FS_LABEL_ENC"))
+ res = g_strconcat ("label-", g_udev_device_get_property (device, "ID_FS_LABEL_ENC"), NULL);
- udev_device_unref (dev);
+ g_clear_object (&device);
#endif
gvfs_metadata_complete_get_tree_from_device (object, invocation, res ? res : "");
@@ -485,6 +476,9 @@ main (int argc, char *argv[])
g_object_unref (conn);
if (loop != NULL)
g_main_loop_unref (loop);
+#ifdef HAVE_GUDEV
+ g_clear_object (&gudev_client);
+#endif
return 0;
}