[gnome-initial-setup/keyring] Make this work
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup/keyring] Make this work
- Date: Tue, 4 Mar 2014 21:04:34 +0000 (UTC)
commit ed80c400d15500df30bdfad192b181ffd9b79610
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Mar 4 15:56:47 2014 -0500
Make this work
gnome-initial-setup/gis-keyring.c | 39 +++++++++++++++++++++++++++---------
1 files changed, 29 insertions(+), 10 deletions(-)
---
diff --git a/gnome-initial-setup/gis-keyring.c b/gnome-initial-setup/gis-keyring.c
index b875e7b..b5cda9c 100644
--- a/gnome-initial-setup/gis-keyring.c
+++ b/gnome-initial-setup/gis-keyring.c
@@ -41,36 +41,55 @@ void
gis_ensure_login_keyring (const gchar *pwd)
{
GSubprocess *subprocess = NULL;
+ GSubprocessLauncher *launcher = NULL;
GError *error = NULL;
+ gchar *output = NULL;
+ gchar **env = NULL;
- subprocess = g_subprocess_new (G_SUBPROCESS_FLAGS_STDIN_PIPE | G_SUBPROCESS_FLAGS_STDOUT_SILENCE,
- &error,
- "gnome-keyring-daemon", NULL);
+ g_debug ("launching gnome-keyring-daemon --login");
+ launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_STDIN_PIPE | G_SUBPROCESS_FLAGS_STDOUT_PIPE
| G_SUBPROCESS_FLAGS_STDERR_SILENCE);
+ subprocess = g_subprocess_launcher_spawn (launcher, &error, "gnome-keyring-daemon", "--login", NULL);
if (subprocess == NULL) {
- g_warning ("failed to spawn gnome-keyring-daemon: %s", error->message);
+ g_warning ("Failed to spawn gnome-keyring-daemon --login: %s", error->message);
g_error_free (error);
goto out;
}
- if (!g_subprocess_communicate_utf8 (subprocess, pwd, NULL, NULL, NULL, &error)) {
- g_warning ("failed to send keyring password to gnome-keyring-daemon: %s", error->message);
+ if (!g_subprocess_communicate_utf8 (subprocess, "gis", NULL, &output, NULL, &error)) {
+ g_warning ("Failed to communicate with gnome-keyring-daemon: %s", error->message);
g_error_free (error);
goto out;
}
+ g_debug ("Read from keyring: %s\n", output);
+
+ env = g_strsplit (output, "\n", 0);
+
+ g_object_unref (launcher);
g_object_unref (subprocess);
- subprocess = g_subprocess_new (G_SUBPROCESS_FLAGS_STDIN_INHERIT | G_SUBPROCESS_FLAGS_STDOUT_SILENCE,
- &error,
- "gnome-keyring-daemon", "--start", NULL);
+
+ launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_STDIN_INHERIT |
G_SUBPROCESS_FLAGS_STDOUT_SILENCE);
+
+ g_subprocess_launcher_set_environ (launcher, env);
+
+ g_debug ("launching gnome-keyring-daemon --start");
+ subprocess = g_subprocess_launcher_spawn (launcher, &error, "gnome-keyring-daemon", "--start", NULL);
+
if (subprocess == NULL) {
- g_warning ("failed to spawn gnome-keyring-daemon --start: %s", error->message);
+ g_warning ("Failed to spawn gnome-keyring-daemon --start: %s", error->message);
g_error_free (error);
goto out;
}
out:
+ if (env)
+ g_strfreev (env);
+ if (output)
+ g_free (output);
if (subprocess)
g_object_unref (subprocess);
+ if (launcher)
+ g_object_unref (launcher);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]