Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libcloudproviders for 
openSUSE:Factory checked in at 2023-09-20 13:21:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libcloudproviders (Old)
 and      /work/SRC/openSUSE:Factory/.libcloudproviders.new.16627 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libcloudproviders"

Wed Sep 20 13:21:16 2023 rev:9 rq:1110507 version:0.3.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/libcloudproviders/libcloudproviders.changes      
2023-08-12 15:05:50.994370947 +0200
+++ 
/work/SRC/openSUSE:Factory/.libcloudproviders.new.16627/libcloudproviders.changes
   2023-09-20 13:21:28.718070415 +0200
@@ -1,0 +2,9 @@
+Wed Sep  6 19:32:55 UTC 2023 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 0.3.4:
+  + Re-release due to release tarball issue
+- Changes from version 0.3.3:
+  + Use a new way to register providers using .desktop files
+- Drop libcloudproviders-rpmlintrc file/source: No longer needed.
+
+-------------------------------------------------------------------

Old:
----
  libcloudproviders-0.3.2.tar.xz
  libcloudproviders-rpmlintrc

New:
----
  libcloudproviders-0.3.4.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libcloudproviders.spec ++++++
--- /var/tmp/diff_new_pack.yQ68Rz/_old  2023-09-20 13:21:29.898112690 +0200
+++ /var/tmp/diff_new_pack.yQ68Rz/_new  2023-09-20 13:21:29.898112690 +0200
@@ -19,14 +19,14 @@
 %define _typelibdir %(pkg-config --variable=typelibdir 
gobject-introspection-1.0)
 %define _girdir %(pkg-config --variable=girdir gobject-introspection-1.0)
 Name:           libcloudproviders
-Version:        0.3.2
+Version:        0.3.4
 Release:        0
 Summary:        Library/Client to integrate cloud storage providers
 License:        LGPL-3.0-or-later
 Group:          System/GUI/GNOME
 URL:            https://gitlab.gnome.org/World/libcloudproviders
 Source0:        
https://download.gnome.org/sources/libcloudproviders/0.3/%{name}-%{version}.tar.xz
-Source99:       %{name}-rpmlintrc
+
 BuildRequires:  gtk-doc
 BuildRequires:  meson >= 0.42.0
 BuildRequires:  pkgconfig

++++++ libcloudproviders-0.3.2.tar.xz -> libcloudproviders-0.3.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcloudproviders-0.3.2/.gitlab-ci.yml 
new/libcloudproviders-0.3.4/.gitlab-ci.yml
--- old/libcloudproviders-0.3.2/.gitlab-ci.yml  2023-08-09 16:36:01.000000000 
+0200
+++ new/libcloudproviders-0.3.4/.gitlab-ci.yml  2023-09-06 16:14:23.000000000 
+0200
@@ -1,11 +1,25 @@
 image: fedora:37
 stages:
   - build
+  - deploy
 before_script:
   - dnf install -y gcc meson ninja-build gettext gtk-doc glib2-devel 
gobject-introspection-devel vala redhat-rpm-config
+
 build-libcloudproviders:
   stage: build
   script:
   - meson _build .
   - ninja -C _build
   - ninja -C _build install
+
+pages:
+  stage: deploy
+  script:
+  - meson _build . -Denable-gtk-doc=true
+  - ninja libcloudproviders-doc -C _build
+  - mv _build/docs/reference/html public
+  artifacts:
+    paths:
+      - public
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcloudproviders-0.3.2/CHANGELOG 
new/libcloudproviders-0.3.4/CHANGELOG
--- old/libcloudproviders-0.3.2/CHANGELOG       2023-08-09 16:36:01.000000000 
+0200
+++ new/libcloudproviders-0.3.4/CHANGELOG       2023-09-06 16:14:23.000000000 
+0200
@@ -1,3 +1,11 @@
+0.3.4
+-----
+* Re-release du to release tarball issue
+
+0.3.3
+-----
+* Use a new way to register providers using .desktop files
+
 0.3.0
 -----
 * Provide Vala bindings (Fernando da Silva)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcloudproviders-0.3.2/README.md 
new/libcloudproviders-0.3.4/README.md
--- old/libcloudproviders-0.3.2/README.md       2023-08-09 16:36:01.000000000 
+0200
+++ new/libcloudproviders-0.3.4/README.md       2023-09-06 16:14:23.000000000 
+0200
@@ -8,7 +8,7 @@
 
 ## API Documentation
 
-See the [API documentation](https://csoriano.gitlab.io/libcloudprovidersweb/) 
for
+See the [API 
documentation](https://world.pages.gitlab.gnome.org/libcloudproviders/) for
 further details.
 
 # Integrated by
@@ -16,4 +16,4 @@
 - Nextcloud client 2.5
 ### Client
 - GNOME Nautilus (file manager used by default in Fedora, Ubuntu, OpenSuse, 
Debian, RHEL, Suse..)
-- Elementary OS on Juno
+- elementary OS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libcloudproviders-0.3.2/docs/reference/integration-server.xml 
new/libcloudproviders-0.3.4/docs/reference/integration-server.xml
--- old/libcloudproviders-0.3.2/docs/reference/integration-server.xml   
2023-08-09 16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/docs/reference/integration-server.xml   
2023-09-06 16:14:23.000000000 +0200
@@ -15,10 +15,28 @@
         that can be set using the #CloudProvidersProviderExporter API.
       </para>
       <para>
-        To register your cloud provider you also need to provide a file in 
DATADIR/cloud-providers.
+        To register your cloud provider, you need to expose the interface it 
is implementing in its desktop file
       </para>
       <example>
-        <title>Example file to register a cloud provider</title>
+        <title>Example desktop file to register a cloud provider</title>
+        <programlisting>
+          [Desktop Entry]
+          Type=Application
+          Name=mycloudprovider example server
+          NoDisplay=true
+          Implements=org.freedesktop.CloudProviders
+
+          [org.freedesktop.CloudProviders]
+          BusName=org.mycloudprovider.CloudProviders.ServerExample
+          ObjectPath=/org/mycloudprovider/CloudProviders/ServerExample
+        </programlisting>
+      </example>
+      <para>
+        In previous versions, to register your cloud provider you needed to 
provide a file in DATADIR/cloud-providers.
+        This way of registering providers is still working but is not 
compatible with containerization.
+      </para>
+      <example>
+        <title>Example file to register a cloud provider in previous 
versions</title>
         <programlisting>
           [Cloud Provider]
           BusName=org.mycloudprovider.CloudProviders.ServerExample
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libcloudproviders-0.3.2/docs/reference/libcloudproviders-docs.xml 
new/libcloudproviders-0.3.4/docs/reference/libcloudproviders-docs.xml
--- old/libcloudproviders-0.3.2/docs/reference/libcloudproviders-docs.xml       
2023-08-09 16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/docs/reference/libcloudproviders-docs.xml       
2023-09-06 16:14:23.000000000 +0200
@@ -80,8 +80,9 @@
     <xi:include 
href="generated-docs-org.freedesktop.CloudProviders.Account.xml"/>
     <xi:include 
href="generated-docs-org.freedesktop.CloudProviders.Provider.xml"/>
   </part>
-     <index id="index-all">
+  <index id="index-all">
     <title>Index of all symbols</title>
   </index>
+  <xi:include href="xml/annotation-glossary.xml"><xi:fallback/></xi:include>
 
 </book>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libcloudproviders-0.3.2/docs/reference/libcloudproviders-sections.txt 
new/libcloudproviders-0.3.4/docs/reference/libcloudproviders-sections.txt
--- old/libcloudproviders-0.3.2/docs/reference/libcloudproviders-sections.txt   
2023-08-09 16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/docs/reference/libcloudproviders-sections.txt   
2023-09-06 16:14:23.000000000 +0200
@@ -2,6 +2,7 @@
 <FILE>cloudprovidersaccount</FILE>
 <TITLE>CloudProvidersAccount</TITLE>
 CloudProvidersAccountStatus
+CLOUD_PROVIDERS_ACCOUNT_DBUS_IFACE
 CLOUD_PROVIDERS_TYPE_ACCOUNT
 CloudProvidersAccountClass
 cloud_providers_account_new
@@ -29,7 +30,6 @@
 cloud_providers_account_exporter_set_action_group
 cloud_providers_account_exporter_set_path
 CloudProvidersAccountExporter
-CloudProvidersProviderExporter
 </SECTION>
 
 <SECTION>
@@ -39,6 +39,7 @@
 CloudProvidersCollectorClass
 cloud_providers_collector_dup_singleton
 cloud_providers_collector_get_providers
+cloud_providers_collector_update
 CloudProvidersCollector
 </SECTION>
 
@@ -46,8 +47,6 @@
 <FILE>cloudprovidersprovider</FILE>
 <TITLE>CloudProvidersProvider</TITLE>
 CLOUD_PROVIDERS_PROVIDER_DBUS_IFACE
-CLOUD_PROVIDERS_PROVIDER_DBUS_NAME
-CLOUD_PROVIDERS_PROVIDER_DBUS_PATH
 CLOUD_PROVIDERS_TYPE_PROVIDER
 cloud_providers_provider_new
 cloud_providers_provider_get_name
@@ -60,9 +59,9 @@
 <TITLE>CloudProvidersProviderExporter</TITLE>
 CLOUD_PROVIDERS_TYPE_PROVIDER_EXPORTER
 CloudProvidersProviderExporterClass
+cloud_providers_provider_exporter_new
 cloud_providers_provider_exporter_remove_account
 cloud_providers_provider_exporter_set_name
 cloud_providers_provider_exporter_get_name
-cloud_providers_provider_exporter_new
 CloudProvidersProviderExporter
 </SECTION>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcloudproviders-0.3.2/meson.build 
new/libcloudproviders-0.3.4/meson.build
--- old/libcloudproviders-0.3.2/meson.build     2023-08-09 16:36:01.000000000 
+0200
+++ new/libcloudproviders-0.3.4/meson.build     2023-09-06 16:14:23.000000000 
+0200
@@ -1,5 +1,5 @@
 project ('libcloudproviders', 'c',
-  version: '0.3.2',
+  version: '0.3.4',
   meson_version: '>=0.54.0',
   license: 'LGPL3+',
   default_options: [
@@ -33,7 +33,7 @@
 endforeach
 add_project_arguments(global_cflags, language: 'c')
 
-glib_ver = '>= 2.51.2'
+glib_ver = '>= 2.56'
 glib = dependency ('glib-2.0', version: glib_ver)
 gio = dependency ('gio-2.0', version: glib_ver)
 
@@ -45,8 +45,8 @@
 endif
 
 add_project_arguments(
-  '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_52',
-  '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_52',
+  '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56',
+  '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56',
   language: 'c'
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcloudproviders-0.3.2/src/cloudprovidersaccount.c 
new/libcloudproviders-0.3.4/src/cloudprovidersaccount.c
--- old/libcloudproviders-0.3.2/src/cloudprovidersaccount.c     2023-08-09 
16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/src/cloudprovidersaccount.c     2023-09-06 
16:14:23.000000000 +0200
@@ -51,7 +51,7 @@
  * #CloudProvidersAccount is the basic object used to construct the integrator 
UI
  * and actions that a provider will present to the user, from the client side.
  * Integrators of the cloud providers can use this object to poll the
- * #CloudProvider menus, status and actions.
+ * #CloudProvidersProvider menus, status and actions.
  */
 
 enum
@@ -245,7 +245,7 @@
  * @proxy: DBus proxy
  *
  * A #CloudProvidersAccount object are used to fetch details about cloud 
providers from DBus.
- * Object are usually fetched from cloud_providers_get_providers() as a list.
+ * Object are usually fetched from cloud_providers_provider_get_accounts() as 
a list.
  */
 CloudProvidersAccount*
 cloud_providers_account_new (GDBusProxy *proxy)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libcloudproviders-0.3.2/src/cloudproviderscollector.c 
new/libcloudproviders-0.3.4/src/cloudproviderscollector.c
--- old/libcloudproviders-0.3.2/src/cloudproviderscollector.c   2023-08-09 
16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/src/cloudproviderscollector.c   2023-09-06 
16:14:23.000000000 +0200
@@ -26,12 +26,14 @@
 #include <gio/gio.h>
 
 #define KEY_FILE_GROUP "Cloud Providers"
+#define XDG_DESKTOP_IMPLEMENTS "org.freedesktop.CloudProviders"
 
 struct _CloudProvidersCollector
 {
     GObject parent;
 
     GList *providers;
+    GHashTable *providers_bus_names;
     GDBusConnection *bus;
     GCancellable *cancellable;
     GList *monitors;
@@ -82,7 +84,7 @@
 }
 
 static void
-cloud_providers_collector_finalize (GObject *object)
+cloud_providers_collector_dispose (GObject *object)
 {
     CloudProvidersCollector *self = (CloudProvidersCollector *)object;
     GList *l;
@@ -97,10 +99,14 @@
     {
         g_signal_handlers_disconnect_by_data (G_OBJECT (l->data), self);
     }
+    g_clear_pointer (&self->providers_bus_names, g_hash_table_unref);
     g_list_free_full (self->providers, g_object_unref);
+    self->providers = NULL;
     g_list_free_full (self->monitors, g_object_unref);
+    self->monitors = NULL;
+    g_clear_object (&self->bus);
 
-    G_OBJECT_CLASS (cloud_providers_collector_parent_class)->finalize (object);
+    G_OBJECT_CLASS (cloud_providers_collector_parent_class)->dispose (object);
 }
 
 static void
@@ -108,7 +114,7 @@
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = cloud_providers_collector_finalize;
+  object_class->dispose = cloud_providers_collector_dispose;
 
   /**
    * CloudProviderCollector::providers-changed
@@ -130,6 +136,7 @@
 cloud_providers_collector_init (CloudProvidersCollector *self)
 {
     self->cancellable = g_cancellable_new ();
+    self->providers_bus_names = g_hash_table_new_full (g_str_hash, 
g_str_equal, g_free, NULL);
 
     g_bus_get (G_BUS_TYPE_SESSION,
                self->cancellable,
@@ -155,43 +162,115 @@
 }
 
 static void
-load_cloud_provider (CloudProvidersCollector *self,
-                     GFile                   *file)
+add_cloud_provider (CloudProvidersCollector *self,
+                    const gchar             *bus_name,
+                    const gchar             *object_path)
 {
-    GKeyFile *key_file;
-    gchar *path;
+    g_autoptr(CloudProvidersProvider) provider = NULL;
+
+    provider = cloud_providers_provider_new (bus_name, object_path);
+    if (g_hash_table_contains (self->providers_bus_names, bus_name))
+    {
+        g_debug ("Skipped duplicate provider: %s %s\n", bus_name, object_path);
+        return;
+    }
+
+    self->providers = g_list_append (self->providers, g_object_ref (provider));
+    g_hash_table_add (self->providers_bus_names, g_strdup (bus_name));
+    g_signal_connect_swapped (provider, "removed",
+                              G_CALLBACK (on_provider_removed), self);
+
+    g_debug ("Client loading provider: %s %s\n", bus_name, object_path);
+}
+
+static void
+load_cloud_provider_from_desktop_file (CloudProvidersCollector *self,
+                                       GFile                   *file)
+{
+    g_autoptr(GKeyFile) key_file = NULL;
+    g_autoptr(GError) error = NULL;
+    g_autofree gchar *path = NULL;
+    g_auto(GStrv) implements = NULL;
+    g_autofree gchar *bus_name = NULL;
+    g_autofree gchar *object_path = NULL;
+
+    path = g_file_get_path (file);
+    if (!g_str_has_suffix (path, ".desktop"))
+    {
+        return;
+    }
+
+    key_file = g_key_file_new ();
+    if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, &error))
+    {
+        g_warning ("Error loading .desktop file at %s: %s", path, 
error->message);
+        return;
+    }
+
+    implements = g_key_file_get_string_list (key_file, 
G_KEY_FILE_DESKTOP_GROUP, "Implements", NULL, &error);
+    if (implements == NULL)
+    {
+        if (!g_error_matches (error, G_KEY_FILE_ERROR, 
G_KEY_FILE_ERROR_KEY_NOT_FOUND))
+        {
+            g_warning ("Error loading Implements key from %s: %s", path, 
error->message);
+        }
+
+        return;
+    }
+
+    if (!g_strv_contains((const gchar * const *) implements, 
XDG_DESKTOP_IMPLEMENTS))
+    {
+        return;
+    }
+
+    bus_name = g_key_file_get_string (key_file, XDG_DESKTOP_IMPLEMENTS, 
"BusName", NULL);
+    object_path = g_key_file_get_string (key_file, XDG_DESKTOP_IMPLEMENTS, 
"ObjectPath", NULL);
+
+    if (!bus_name || !object_path)
+    {
+        g_warning ("Unable to find BusName or ObjectPath keys in 
"XDG_DESKTOP_IMPLEMENTS" section from %s", path);
+        return;
+    }
+
+    add_cloud_provider (self, bus_name, object_path);
+}
+
+static void
+load_cloud_provider_from_key_file (CloudProvidersCollector *self,
+                                   GFile                   *file)
+{
+    g_autoptr(GKeyFile) key_file = g_key_file_new ();
+    g_autofree gchar *path = NULL;
     GError *error = NULL;
-    gchar *bus_name;
-    gchar *object_path;
-    gboolean success = FALSE;
+    g_autofree gchar *bus_name = NULL;
+    g_autofree gchar *object_path = NULL;
     CloudProvidersProvider *provider;
 
-    key_file = g_key_file_new ();
     path = g_file_get_path (file);
     g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, &error);
     if (error != NULL)
     {
-        g_debug ("test 1");
-        goto out;
+        g_debug ("Error while loading cloud provider key file at %s with error 
%s", path, error->message);
+        return;
     }
 
     if (!g_key_file_has_group (key_file, KEY_FILE_GROUP))
     {
-        g_debug ("test 2");
-        goto out;
+        g_debug ("Error while loading cloud provider key file at %s with error 
%s", path, error->message);
+        return;
     }
 
     bus_name = g_key_file_get_string (key_file, KEY_FILE_GROUP, "BusName", 
&error);
     if (error != NULL)
     {
-        g_debug ("test 3");
-        goto out;
+        g_debug ("Error while loading cloud provider key file at %s with error 
%s", path, error->message);
+        return;
     }
     object_path = g_key_file_get_string (key_file, KEY_FILE_GROUP, 
"ObjectPath", &error);
     if (error != NULL)
     {
-        g_debug ("test 4");
-        goto out;
+        g_debug ("Error while loading cloud provider key file at %s with error 
%s", path, error->message);
+        return;
     }
 
     provider = cloud_providers_provider_new (bus_name, object_path);
@@ -200,18 +279,6 @@
                               G_CALLBACK (on_provider_removed), self);
 
     g_debug("Client loading provider: %s %s\n", bus_name, object_path);
-
-    success = TRUE;
-    g_free (bus_name);
-    g_free (object_path);
-out:
-    if (!success)
-    {
-        g_warning ("Error while loading cloud provider key file at %s with 
error %s", path, error != NULL ? error->message : NULL);
-    }
-    g_key_file_free (key_file);
-    g_object_unref (file);
-    g_free (path);
 }
 
 static void
@@ -224,47 +291,61 @@
 load_cloud_providers (CloudProvidersCollector *self)
 {
     const gchar* const *data_dirs;
-    gint i;
-    gint len;
+    const gchar *data_subdirs[] = {"applications", "cloud-providers"};
+    guint i;
+    gsize j;
 
     data_dirs = g_get_system_data_dirs ();
-    len = g_strv_length ((gchar **)data_dirs);
-    for (i = 0; i < len; i++)
+    for (i = 0; data_dirs[i] != NULL; i++)
     {
-        g_autofree gchar *key_files_directory_path = NULL;
-        g_autoptr (GFile) key_files_directory_file = NULL;
-        g_autoptr (GError) error = NULL;
-        g_autoptr (GFileEnumerator) file_enumerator = NULL;
-        g_autoptr (GFileInfo) info = NULL;
-        GFileMonitor *monitor;
-
-        key_files_directory_path = g_build_filename (data_dirs[i], 
"cloud-providers", NULL);
-        key_files_directory_file = g_file_new_for_path 
(key_files_directory_path);
-        monitor = g_file_monitor (key_files_directory_file, 
G_FILE_MONITOR_WATCH_MOVES,
-                                  self->cancellable, NULL);
-        g_signal_connect_swapped (monitor, "changed", G_CALLBACK 
(on_providers_file_changed), self);
-        self->monitors = g_list_append (self->monitors, monitor);
-        file_enumerator = g_file_enumerate_children (key_files_directory_file,
-                                                     
"standard::name,standard::type",
-                                                     G_FILE_QUERY_INFO_NONE,
-                                                     NULL,
-                                                     &error);
-        if (error)
+        for (j = 0; j < G_N_ELEMENTS (data_subdirs); j++)
         {
-            continue;
-        }
+            g_autoptr (GFile) directory_file = NULL;
+            g_autoptr (GFileInfo) info = NULL;
+            g_autoptr (GFileEnumerator) file_enumerator = NULL;
+            g_autoptr (GFileMonitor) monitor = NULL;
+            g_autoptr (GError) error = NULL;
+
+            directory_file = g_file_new_build_filename (data_dirs[i], 
data_subdirs[j], NULL);
+            monitor = g_file_monitor (directory_file, 
G_FILE_MONITOR_WATCH_MOVES,
+                                      self->cancellable, NULL);
+            g_signal_connect_swapped (monitor, "changed", G_CALLBACK 
(on_providers_file_changed), self);
+            self->monitors = g_list_append (self->monitors, g_steal_pointer 
(&monitor));
+            file_enumerator = g_file_enumerate_children (directory_file,
+                                                         
"standard::name,standard::type",
+                                                         
G_FILE_QUERY_INFO_NONE,
+                                                         NULL,
+                                                         &error);
+            if (error)
+            {
+                g_clear_error (&error);
+                continue;
+            }
 
-        info = g_file_enumerator_next_file (file_enumerator, NULL, &error);
-        if (error)
-        {
-             g_warning ("Error while enumerating file %s error: %s\n", 
key_files_directory_path, error->message);
-             continue;
-        }
-        while (info != NULL && error == NULL)
-        {
-            load_cloud_provider (self, g_file_enumerator_get_child 
(file_enumerator, info));
-            g_clear_object (&info);
             info = g_file_enumerator_next_file (file_enumerator, NULL, &error);
+            if (error)
+            {
+                g_autofree gchar *directory_path = g_file_get_path 
(directory_file);
+                g_warning ("Error while enumerating file %s error: %s\n", 
directory_path, error->message);
+                g_clear_error (&error);
+                continue;
+            }
+
+            while (info != NULL && error == NULL)
+            {
+                g_autoptr(GFile) child = g_file_enumerator_get_child 
(file_enumerator, info);
+                if (strcmp (data_subdirs[j], "applications") == 0)
+                {
+                    load_cloud_provider_from_desktop_file (self, child);
+                }
+                else
+                {
+                    load_cloud_provider_from_key_file (self, child);
+                }
+
+                g_clear_object (&info);
+                info = g_file_enumerator_next_file (file_enumerator, NULL, 
&error);
+            }
         }
     }
 }
@@ -285,6 +366,7 @@
     {
         g_signal_handlers_disconnect_by_data (G_OBJECT (l->data), self);
     }
+    g_hash_table_remove_all (self->providers_bus_names);
     g_list_free_full (self->providers, g_object_unref);
     g_list_free_full (self->monitors, g_object_unref);
     self->providers = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libcloudproviders-0.3.2/src/cloudprovidersproviderexporter.c 
new/libcloudproviders-0.3.4/src/cloudprovidersproviderexporter.c
--- old/libcloudproviders-0.3.2/src/cloudprovidersproviderexporter.c    
2023-08-09 16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/src/cloudprovidersproviderexporter.c    
2023-09-06 16:14:23.000000000 +0200
@@ -344,7 +344,7 @@
 
 /**
  * cloud_providers_provider_exporter_new
- * @bus: A #GDbusConnection to export the objects to
+ * @bus: A #GDBusConnection to export the objects to
  * @bus_name: A DBus name to bind to
  * @bus_path: A DBus object path
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcloudproviders-0.3.2/test/meson.build 
new/libcloudproviders-0.3.4/test/meson.build
--- old/libcloudproviders-0.3.2/test/meson.build        2023-08-09 
16:36:01.000000000 +0200
+++ new/libcloudproviders-0.3.4/test/meson.build        2023-09-06 
16:14:23.000000000 +0200
@@ -21,6 +21,8 @@
     configuration: service_conf,
     install_dir: servicedir,
   )
+  applications = join_paths (datadir, 'applications')
   cloudprovidersdata = join_paths (datadir, 'cloud-providers')
+  install_data('org.freedesktop.CloudProviders.ServerExample.desktop', 
install_dir: applications)
   install_data('org.freedesktop.CloudProviders.ServerExample.ini', 
install_dir: cloudprovidersdata)
 endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libcloudproviders-0.3.2/test/org.freedesktop.CloudProviders.ServerExample.desktop
 
new/libcloudproviders-0.3.4/test/org.freedesktop.CloudProviders.ServerExample.desktop
--- 
old/libcloudproviders-0.3.2/test/org.freedesktop.CloudProviders.ServerExample.desktop
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/libcloudproviders-0.3.4/test/org.freedesktop.CloudProviders.ServerExample.desktop
       2023-09-06 16:14:23.000000000 +0200
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Name=libcloudproviders example server
+NoDisplay=true
+Implements=org.freedesktop.CloudProviders
+
+[org.freedesktop.CloudProviders]
+BusName=org.freedesktop.CloudProviders.ServerExample
+ObjectPath=/org/freedesktop/CloudProviders/ServerExample
\ No newline at end of file

Reply via email to