summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebarshi Ray <debarshir@gnome.org>2020-10-20 19:54:00 +0200
committerDebarshi Ray <debarshir@gnome.org>2020-10-20 20:10:01 +0200
commit9e7f91026c3aa420774d37ebec96a2e9e438556e (patch)
tree7436ffa746d4117c73d25847cf7b4c5870c866a5
parentf700eb8bcd56bd63cce1e8832f9c94b04ef1379d (diff)
downloadgnome-online-accounts-wip/rishi/kcm-notification.tar.gz
kerberos-identity-manager: Use notifications for KCM credential cacheswip/rishi/kcm-notification
https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/merge_requests/61
-rw-r--r--src/goaidentity/goakerberosidentitymanager.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/goaidentity/goakerberosidentitymanager.c b/src/goaidentity/goakerberosidentitymanager.c
index 50db6ed..38014ab 100644
--- a/src/goaidentity/goakerberosidentitymanager.c
+++ b/src/goaidentity/goakerberosidentitymanager.c
@@ -1407,6 +1407,36 @@ monitor_credentials_cache (GoaKerberosIdentityManager *self,
g_object_unref (directory);
g_object_unref (file);
}
+ else if (strcmp (cache_type, "KCM") == 0)
+ {
+ GError *create_error = NULL;
+ GFile *directory = NULL;
+ GFile *file = NULL;
+ GFileOutputStream *stream = NULL;
+ const gchar *runtime_dir;
+
+ runtime_dir = g_get_user_runtime_dir ();
+ directory = g_file_new_for_path (runtime_dir);
+ file = g_file_get_child (directory, ".kcm-notifications");
+
+ monitoring_error = NULL;
+
+ stream = g_file_create (file, G_FILE_CREATE_NONE, NULL, &create_error);
+ if (create_error != NULL)
+ {
+ if (g_error_matches (create_error, G_IO_ERROR, G_IO_ERROR_EXISTS))
+ g_error_free (create_error);
+ else
+ g_propagate_error (&monitoring_error, create_error);
+ }
+
+ if (monitoring_error == NULL)
+ monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &monitoring_error);
+
+ g_clear_object (&stream);
+ g_object_unref (directory);
+ g_object_unref (file);
+ }
if (monitor == NULL)
{