diff options
Diffstat (limited to 'monitor')
-rw-r--r-- | monitor/proxy/gproxyvolumemonitor.c | 110 |
1 files changed, 12 insertions, 98 deletions
diff --git a/monitor/proxy/gproxyvolumemonitor.c b/monitor/proxy/gproxyvolumemonitor.c index 7f05b398..ee8818c9 100644 --- a/monitor/proxy/gproxyvolumemonitor.c +++ b/monitor/proxy/gproxyvolumemonitor.c @@ -42,6 +42,7 @@ #include "gproxydrive.h" #include "gproxymountoperation.h" #include "gvfsvolumemonitordbus.h" +#include "gvfsmonitorimpl.h" G_LOCK_DEFINE_STATIC(proxy_vm); @@ -1428,9 +1429,7 @@ g_proxy_volume_monitor_unload_cleanup (void) void g_proxy_volume_monitor_register (GIOModule *module) { - GDir *dir; - GError *error; - const char *monitors_dir; + GList *impls, *l; /* first register the abstract base type... */ g_proxy_volume_monitor_register_type (G_TYPE_MODULE (module)); @@ -1446,102 +1445,17 @@ g_proxy_volume_monitor_register (GIOModule *module) * - and if so the priority */ - monitors_dir = g_getenv ("GVFS_MONITOR_DIR"); - if (monitors_dir == NULL || *monitors_dir == 0) - monitors_dir = REMOTE_VOLUME_MONITORS_DIR; - - error = NULL; - dir = g_dir_open (monitors_dir, 0, &error); - if (dir == NULL) - { - g_warning ("cannot open directory %s: %s", monitors_dir, error->message); - g_error_free (error); - } - else + impls = g_vfs_list_monitor_implementations (); + for (l = impls; l != NULL; l = l->next) { - const char *name; + GVfsMonitorImplementation *impl = l->data; - while ((name = g_dir_read_name (dir)) != NULL) - { - GKeyFile *key_file; - char *type_name; - char *path; - char *dbus_name; - gboolean is_native; - int native_priority; - - type_name = NULL; - key_file = NULL; - dbus_name = NULL; - path = NULL; - - if (!g_str_has_suffix (name, ".monitor")) - goto cont; - - path = g_build_filename (monitors_dir, name, NULL); - - key_file = g_key_file_new (); - error = NULL; - if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, &error)) - { - g_warning ("error loading key-value file %s: %s", path, error->message); - g_error_free (error); - goto cont; - } - - type_name = g_key_file_get_string (key_file, "RemoteVolumeMonitor", "Name", &error); - if (error != NULL) - { - g_warning ("error extracting Name key from %s: %s", path, error->message); - g_error_free (error); - goto cont; - } - - dbus_name = g_key_file_get_string (key_file, "RemoteVolumeMonitor", "DBusName", &error); - if (error != NULL) - { - g_warning ("error extracting DBusName key from %s: %s", path, error->message); - g_error_free (error); - goto cont; - } - - is_native = g_key_file_get_boolean (key_file, "RemoteVolumeMonitor", "IsNative", &error); - if (error != NULL) - { - g_warning ("error extracting IsNative key from %s: %s", path, error->message); - g_error_free (error); - goto cont; - } - - if (is_native) - { - native_priority = g_key_file_get_integer (key_file, "RemoteVolumeMonitor", "NativePriority", &error); - if (error != NULL) - { - g_warning ("error extracting NativePriority key from %s: %s", path, error->message); - g_error_free (error); - goto cont; - } - } - else - { - native_priority = 0; - } - - register_volume_monitor (G_TYPE_MODULE (module), - type_name, - dbus_name, - is_native, - native_priority); - - cont: - - g_free (type_name); - g_free (dbus_name); - g_free (path); - if (key_file != NULL) - g_key_file_free (key_file); - } - g_dir_close (dir); + register_volume_monitor (G_TYPE_MODULE (module), + impl->type_name, + impl->dbus_name, + impl->is_native, + impl->native_priority); } + + g_list_free_full (impls, (GDestroyNotify)g_vfs_monitor_implementation_free); } |