diff options
author | Ray Strode <rstrode@redhat.com> | 2012-04-10 15:03:41 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2012-04-13 17:05:12 -0400 |
commit | 83d5c54600161bf5115234715d242f4538168f68 (patch) | |
tree | 0153b3ba96fe4b91c6eac1bb4c6b86254c9e8051 | |
parent | a2fc521c7f9c9192a255685921aff0ade691b4c6 (diff) | |
download | gdm-83d5c54600161bf5115234715d242f4538168f68.tar.gz |
session: add username arg to SetupForProgram
Previously, SetupForProgram was only used to start a greeter,
which always runs as the gdm user.
Now SetupForProgram is potentially used to start the initial setup
assistant. This program can run as a different user.
This commit adds a "username" arg to SetupForProgram that defaults
to "gdm" for the greeter, and becomes "gdm-initial-setup" for the
initial setup assistant.
-rw-r--r-- | daemon/gdm-session-direct.c | 6 | ||||
-rw-r--r-- | daemon/gdm-session-worker.c | 4 | ||||
-rw-r--r-- | daemon/gdm-session.c | 3 | ||||
-rw-r--r-- | daemon/gdm-session.h | 2 | ||||
-rw-r--r-- | daemon/gdm-welcome-session.c | 1 |
5 files changed, 13 insertions, 3 deletions
diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c index 9f750f25..c5be7991 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -1406,6 +1406,7 @@ do_introspect (DBusConnection *connection, " </signal>\n" " <signal name=\"SetupForProgram\">\n" " <arg name=\"service_name\" type=\"s\"/>\n" + " <arg name=\"username\" type=\"s\"/>\n" " <arg name=\"x11_display_name\" type=\"s\"/>\n" " <arg name=\"display_device\" type=\"s\"/>\n" " <arg name=\"display_seat\" type=\"s\"/>\n" @@ -2108,6 +2109,7 @@ send_setup_for_user (GdmSessionDirect *session, static void send_setup_for_program (GdmSessionDirect *session, const char *service_name, + const char *username, const char *log_file) { DBusMessage *message; @@ -2155,6 +2157,7 @@ send_setup_for_program (GdmSessionDirect *session, dbus_message_iter_init_append (message, &iter); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &service_name); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &username); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_name); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_device); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_seat_id); @@ -2201,13 +2204,14 @@ gdm_session_direct_setup_for_user (GdmSession *session, static void gdm_session_direct_setup_for_program (GdmSession *session, const char *service_name, + const char *username, const char *log_file) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); g_return_if_fail (session != NULL); - send_setup_for_program (impl, service_name, log_file); + send_setup_for_program (impl, service_name, username, log_file); } static void diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index 57f10718..a314c92d 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -2643,6 +2643,7 @@ on_setup_for_program (GdmSessionWorker *worker, { DBusError error; char *service; + char *username; char *x11_display_name; char *console; char *seat_id; @@ -2660,6 +2661,7 @@ on_setup_for_program (GdmSessionWorker *worker, res = dbus_message_get_args (message, &error, DBUS_TYPE_STRING, &service, + DBUS_TYPE_STRING, &username, DBUS_TYPE_STRING, &x11_display_name, DBUS_TYPE_STRING, &console, DBUS_TYPE_STRING, &seat_id, @@ -2672,7 +2674,7 @@ on_setup_for_program (GdmSessionWorker *worker, queue_state_change (worker); worker->priv->service = g_strdup (service); - worker->priv->username = g_strdup (GDM_USERNAME); + worker->priv->username = g_strdup (username); worker->priv->x11_display_name = g_strdup (x11_display_name); worker->priv->hostname = g_strdup (hostname); worker->priv->display_device = g_strdup (console); diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c index 5ba9fd1a..8f085752 100644 --- a/daemon/gdm-session.c +++ b/daemon/gdm-session.c @@ -128,11 +128,12 @@ gdm_session_setup_for_user (GdmSession *session, void gdm_session_setup_for_program (GdmSession *session, const char *service_name, + const char *username, const char *log_file) { g_return_if_fail (GDM_IS_SESSION (session)); - GDM_SESSION_GET_IFACE (session)->setup_for_program (session, service_name, log_file); + GDM_SESSION_GET_IFACE (session)->setup_for_program (session, service_name, username, log_file); } void diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h index 17accb28..5716f89e 100644 --- a/daemon/gdm-session.h +++ b/daemon/gdm-session.h @@ -58,6 +58,7 @@ struct _GdmSessionIface const char *username); void (* setup_for_program) (GdmSession *session, const char *service_name, + const char *username, const char *log_file); void (* set_environment_variable) (GdmSession *session, const char *key, @@ -169,6 +170,7 @@ void gdm_session_setup_for_user (GdmSession *session, const char *username); void gdm_session_setup_for_program (GdmSession *session, const char *service_name, + const char *username, const char *log_file); void gdm_session_set_environment_variable (GdmSession *session, const char *key, diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-welcome-session.c index 778d5dce..e355f425 100644 --- a/daemon/gdm-welcome-session.c +++ b/daemon/gdm-welcome-session.c @@ -777,6 +777,7 @@ on_conversation_started (GdmSession *session, gdm_session_setup_for_program (GDM_SESSION (welcome_session->priv->session), "gdm-welcome", + welcome_session->priv->user_name, log_path); g_free (log_path); } |