diff options
Diffstat (limited to 'daemon/gdm-welcome-session.c')
-rw-r--r-- | daemon/gdm-welcome-session.c | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-welcome-session.c index 778d5dce..055cc03b 100644 --- a/daemon/gdm-welcome-session.c +++ b/daemon/gdm-welcome-session.c @@ -59,6 +59,7 @@ struct GdmWelcomeSessionPrivate { GdmSession *session; char *command; + char *log_file; GPid pid; char *user_name; @@ -94,6 +95,7 @@ enum { PROP_RUNTIME_DIR, PROP_SERVER_ADDRESS, PROP_COMMAND, + PROP_LOG_FILE, PROP_SERVER_DBUS_PATH, PROP_SERVER_DBUS_INTERFACE, PROP_SERVER_ENV_VAR_NAME @@ -771,12 +773,17 @@ on_conversation_started (GdmSession *session, char *log_path; char *log_file; - log_file = g_strdup_printf ("%s-greeter.log", welcome_session->priv->x11_display_name); - log_path = g_build_filename (LOGDIR, log_file, NULL); - g_free (log_file); + if (welcome_session->priv->log_file == NULL) { + log_file = g_strdup_printf ("%s-greeter.log", welcome_session->priv->x11_display_name); + log_path = g_build_filename (LOGDIR, log_file, NULL); + g_free (log_file); + } else { + log_path = g_strdup (welcome_session->priv->log_file); + } gdm_session_setup_for_program (GDM_SESSION (welcome_session->priv->session), "gdm-welcome", + welcome_session->priv->user_name, log_path); g_free (log_path); } @@ -1007,6 +1014,14 @@ _gdm_welcome_session_set_command (GdmWelcomeSession *welcome_session, } static void +_gdm_welcome_session_set_log_file (GdmWelcomeSession *welcome_session, + const char *log_file) +{ + g_free (welcome_session->priv->log_file); + welcome_session->priv->log_file = g_strdup (log_file); +} + +static void _gdm_welcome_session_set_server_env_var_name (GdmWelcomeSession *welcome_session, const char *name) { @@ -1067,6 +1082,9 @@ gdm_welcome_session_set_property (GObject *object, case PROP_COMMAND: _gdm_welcome_session_set_command (self, g_value_get_string (value)); break; + case PROP_LOG_FILE: + _gdm_welcome_session_set_log_file (self, g_value_get_string (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1126,6 +1144,9 @@ gdm_welcome_session_get_property (GObject *object, case PROP_COMMAND: g_value_set_string (value, self->priv->command); break; + case PROP_LOG_FILE: + g_value_set_string (value, self->priv->log_file); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1241,6 +1262,13 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass) "command", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_LOG_FILE, + g_param_spec_string ("log-file", + "log file", + "log file", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); signals [STARTED] = g_signal_new ("started", G_OBJECT_CLASS_TYPE (object_class), |