diff options
Diffstat (limited to 'metadata')
-rw-r--r-- | metadata/Makefile.am | 4 | ||||
-rw-r--r-- | metadata/meson.build | 2 | ||||
-rw-r--r-- | metadata/meta-daemon.c | 44 |
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; } |