diff --git a/dbus-gdm.conf b/dbus-gdm.conf
deleted file mode 100644
index 0bfd141..0000000
--- a/dbus-gdm.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/gdm-2.17.7-vt-fallback.patch b/gdm-2.17.7-vt-fallback.patch
deleted file mode 100644
index 1439c58..0000000
--- a/gdm-2.17.7-vt-fallback.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff -upr gdm-2.19.5-pre/daemon/getvt.c gdm-2.19.5-post/daemon/getvt.c
---- gdm-2.19.5-pre/daemon/getvt.c 2007-07-30 13:51:14.000000000 -0500
-+++ gdm-2.19.5-post/daemon/getvt.c 2007-08-03 20:14:13.000000000 -0500
-@@ -181,8 +181,10 @@ get_free_vt_sys (int *vtfd)
- int vtno;
- unsigned short vtmask;
- struct vt_stat vtstat;
-+ guint v_state;
-
- *vtfd = -1;
-+ fdv = -1;
-
- do {
- errno = 0;
-@@ -193,26 +195,33 @@ get_free_vt_sys (int *vtfd)
- #endif
- , 0);
- } while G_UNLIKELY (errno == EINTR);
-- if (fd < 0)
-- return -1;
-
-- if (ioctl (fd, VT_GETSTATE, &vtstat) < 0) {
-- VE_IGNORE_EINTR (close (fd));
-- return -1;
-- }
-+ if (fd >= 0 && ioctl (fd, VT_GETSTATE, &vtstat) >= 0)
-+ v_state = vtstat.v_state;
-+ else
-+ v_state = 0;
-
-- for (vtno = gdm_daemon_config_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno;
-- vtstat.v_state & vtmask; vtno++, vtmask <<= 1);
-- if (!vtmask) {
-- VE_IGNORE_EINTR (close (fd));
-- return -1;
-+ for (vtno = gdm_daemon_config_get_value_int (GDM_KEY_FIRST_VT), vtmask = 1 << vtno; vtmask; vtno++, vtmask <<= 1) {
-+ /* Is this console in use? */
-+ if (v_state & vtmask)
-+ continue;
-+
-+ /* No, try to open it */
-+ fdv = open_vt (vtno);
-+ if (fdv >= 0)
-+ break;
-+
-+ /* If we're here, kernel indicated that the console was free,
-+ * but we failed to open it. Just go on to higher VTs. */
- }
-
-- fdv = open_vt (vtno);
-- if (fdv < 0) {
-+ if (fdv < 0)
-+ vtno = -1;
-+
-+ if (fd >= 0) {
- VE_IGNORE_EINTR (close (fd));
-- return -1;
- }
-+
- *vtfd = fdv;
- return vtno;
- }
-Only in gdm-2.19.5-post: error.21177
diff --git a/gdm-2.19.3-dbus-security-tokens.patch b/gdm-2.19.3-dbus-security-tokens.patch
deleted file mode 100644
index ad34d5d..0000000
--- a/gdm-2.19.3-dbus-security-tokens.patch
+++ /dev/null
@@ -1,98 +0,0 @@
---- gdm-2.8.0.7/configure.ac~ 2007-01-19 14:00:55.000000000 -0500
-+++ gdm-2.8.0.7/configure.ac 2007-01-19 14:07:11.000000000 -0500
-@@ -141,7 +142,7 @@ PKG_CHECK_MODULES(VICIOUS, gtk+-2.0 >= $
- AC_SUBST(VICIOUS_CFLAGS)
- AC_SUBST(VICIOUS_LIBS)
-
--PKG_CHECK_MODULES(DAEMON, gtk+-2.0 >= $GTK_REQUIRED)
-+PKG_CHECK_MODULES(DAEMON, gtk+-2.0 >= $GTK_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED)
- AC_SUBST(DAEMON_CFLAGS)
- AC_SUBST(DAEMON_LIBS)
-
---- gdm-2.8.0.7/daemon/gdm.c~ 2007-01-19 14:00:55.000000000 -0500
-+++ gdm-2.8.0.7/daemon/gdm.c 2007-01-19 14:14:12.000000000 -0500
-@@ -42,6 +42,9 @@
- #include
- #include
-
-+#define DBUS_API_SUBJECT_TO_CHANGE
-+#include
-+
- /* This should be moved to auth.c I suppose */
-
- #include
-@@ -70,6 +73,10 @@
- #include
- #endif /* HAVE_LOGINDEVPERM */
-
-+#define MONITOR_SERVICE "com.novell.Pkcs11Monitor"
-+#define MONITOR_PATH "/com/novell/Pkcs11Monitor"
-+#define MONITOR_INTERFACE "com.novell.Pkcs11Monitor"
-+
- /* Local functions */
- static void gdm_config_parse (void);
- static void gdm_handle_message (GdmConnection *conn,
-@@ -78,6 +85,8 @@ static void gdm_handle_message (GdmConne
- static void gdm_handle_user_message (GdmConnection *conn,
- const char *msg,
- gpointer data);
-+static void gdm_reset_local_displays (void);
-+static void gdm_watch_for_security_tokens (void);
- static void gdm_daemonify (void);
- static void gdm_safe_restart (void);
- static void gdm_try_logout_action (GdmDisplay *disp);
---- gdm-2.19.3/daemon/gdm.c~ 2007-07-25 14:52:56.000000000 -0400
-+++ gdm-2.19.3/daemon/gdm.c 2007-07-25 14:56:18.000000000 -0400
-@@ -1800,6 +1800,8 @@ main (int argc, char *argv[])
- gdm_xdmcp_run ();
- }
-
-+ gdm_watch_for_security_tokens ();
-+
- /* We always exit via exit (), and sadly we need to g_main_quit ()
- * at times not knowing if it's this main or a recursive one we're
- * quitting.
-@@ -4355,3 +4357,43 @@ gdm_handle_user_message (GdmConnection *
- gdm_connection_close (conn);
- }
- }
-+
-+static void
-+gdm_reset_local_displays (void)
-+{
-+ GSList *li;
-+
-+ for (li = gdm_daemon_config_get_display_list (); li != NULL; li = li->next) {
-+ GdmDisplay *d = li->data;
-+
-+ if (d->attached)
-+ send_slave_command (d, GDM_NOTIFY_RESET);
-+ }
-+}
-+
-+static void
-+gdm_watch_for_security_tokens (void)
-+{
-+ DBusGConnection *conn;
-+ GError *err = NULL;
-+ DBusGProxy *monitor;
-+
-+ conn = dbus_g_bus_get (DBUS_BUS_SYSTEM, &err);
-+ if (!conn) {
-+ gdm_error (_("Cannot connect to dbus bus; smart card support disabled: %s"),
-+ err->message);
-+ g_error_free (err);
-+ return;
-+ }
-+
-+ monitor = dbus_g_proxy_new_for_name (conn,
-+ MONITOR_SERVICE,
-+ MONITOR_PATH,
-+ MONITOR_INTERFACE);
-+
-+ dbus_g_proxy_add_signal (monitor, "SecurityTokenInserted", G_TYPE_STRING, G_TYPE_INVALID);
-+ dbus_g_proxy_connect_signal (monitor, "SecurityTokenInserted", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
-+
-+ dbus_g_proxy_add_signal (monitor, "SecurityTokenRemoved", G_TYPE_STRING, G_TYPE_INVALID);
-+ dbus_g_proxy_connect_signal (monitor, "SecurityTokenRemoved", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
-+}
diff --git a/gdm-2.19.3-reset-pam.patch b/gdm-2.19.3-reset-pam.patch
deleted file mode 100644
index e6431d8..0000000
--- a/gdm-2.19.3-reset-pam.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-diff -upr gdm-2.19.5-pre/daemon/gdm.c gdm-2.19.5-post/daemon/gdm.c
---- gdm-2.19.5-pre/daemon/gdm.c 2007-07-30 13:51:14.000000000 -0500
-+++ gdm-2.19.5-post/daemon/gdm.c 2007-08-03 20:23:38.000000000 -0500
-@@ -4363,6 +4363,14 @@ gdm_handle_user_message (GdmConnection *
- gdm_connection_write (conn, "OK false\n");
- } else if (strcmp (msg, GDM_SUP_CLOSE) == 0) {
- gdm_connection_close (conn);
-+ } else if (strcmp (msg, GDM_SOP_CANCEL_LOGIN_REQUESTS) == 0) {
-+ GSList *li;
-+ for (li = gdm_daemon_config_get_display_list (); li != NULL; li = li->next) {
-+ GdmDisplay *d = li->data;
-+ if (!d->logged_in) {
-+ send_slave_command (d, GDM_NOTIFY_RESET);
-+ }
-+ }
- } else {
- gdm_connection_write (conn, "ERROR 0 Not implemented\n");
- gdm_connection_close (conn);
-diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
---- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-08-03 20:20:26.000000000 -0500
-+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 20:23:38.000000000 -0500
-@@ -233,6 +233,7 @@ G_BEGIN_DECLS
- #define GDM_NOTIFY_SOFT_RESTART_SERVERS "SOFT_RESTART_SERVERS"
- #define GDM_NOTIFY_GO "GO"
- #define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
-+#define GDM_NOTIFY_RESET "RESET"
-
- G_END_DECLS
-
-diff -upr gdm-2.19.5-pre/daemon/gdm-socket-protocol.h gdm-2.19.5-post/daemon/gdm-socket-protocol.h
---- gdm-2.19.5-pre/daemon/gdm-socket-protocol.h 2007-08-03 20:20:26.000000000 -0500
-+++ gdm-2.19.5-post/daemon/gdm-socket-protocol.h 2007-08-03 20:23:38.000000000 -0500
-@@ -157,6 +157,8 @@
- #define GDM_SOP_SHOW_QUESTION_DIALOG "SHOW_QUESTION_DIALOG" /* show the question dialog from daemon */
- #define GDM_SOP_SHOW_ASKBUTTONS_DIALOG "SHOW_ASKBUTTON_DIALOG" /* show the askbutton dialog from daemon */
-
-+/* Reset any in progress authentication conversations */
-+#define GDM_SOP_CANCEL_LOGIN_REQUESTS "CANCEL_LOGIN_REQUESTS" /* no arguments */
-
- /* Ack for a slave message */
- /* Note that an extra response can follow an 'ack' */
-diff -upr gdm-2.19.5-pre/daemon/slave.c gdm-2.19.5-post/daemon/slave.c
---- gdm-2.19.5-pre/daemon/slave.c 2007-08-03 20:20:26.000000000 -0500
-+++ gdm-2.19.5-post/daemon/slave.c 2007-08-03 20:24:23.000000000 -0500
-@@ -175,6 +175,12 @@ static int gdm_normal_runlevel =
- static pid_t extra_process = 0;
- static int extra_status = 0;
-
-+/* a dup of the other side of greeter_fd_in so that
-+ * the slave can talk to itself from its sig handler
-+ * using the greeter ipc mechanism
-+ */
-+static int slave_fd_out = -1;
-+
- #ifdef HAVE_TSOL
- static gboolean have_suntsol_extension = FALSE;
- #endif
-@@ -663,7 +669,7 @@ ignore_xerror_handler (Display *disp, XE
- }
-
- static void
--whack_greeter_fds (void)
-+whack_greeter_and_slave_fds (void)
- {
- if (greeter_fd_out > 0)
- VE_IGNORE_EINTR (close (greeter_fd_out));
-@@ -671,6 +677,9 @@ whack_greeter_fds (void)
- if (greeter_fd_in > 0)
- VE_IGNORE_EINTR (close (greeter_fd_in));
- greeter_fd_in = -1;
-+ if (slave_fd_out > 0)
-+ VE_IGNORE_EINTR (close (slave_fd_out));
-+ slave_fd_out = -1;
- }
-
- static void
-@@ -1156,7 +1165,7 @@ gdm_slave_whack_greeter (void)
-
- d->greetpid = 0;
-
-- whack_greeter_fds ();
-+ whack_greeter_and_slave_fds ();
-
- gdm_slave_send_num (GDM_SOP_GREETPID, 0);
-
-@@ -2005,7 +2014,7 @@ restart_the_greeter (void)
-
- d->greetpid = 0;
-
-- whack_greeter_fds ();
-+ whack_greeter_and_slave_fds ();
-
- gdm_slave_send_num (GDM_SOP_GREETPID, 0);
- }
-@@ -2295,6 +2304,12 @@ gdm_slave_wait_for_login (void)
- break;
- }
-
-+ if (do_cancel) {
-+ gdm_debug ("canceling...");
-+ gdm_slave_greeter_ctl_no_ret (GDM_RESETOK, "");
-+ continue;
-+ }
-+
- if (login_user == NULL) {
- const char *failuresound = gdm_daemon_config_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FAILURE_FILE);
-
-@@ -2908,9 +2923,10 @@ gdm_slave_greeter (void)
-
- default:
- VE_IGNORE_EINTR (close (pipe1[0]));
-- VE_IGNORE_EINTR (close (pipe2[1]));
-
-- whack_greeter_fds ();
-+ whack_greeter_and_slave_fds ();
-+
-+ slave_fd_out = pipe2[1];
-
- greeter_fd_out = pipe1[1];
- greeter_fd_in = pipe2[0];
-@@ -5208,7 +5224,7 @@ gdm_slave_child_handler (int sig)
-
- greet = FALSE;
- d->greetpid = 0;
-- whack_greeter_fds ();
-+ whack_greeter_and_slave_fds ();
- gdm_slave_send_num (GDM_SOP_GREETPID, 0);
-
- do_restart_greeter = TRUE;
-@@ -5220,7 +5236,7 @@ gdm_slave_child_handler (int sig)
- continue;
- }
-
-- whack_greeter_fds ();
-+ whack_greeter_and_slave_fds ();
-
- /* if greet is TRUE, then the greeter died outside of our
- * control really, so clean up and die, something is wrong
-@@ -5363,6 +5379,11 @@ gdm_slave_handle_usr2_message (void)
- gdm_wait_for_go = FALSE;
- } else if (strcmp (&s[1], GDM_NOTIFY_TWIDDLE_POINTER) == 0) {
- gdm_twiddle_pointer (d);
-+ } else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) {
-+ if (!d->logged_in) {
-+ gdm_fdprintf (slave_fd_out, "%c%c%c\n",
-+ STX, BEL, GDM_INTERRUPT_CANCEL);
-+ }
- }
- } else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
- gdm_got_ack = TRUE;
-Only in gdm-2.19.5-post/daemon: slave.c~
-Only in gdm-2.19.5-post: error.18580
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter.c gdm-2.19.5-post/gui/greeter/greeter.c
---- gdm-2.19.5-pre/gui/greeter/greeter.c 2007-08-03 20:20:26.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter.c 2007-08-03 20:23:38.000000000 -0500
-@@ -278,7 +278,6 @@ process_operation (guchar op_code,
- GtkWidget *dlg;
- char *tmp;
- char *session;
-- GreeterItemInfo *conversation_info;
- static GnomeCanvasItem *disabled_cover = NULL;
- gint lookup_status = SESSION_LOOKUP_SUCCESS;
- gchar *firstmsg = NULL;
-@@ -483,16 +482,9 @@ process_operation (guchar op_code,
-
- first_prompt = TRUE;
-
-- conversation_info = greeter_lookup_id ("pam-conversation");
--
-- if (conversation_info)
-- {
-- tmp = ve_locale_to_utf8 (args);
-- g_object_set (G_OBJECT (conversation_info->item),
-- "text", tmp,
-- NULL);
-- g_free (tmp);
-- }
-+ greeter_item_ulist_unset_selected_user ();
-+ greeter_item_pam_prompt ("", PW_ENTRY_SIZE, TRUE);
-+ greeter_item_pam_message ("");
-
- printf ("%c\n", STX);
- fflush (stdout);
diff --git a/gdm-2.19.3-token-login.patch b/gdm-2.19.3-token-login.patch
deleted file mode 100644
index e7e87fe..0000000
--- a/gdm-2.19.3-token-login.patch
+++ /dev/null
@@ -1,250 +0,0 @@
-Index: gdm-2.19.7/daemon/gdm.c
-===================================================================
---- gdm-2.19.7.orig/daemon/gdm.c
-+++ gdm-2.19.7/daemon/gdm.c
-@@ -4395,7 +4395,7 @@ gdm_handle_user_message (GdmConnection *
- }
-
- static void
--gdm_reset_local_displays (void)
-+send_command_to_locals (const char *msg)
- {
- GSList *li;
-
-@@ -4403,11 +4403,23 @@ gdm_reset_local_displays (void)
- GdmDisplay *d = li->data;
-
- if (d->attached)
-- send_slave_command (d, GDM_NOTIFY_RESET);
-+ send_slave_command (d, msg);
- }
- }
-
- static void
-+gdm_reset_local_displays (void)
-+{
-+ send_command_to_locals (GDM_NOTIFY_RESET);
-+}
-+
-+static void
-+gdm_do_token_login (void)
-+{
-+ send_command_to_locals (GDM_NOTIFY_TOKEN_LOGIN);
-+}
-+
-+static void
- gdm_watch_for_security_tokens (void)
- {
- DBusGConnection *conn;
-@@ -4428,7 +4440,7 @@ gdm_watch_for_security_tokens (void)
- MONITOR_INTERFACE);
-
- dbus_g_proxy_add_signal (monitor, "SecurityTokenInserted", G_TYPE_STRING, G_TYPE_INVALID);
-- dbus_g_proxy_connect_signal (monitor, "SecurityTokenInserted", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
-+ dbus_g_proxy_connect_signal (monitor, "SecurityTokenInserted", G_CALLBACK (gdm_do_token_login), NULL, NULL);
-
- dbus_g_proxy_add_signal (monitor, "SecurityTokenRemoved", G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (monitor, "SecurityTokenRemoved", G_CALLBACK (gdm_reset_local_displays), NULL, NULL);
-Index: gdm-2.19.7/daemon/gdm-daemon-config.c
-===================================================================
---- gdm-2.19.7.orig/daemon/gdm-daemon-config.c
-+++ gdm-2.19.7/daemon/gdm-daemon-config.c
-@@ -552,7 +552,8 @@ gdm_daemon_config_key_to_string_per_disp
-
- if (strcmp (group, "greeter") == 0 ||
- strcmp (group, "gui") == 0 ||
-- is_key (keystring, GDM_KEY_PAM_STACK)) {
-+ is_key (keystring, GDM_KEY_PAM_STACK) ||
-+ is_key (keystring, GDM_KEY_PAM_STACK_SMARTCARD)) {
- ret = gdm_daemon_config_key_to_string (file, keystring, retval);
- }
-
-Index: gdm-2.19.7/daemon/gdm-daemon-config-entries.h
-===================================================================
---- gdm-2.19.7.orig/daemon/gdm-daemon-config-entries.h
-+++ gdm-2.19.7/daemon/gdm-daemon-config-entries.h
-@@ -211,6 +211,7 @@ typedef enum {
- GDM_ID_SYSTEM_COMMANDS_IN_MENU,
- GDM_ID_ALLOW_LOGOUT_ACTIONS,
- GDM_ID_RBAC_SYSTEM_COMMAND_KEYS,
-+ GDM_ID_SMART_CARD_PAM_STACK,
- GDK_ID_LAST
- } GdmConfigKey;
-
-@@ -366,6 +367,7 @@ static const GdmConfigEntry gdm_daemon_c
- { GDM_CONFIG_GROUP_SECURITY, "RetryDelay", GDM_CONFIG_VALUE_INT, "1", GDM_ID_RETRY_DELAY },
- { GDM_CONFIG_GROUP_SECURITY, "DisallowTCP", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_DISALLOW_TCP },
- { GDM_CONFIG_GROUP_SECURITY, "PamStack", GDM_CONFIG_VALUE_STRING, "gdm", GDM_ID_PAM_STACK },
-+ { GDM_CONFIG_GROUP_SECURITY, "SmartCardPamStack", GDM_CONFIG_VALUE_STRING, "gdm-smartcard", GDM_ID_SMART_CARD_PAM_STACK },
-
- { GDM_CONFIG_GROUP_SECURITY, "NeverPlaceCookiesOnNFS", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_NEVER_PLACE_COOKIES_ON_NFS },
- { GDM_CONFIG_GROUP_SECURITY, "PasswordRequired", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_PASSWORD_REQUIRED },
-Index: gdm-2.19.7/daemon/gdm-daemon-config-keys.h
-===================================================================
---- gdm-2.19.7.orig/daemon/gdm-daemon-config-keys.h
-+++ gdm-2.19.7/daemon/gdm-daemon-config-keys.h
-@@ -105,6 +105,7 @@ G_BEGIN_DECLS
- #define GDM_KEY_RETRY_DELAY "security/RetryDelay=1"
- #define GDM_KEY_DISALLOW_TCP "security/DisallowTCP=true"
- #define GDM_KEY_PAM_STACK "security/PamStack=gdm"
-+#define GDM_KEY_PAM_STACK_SMARTCARD "security/SmartCardPamStack=gdm-smartcard"
- #define GDM_KEY_NEVER_PLACE_COOKIES_ON_NFS "security/NeverPlaceCookiesOnNFS=true"
- #define GDM_KEY_PASSWORD_REQUIRED "security/PasswordRequired=false"
- #define GDM_KEY_UTMP_LINE_ATTACHED "security/UtmpLineAttached="
-@@ -230,6 +231,7 @@ G_BEGIN_DECLS
- #define GDM_NOTIFY_GO "GO"
- #define GDM_NOTIFY_TWIDDLE_POINTER "TWIDDLE_POINTER"
- #define GDM_NOTIFY_RESET "RESET"
-+#define GDM_NOTIFY_TOKEN_LOGIN "TOKEN_LOGIN"
-
- G_END_DECLS
-
-Index: gdm-2.19.7/daemon/gdm-socket-protocol.h
-===================================================================
---- gdm-2.19.7.orig/daemon/gdm-socket-protocol.h
-+++ gdm-2.19.7/daemon/gdm-socket-protocol.h
-@@ -75,6 +75,7 @@
- #define GDM_INTERRUPT_CUSTOM_CMD 'M'
- #define GDM_INTERRUPT_CANCEL 'X'
- #define GDM_INTERRUPT_SELECT_LANG 'O'
-+#define GDM_INTERRUPT_TOKEN_LOGIN '$'
-
- /* List delimiter for config file lists */
- #define GDM_DELIMITER_MODULES ":"
-Index: gdm-2.19.7/daemon/slave.c
-===================================================================
---- gdm-2.19.7.orig/daemon/slave.c
-+++ gdm-2.19.7/daemon/slave.c
-@@ -143,6 +143,8 @@ static gboolean do_configurator =
- static gboolean do_cancel = FALSE; /* If this is true, go back to
- username entry & unselect
- face browser (if present) */
-+static gboolean do_token_login = FALSE; /* if true, auth with smart
-+ cards */
- static gboolean do_restart_greeter = FALSE; /* If this is true, whack the
- greeter and try again */
- static gboolean restart_greeter_now = FALSE; /* Restart_greeter_when the
-@@ -2079,11 +2081,14 @@ play_login_sound (const char *sound_file
- static void
- gdm_slave_wait_for_login (void)
- {
-+ gboolean verify_token;
- const char *successsound;
- char *username;
- g_free (login_user);
- login_user = NULL;
-
-+ do_token_login = FALSE;
-+
- /* Chat with greeter */
- while (login_user == NULL) {
- /* init to a sane value */
-@@ -2107,9 +2112,14 @@ gdm_slave_wait_for_login (void)
- gdm_debug ("gdm_slave_wait_for_login: In loop");
- username = d->preset_user;
- d->preset_user = NULL;
-+
-+ verify_token = do_token_login;
-+ do_token_login = FALSE;
-+
- login_user = gdm_verify_user (d /* the display */,
-- username /* username */,
-- TRUE /* allow retry */);
-+ verify_token ? "" : username /* username */,
-+ TRUE /* allow retry */,
-+ verify_token);
- g_free (username);
-
- gdm_debug ("gdm_slave_wait_for_login: end verify for '%s'",
-@@ -5395,6 +5405,11 @@ gdm_slave_handle_usr2_message (void)
- gdm_fdprintf (slave_fd_out, "%c%c%c\n",
- STX, BEL, GDM_INTERRUPT_CANCEL);
- }
-+ } else if (strcmp (&s[1], GDM_NOTIFY_TOKEN_LOGIN) == 0) {
-+ if (!d->logged_in && d->attached) {
-+ gdm_fdprintf (slave_fd_out, "%c%c%c\n",
-+ STX, BEL, GDM_INTERRUPT_TOKEN_LOGIN);
-+ }
- }
- } else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
- gdm_got_ack = TRUE;
-@@ -5595,6 +5610,10 @@ check_for_interruption (const char *msg)
- do_restart_greeter = TRUE;
- }
- break;
-+ case GDM_INTERRUPT_TOKEN_LOGIN:
-+ do_token_login = TRUE;
-+ do_cancel = TRUE;
-+ break;
- default:
- break;
- }
-Index: gdm-2.19.7/daemon/verify-crypt.c
-===================================================================
---- gdm-2.19.7.orig/daemon/verify-crypt.c
-+++ gdm-2.19.7/daemon/verify-crypt.c
-@@ -101,7 +101,8 @@ print_cant_auth_errbox (void)
- gchar *
- gdm_verify_user (GdmDisplay *d,
- const char *username,
-- gboolean allow_retry)
-+ gboolean allow_retry,
-+ gboolean token)
- {
- gchar *login, *passwd, *ppasswd;
- struct passwd *pwent;
-Index: gdm-2.19.7/daemon/verify.h
-===================================================================
---- gdm-2.19.7.orig/daemon/verify.h
-+++ gdm-2.19.7/daemon/verify.h
-@@ -26,7 +26,8 @@
- * the timed login timer */
- gchar *gdm_verify_user (GdmDisplay *d,
- const char *username,
-- gboolean allow_retry);
-+ gboolean allow_retry,
-+ gboolean token);
- void gdm_verify_cleanup (GdmDisplay *d);
- void gdm_verify_check (void);
- void gdm_verify_select_user (const char *user);
-Index: gdm-2.19.7/daemon/verify-pam.c
-===================================================================
---- gdm-2.19.7.orig/daemon/verify-pam.c
-+++ gdm-2.19.7/daemon/verify-pam.c
-@@ -878,7 +878,8 @@ log_to_audit_system(const char *login,
- gchar *
- gdm_verify_user (GdmDisplay *d,
- const char *username,
-- gboolean allow_retry)
-+ gboolean allow_retry,
-+ gboolean verify_token)
- {
- gint pamerr = 0;
- struct passwd *pwent = NULL;
-@@ -938,8 +939,10 @@ gdm_verify_user (GdmDisplay *d,
- * PAM Stacks, in case one display should use a different
- * authentication mechanism than another display.
- */
-- pam_stack = gdm_daemon_config_get_value_string_per_display (GDM_KEY_PAM_STACK,
-- (char *)d->name);
-+ pam_stack = gdm_daemon_config_get_value_string_per_display (verify_token ?
-+ GDM_KEY_PAM_STACK_SMARTCARD :
-+ GDM_KEY_PAM_STACK,
-+ (char *)d->name);
-
- if ( ! create_pamh (d, pam_stack, login, &pamc, d->name, &pamerr)) {
- if (started_timer)
-Index: gdm-2.19.7/daemon/verify-shadow.c
-===================================================================
---- gdm-2.19.7.orig/daemon/verify-shadow.c
-+++ gdm-2.19.7/daemon/verify-shadow.c
-@@ -102,7 +102,8 @@ print_cant_auth_errbox (void)
- gchar *
- gdm_verify_user (GdmDisplay *d,
- const char *username,
-- gboolean allow_retry)
-+ gboolean allow_retry,
-+ gboolean token)
- {
- gchar *login, *passwd, *ppasswd;
- struct passwd *pwent;
diff --git a/gdm-2.19.3-token-login2.patch b/gdm-2.19.3-token-login2.patch
deleted file mode 100644
index f511e42..0000000
--- a/gdm-2.19.3-token-login2.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- daemon/slave.c.orig 2007-08-30 18:32:03.526283719 +0000
-+++ daemon/slave.c 2007-08-30 18:32:27.536993351 +0000
-@@ -2104,6 +2104,7 @@
- gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
- login_user = gdm_verify_user (d,
- (*pwent)->pw_name,
-+ FALSE,
- FALSE);
- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
-
diff --git a/gdm-2.20.0-wait-for-restart.patch b/gdm-2.20.0-wait-for-restart.patch
deleted file mode 100644
index 0d48f27..0000000
--- a/gdm-2.20.0-wait-for-restart.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -upr gdm-2.20.0-pre/daemon/gdm.c gdm-2.20.0-post/daemon/gdm.c
---- gdm-2.20.0-pre/daemon/gdm.c 2007-09-21 15:48:23.000000000 -0500
-+++ gdm-2.20.0-post/daemon/gdm.c 2007-09-21 16:25:47.000000000 -0500
-@@ -715,7 +715,7 @@ halt_machine (void)
- #ifdef __linux__
- change_to_first_and_clear (FALSE);
- #endif /* __linux */
--
-+ sleep (20);
- }
- }
-
-@@ -735,7 +735,7 @@ restart_machine (void)
- #ifdef __linux__
- change_to_first_and_clear (TRUE);
- #endif /* __linux */
--
-+ sleep (20);
- }
- }
-
diff --git a/gdm-2.20.4.tar.bz2 b/gdm-2.20.4.tar.bz2
deleted file mode 100644
index 4091057..0000000
--- a/gdm-2.20.4.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:adb64d70d9c2bf87a2f67520f40bba29bd76726baee21440f8b24cf3f6336061
-size 3906797
diff --git a/gdm-2.21.5-vt7-temporary-hack.patch b/gdm-2.21.5-vt7-temporary-hack.patch
new file mode 100644
index 0000000..00585c2
--- /dev/null
+++ b/gdm-2.21.5-vt7-temporary-hack.patch
@@ -0,0 +1,12 @@
+diff -upr gdm-2.21.5-pre/daemon/gdm-server.c gdm-2.21.5-post/daemon/gdm-server.c
+--- gdm-2.21.5-pre/daemon/gdm-server.c 2007-11-19 15:53:12.000000000 -0600
++++ gdm-2.21.5-post/daemon/gdm-server.c 2008-01-21 20:18:31.000000000 -0600
+@@ -306,6 +306,8 @@ gdm_server_resolve_command_line (GdmServ
+
+ if (vtarg != NULL && ! gotvtarg) {
+ argv[len++] = g_strdup (vtarg);
++ } else if (!query_in_arglist && !gotvtarg) {
++ argv[len++] = g_strdup ("vt7");
+ }
+
+ argv[len++] = NULL;
diff --git a/gdm-2.21.9-no-fatal-warnings.patch b/gdm-2.21.9-no-fatal-warnings.patch
new file mode 100644
index 0000000..3dfd111
--- /dev/null
+++ b/gdm-2.21.9-no-fatal-warnings.patch
@@ -0,0 +1,16 @@
+diff -upr gdm-2.21.9-pre/common/gdm-common.c gdm-2.21.9-post/common/gdm-common.c
+--- gdm-2.21.9-pre/common/gdm-common.c 2008-03-28 18:18:23.000000000 -0600
++++ gdm-2.21.9-post/common/gdm-common.c 2008-03-28 18:35:03.000000000 -0600
+@@ -57,10 +57,12 @@ gdm_is_version_unstable (void)
+ void
+ gdm_set_fatal_warnings_if_unstable (void)
+ {
++#if 0
+ if (gdm_is_version_unstable ()) {
+ g_setenv ("G_DEBUG", "fatal_criticals", FALSE);
+ g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL);
+ }
++#endif
+ }
+
+ int
diff --git a/gdm-2.22.0.tar.bz2 b/gdm-2.22.0.tar.bz2
new file mode 100644
index 0000000..11a9251
--- /dev/null
+++ b/gdm-2.22.0.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ff4bef13b15a1c54895eabcc37f7046fa13ca3bc449c9541c38e6993930fffa
+size 2244663
diff --git a/gdm-2.8.0.0-any-hostname-auth.patch b/gdm-2.8.0.0-any-hostname-auth.patch
deleted file mode 100644
index ab7d896..0000000
--- a/gdm-2.8.0.0-any-hostname-auth.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- gdm-2.16.1/daemon/slave.c
-+++ gdm-2.16.1/daemon/slave.c
-@@ -3438,6 +3438,12 @@
- g_setenv ("SHELL", pwent->pw_shell, TRUE);
- g_unsetenv ("MAIL"); /* Unset $MAIL for broken shells */
-
-+ if (d->hostname != NULL && d->hostname [0] != '\0') {
-+ g_setenv ("XAUTHLOCALHOSTNAME", d->hostname, TRUE);
-+ } else {
-+ g_setenv ("XAUTHLOCALHOSTNAME", "localhost", TRUE);
-+ }
-+
- if (d->type == TYPE_STATIC) {
- g_setenv ("GDM_XSERVER_LOCATION", "local", TRUE);
- } else if (d->type == TYPE_XDMCP) {
diff --git a/gdm-2.8.0.0-list-users.patch b/gdm-2.8.0.0-list-users.patch
deleted file mode 100644
index c96630c..0000000
--- a/gdm-2.8.0.0-list-users.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdm-2.16.1/config/gdm.conf.in
-+++ gdm-2.16.1/config/gdm.conf.in
-@@ -362,7 +362,7 @@
- # large numbers of users and this feature should not be used in such
- # environments. The setting of IncludeAll does nothing if Include is set to a
- # non-empty value.
--#IncludeAll=false
-+IncludeAll=true
- # If user or user.png exists in this dir it will be used as his picture.
- #GlobalFaceDir=@datadir@/pixmaps/faces/
-
diff --git a/gdm-2.8.0.0-setup-no-flicker.patch b/gdm-2.8.0.0-setup-no-flicker.patch
deleted file mode 100644
index 7ee4753..0000000
--- a/gdm-2.8.0.0-setup-no-flicker.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Index: gdm-2.17.7/gui/gdmsetup.c
-===================================================================
---- gdm-2.17.7.orig/gui/gdmsetup.c
-+++ gdm-2.17.7/gui/gdmsetup.c
-@@ -60,6 +60,8 @@ static gboolean GdmUserChangesUnsaved;
- static gboolean GdmRandomFromSelectedChangesWarn;
- static gint last_selected_command;
-
-+#define LONG_TIMEOUT G_MAXINT
-+
- /* set the DOING_GDM_DEVELOPMENT env variable if you want to
- * search for the glade file in the current dir and not the system
- * install dir, better then something you have to change
-@@ -1575,7 +1577,7 @@ combobox_timeout (GtkWidget *combo_box)
- static void
- toggle_toggled (GtkWidget *toggle)
- {
-- run_timeout (toggle, 200, toggle_timeout);
-+ run_timeout (toggle, LONG_TIMEOUT, toggle_timeout);
- }
-
- static void
-@@ -1615,13 +1617,13 @@ list_selection_toggled (GtkWidget *toggl
- gtk_widget_set_sensitive (widget, FALSE);
- }
-
-- run_timeout (toggle, 200, toggle_timeout);
-+ run_timeout (toggle, LONG_TIMEOUT, toggle_timeout);
- }
-
- static void
- intspin_changed (GtkWidget *spin)
- {
-- run_timeout (spin, 500, intspin_timeout);
-+ run_timeout (spin, LONG_TIMEOUT, intspin_timeout);
- }
-
- static void
-@@ -3270,7 +3272,7 @@ greeter_toggle_timeout (GtkWidget *toggl
- static void
- greeter_toggle_toggled (GtkWidget *toggle)
- {
-- run_timeout (toggle, 500, greeter_toggle_timeout);
-+ run_timeout (toggle, LONG_TIMEOUT, greeter_toggle_timeout);
- }
-
- static void
-@@ -3614,7 +3616,7 @@ greeter_entry_untranslate_timeout (GtkWi
- static void
- greeter_entry_untranslate_changed (GtkWidget *entry)
- {
-- run_timeout (entry, 500, greeter_entry_untranslate_timeout);
-+ run_timeout (entry, LONG_TIMEOUT, greeter_entry_untranslate_timeout);
- }
-
- static void
diff --git a/gdm-2.8.0.7-bg-4.patch b/gdm-2.8.0.7-bg-4.patch
deleted file mode 100644
index 7f1b2ed..0000000
--- a/gdm-2.8.0.7-bg-4.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-diff -upr gdm-2.19.3-pre/gui/greeter/greeter.c gdm-2.19.3-post/gui/greeter/greeter.c
---- gdm-2.19.3-pre/gui/greeter/greeter.c 2007-06-17 13:07:26.000000000 -0400
-+++ gdm-2.19.3-post/gui/greeter/greeter.c 2007-07-31 21:19:51.000000000 -0400
-@@ -1239,6 +1239,7 @@ main (int argc, char *argv[])
- int r;
- gint i;
- gchar *key_string = NULL;
-+ GdkColor black = { 0, 0, 0, 0 };
-
- if (g_getenv ("DOING_GDM_DEVELOPMENT") != NULL)
- DOING_GDM_DEVELOPMENT = TRUE;
-@@ -1348,6 +1349,7 @@ main (int argc, char *argv[])
- }
-
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-+ gtk_widget_modify_bg (window, GTK_STATE_NORMAL, &black);
-
- if G_UNLIKELY (DOING_GDM_DEVELOPMENT) {
- g_signal_connect (G_OBJECT (window), "key_press_event",
-@@ -1364,6 +1366,7 @@ main (int argc, char *argv[])
- gtk_window_set_default_size (GTK_WINDOW (window),
- gdm_wm_screen.width,
- gdm_wm_screen.height);
-+ gtk_widget_modify_bg (canvas, GTK_STATE_NORMAL, &black);
- gtk_container_add (GTK_CONTAINER (window), canvas);
-
- /*
-diff -upr gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c
---- gdm-2.19.3-pre/gui/greeter/greeter_canvas_item.c 2007-06-17 13:07:26.000000000 -0400
-+++ gdm-2.19.3-post/gui/greeter/greeter_canvas_item.c 2007-07-31 21:18:11.000000000 -0400
-@@ -24,6 +24,12 @@
- #include
- #include
-
-+#include
-+#include
-+
-+#include
-+#include
-+
- #include "gdm.h"
- #include "gdmcommon.h"
- #include "gdmconfig.h"
-@@ -258,6 +264,127 @@ greeter_item_run_button_action_callback
- gtk_widget_grab_focus (entry);
- }
-
-+/* Create a persistent pixmap. We create a separate display
-+ * and set the closedown mode on it to RetainPermanent
-+ */
-+static GdkPixmap *
-+make_root_pixmap (GdkScreen *screen, gint width, gint height)
-+{
-+ Display *display;
-+ char *display_name;
-+ Pixmap result;
-+ GdkPixmap *gdk_pixmap;
-+ int screen_num;
-+
-+ screen_num = gdk_screen_get_number (screen);
-+
-+ gdk_flush ();
-+
-+ display_name = DisplayString (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
-+
-+ display = XOpenDisplay (display_name);
-+
-+ if (display == NULL) {
-+ g_warning ("Unable to open display '%s' when setting background pixmap\n",
-+ (display_name) ? display_name : "NULL");
-+ return NULL;
-+ }
-+
-+ XSetCloseDownMode (display, RetainPermanent);
-+
-+ result = XCreatePixmap (display,
-+ RootWindow (display, screen_num),
-+ width, height,
-+ DefaultDepth (display, screen_num));
-+
-+ XCloseDisplay (display);
-+
-+ gdk_pixmap = gdk_pixmap_foreign_new (result);
-+ gdk_drawable_set_colormap (GDK_DRAWABLE (gdk_pixmap),
-+ gdk_drawable_get_colormap (gdk_screen_get_root_window (screen)));
-+
-+ return gdk_pixmap;
-+}
-+
-+/* Set the root pixmap, and properties pointing to it. We
-+ * do this atomically with XGrabServer to make sure that
-+ * we won't leak the pixmap if somebody else it setting
-+ * it at the same time. (This assumes that they follow the
-+ * same conventions we do)
-+ */
-+static gboolean
-+set_root_pixmap (GdkPixmap *pixmap)
-+{
-+ Atom type;
-+ gulong nitems, bytes_after;
-+ gint format;
-+ guchar *data_esetroot;
-+ Pixmap pixmap_id;
-+ Display *display;
-+ GdkScreen *screen;
-+ int screen_num;
-+
-+ screen = (GdkScreen *) g_object_get_data (G_OBJECT (pixmap),
-+ "gdkscreen");
-+
-+ screen_num = gdk_screen_get_number (screen);
-+
-+ if (pixmap != NULL)
-+ pixmap_id = GDK_WINDOW_XWINDOW (pixmap);
-+ else
-+ pixmap_id = 0;
-+
-+ display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
-+
-+ XGrabServer (display);
-+
-+ XGetWindowProperty (display, RootWindow (display, screen_num),
-+ XInternAtom (display, "ESETROOT_PMAP_ID", False),
-+ 0L, 1L, False, XA_PIXMAP,
-+ &type, &format, &nitems, &bytes_after,
-+ &data_esetroot);
-+
-+ if (type == XA_PIXMAP) {
-+ if (format == 32 && nitems == 1) {
-+ Pixmap old_pixmap;
-+
-+ old_pixmap = *((Pixmap *) data_esetroot);
-+
-+ if (pixmap != NULL && old_pixmap != pixmap_id)
-+ XKillClient (display, old_pixmap);
-+ else if (pixmap == NULL)
-+ pixmap_id = old_pixmap;
-+ }
-+
-+ XFree (data_esetroot);
-+ }
-+
-+ if (pixmap != NULL) {
-+ XChangeProperty (display, RootWindow (display, screen_num),
-+ XInternAtom (display, "ESETROOT_PMAP_ID", FALSE),
-+ XA_PIXMAP, 32, PropModeReplace,
-+ (guchar *) &pixmap_id, 1);
-+ XChangeProperty (display, RootWindow (display, screen_num),
-+ XInternAtom (display, "_XROOTPMAP_ID", FALSE),
-+ XA_PIXMAP, 32, PropModeReplace,
-+ (guchar *) &pixmap_id, 1);
-+
-+ XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
-+ pixmap_id);
-+ } else if (pixmap == NULL) {
-+ XDeleteProperty (display, RootWindow (display, screen_num),
-+ XInternAtom (display, "ESETROOT_PMAP_ID", FALSE));
-+ XDeleteProperty (display, RootWindow (display, screen_num),
-+ XInternAtom (display, "_XROOTPMAP_ID", FALSE));
-+ }
-+
-+ XClearWindow (display, RootWindow (display, screen_num));
-+ XUngrabServer (display);
-+ XFlush (display);
-+
-+ return FALSE;
-+}
-+
- void
- greeter_item_create_canvas_item (GreeterItemInfo *item)
- {
-@@ -355,12 +482,53 @@ greeter_item_create_canvas_item (Greeter
- }
-
- if (item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL] != NULL)
-+ {
-+ static int bg_set = 1; /* disabled */
-+
- item->item = gnome_canvas_item_new (group,
- GNOME_TYPE_CANVAS_PIXBUF,
- "x", (gdouble) x1,
- "y", (gdouble) y1,
- "pixbuf", item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL],
- NULL);
-+
-+ if (!bg_set)
-+ {
-+ GdkPixmap *pixmap;
-+ GdkPixbuf *pixbuf;
-+ GdkScreen *screen;
-+ GdkGC *gc;
-+ gint width, height;
-+
-+ screen = gtk_widget_get_screen (GTK_WIDGET (canvas));
-+
-+ pixbuf = item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL];
-+
-+ width = gdk_pixbuf_get_width (pixbuf);
-+ height = gdk_pixbuf_get_height (pixbuf);
-+
-+ pixmap = make_root_pixmap (screen, width, height);
-+
-+ gc = gdk_gc_new (GDK_DRAWABLE (pixmap));
-+
-+ gdk_draw_pixbuf (GDK_DRAWABLE (pixmap),
-+ gc,
-+ pixbuf,
-+ 0, 0, 0, 0,
-+ width,
-+ height,
-+ GDK_RGB_DITHER_NORMAL,
-+ 0, 0);
-+
-+ g_object_set_data (G_OBJECT (pixmap), "gdkscreen", screen);
-+
-+ g_timeout_add (1000, set_root_pixmap, pixmap);
-+
-+ g_object_unref (gc);
-+
-+ bg_set = 1;
-+ }
-+ }
- break;
- case GREETER_ITEM_TYPE_LABEL:
- text = gdm_common_expand_text (item->data.text.orig_text);
diff --git a/gdm-2.8.0.7-domain-entry.patch b/gdm-2.8.0.7-domain-entry.patch
deleted file mode 100644
index a12dc67..0000000
--- a/gdm-2.8.0.7-domain-entry.patch
+++ /dev/null
@@ -1,856 +0,0 @@
-diff -upr gdm-2.19.5-pre/configure.ac gdm-2.19.5-post/configure.ac
---- gdm-2.19.5-pre/configure.ac 2007-07-30 13:51:49.000000000 -0500
-+++ gdm-2.19.5-post/configure.ac 2007-08-16 15:31:56.000000000 -0500
-@@ -902,6 +902,10 @@ AC_SUBST(GDMPREFETCH)
- AC_SUBST(GDMPREFETCHLIST)
- AC_SUBST(GDMPREFETCHCMD)
-
-+GDM_SCRATCH_DIR="${localstatedir}/gdm"
-+AC_DEFINE_UNQUOTED(GDM_SCRATCH_DIR, "$GDM_SCRATCH_DIR", [GDM scratch dir])
-+AC_SUBST(GDM_SCRATCH_DIR)
-+
- AC_ARG_ENABLE(secureremote,
- [ --enable-secureremote=[yes/no] Enable to offer a secure X connection through ssh [default=no]],,
- enable_secureremote=no)
-diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h
---- gdm-2.19.5-pre/daemon/gdm-daemon-config-entries.h 2007-07-30 13:51:14.000000000 -0500
-+++ gdm-2.19.5-post/daemon/gdm-daemon-config-entries.h 2007-08-16 15:42:57.000000000 -0500
-@@ -185,6 +185,7 @@ typedef enum {
- GDM_ID_GRAPHICAL_THEME_RAND,
- GDM_ID_GRAPHICAL_THEME_DIR,
- GDM_ID_GRAPHICAL_THEMED_COLOR,
-+ GDM_ID_SHOW_DOMAIN,
- GDM_ID_INFO_MSG_FILE,
- GDM_ID_INFO_MSG_FONT,
- GDM_ID_PRE_FETCH_PROGRAM,
-@@ -465,6 +466,7 @@ static const GdmConfigEntry gdm_daemon_c
- { GDM_CONFIG_GROUP_GREETER, "SoundOnLoginFile", GDM_CONFIG_VALUE_STRING, "", GDM_ID_SOUND_ON_LOGIN_FILE },
- { GDM_CONFIG_GROUP_GREETER, "SoundOnLoginSuccessFile", GDM_CONFIG_VALUE_STRING, "", GDM_ID_SOUND_ON_LOGIN_SUCCESS_FILE },
- { GDM_CONFIG_GROUP_GREETER, "SoundOnLoginFailureFile", GDM_CONFIG_VALUE_STRING, "", GDM_ID_SOUND_ON_LOGIN_FAILURE_FILE },
-+ { GDM_CONFIG_GROUP_GREETER, "ShowDomain", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_SHOW_DOMAIN },
- { GDM_CONFIG_GROUP_DAEMON, "SoundProgram", GDM_CONFIG_VALUE_STRING, SOUND_PROGRAM, GDM_ID_SOUND_PROGRAM },
-
- { GDM_CONFIG_GROUP_CHOOSER, "ScanTime", GDM_CONFIG_VALUE_INT, "4", GDM_ID_SCAN_TIME },
-diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
---- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-07-30 13:51:14.000000000 -0500
-+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-16 15:31:56.000000000 -0500
-@@ -175,6 +175,7 @@ G_BEGIN_DECLS
- #define GDM_KEY_GRAPHICAL_THEME_RAND "greeter/GraphicalThemeRand=false"
- #define GDM_KEY_GRAPHICAL_THEME_DIR "greeter/GraphicalThemeDir=" DATADIR "/gdm/themes/"
- #define GDM_KEY_GRAPHICAL_THEMED_COLOR "greeter/GraphicalThemedColor=#76848F"
-+#define GDM_KEY_SHOW_DOMAIN "greeter/ShowDomain=false"
- #define GDM_KEY_INFO_MSG_FILE "greeter/InfoMsgFile="
- #define GDM_KEY_INFO_MSG_FONT "greeter/InfoMsgFont="
- #define GDM_KEY_PRE_FETCH_PROGRAM "greeter/PreFetchProgram="
-@@ -217,6 +218,7 @@ G_BEGIN_DECLS
- #define GDM_NOTIFY_TIMED_LOGIN_DELAY "TimedLoginDelay" /* */
- #define GDM_NOTIFY_TIMED_LOGIN_ENABLE "TimedLoginEnable" /* */
- #define GDM_NOTIFY_DISALLOW_TCP "DisallowTCP" /* */
-+#define GDM_NOTIFY_SHOW_DOMAIN "ShowDomain" /* */
- #define GDM_NOTIFY_SOUND_ON_LOGIN_FILE "SoundOnLoginFile" /* */
- #define GDM_NOTIFY_SOUND_ON_LOGIN_SUCCESS_FILE "SoundOnLoginSuccessFile" /* */
- #define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* */
-diff -upr gdm-2.19.5-pre/daemon/verify-pam.c gdm-2.19.5-post/daemon/verify-pam.c
---- gdm-2.19.5-pre/daemon/verify-pam.c 2007-07-30 13:51:14.000000000 -0500
-+++ gdm-2.19.5-post/daemon/verify-pam.c 2007-08-16 15:31:56.000000000 -0500
-@@ -78,6 +78,8 @@ static unsigned auth_retries;
-
- /* this is another hack */
- static gboolean did_we_ask_for_password = FALSE;
-+static gboolean is_account_disabled = FALSE;
-+static gboolean is_account_expired = FALSE;
-
- static char *selected_user = NULL;
-
-@@ -469,6 +471,7 @@ perhaps_translate_message (const char *m
- g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
- g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
- g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
-+ g_hash_table_insert (hash, "Your account is disabled. Please contact your system administrator", _("Your account is disabled. Please contact your system administrator"));
- g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
- g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
- g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
-@@ -537,8 +540,8 @@ gdm_verify_pam_conv (int num_msg, struct
- gdm_log_init ();
-
- for (replies = 0; replies < num_msg; replies++) {
-- const char *m = (*msg)[replies].msg;
-- m = perhaps_translate_message (m);
-+ const char *m_untranslated = (*msg)[replies].msg;
-+ const char *m = perhaps_translate_message (m_untranslated);
-
- switch ((*msg)[replies].msg_style) {
-
-@@ -594,6 +597,12 @@ gdm_verify_pam_conv (int num_msg, struct
-
- case PAM_ERROR_MSG:
- /* PAM sent a message that should displayed to the user */
-+
-+ if (strstr (m_untranslated, "account is disabled"))
-+ is_account_disabled = TRUE;
-+ else if (strstr (m_untranslated, "account has expired"))
-+ is_account_expired = TRUE;
-+
- gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
- reply[replies].resp_retcode = PAM_SUCCESS;
- reply[replies].resp = NULL;
-@@ -1295,7 +1304,11 @@ gdm_verify_user (GdmDisplay *d,
- /* Only give this message if we actually asked for
- password, otherwise it would be silly to say that
- the password may have been wrong */
-- if (did_we_ask_for_password) {
-+ if (is_account_disabled) {
-+ basemsg = _("\nYour account has been disabled.");
-+ } else if (is_account_expired) {
-+ basemsg = _("\nYour account has expired.");
-+ } else if (did_we_ask_for_password) {
- basemsg = _("\nIncorrect username or password. "
- "Letters must be typed in the correct "
- "case.");
-@@ -1304,7 +1317,7 @@ gdm_verify_user (GdmDisplay *d,
- "Letters must be typed in the correct "
- "case.");
- }
-- if (is_capslock) {
-+ if (is_capslock && !is_account_disabled && !is_account_expired) {
- msg = g_strconcat (basemsg, " ",
- _("Caps Lock is on."),
- NULL);
-@@ -1416,6 +1429,9 @@ gdm_verify_setup_user (GdmDisplay *d, co
-
- /* Start authentication session */
- did_we_ask_for_password = FALSE;
-+ is_account_disabled = FALSE;
-+ is_account_expired = FALSE;
-+
- if ((pamerr = pam_authenticate (pamh, null_tok)) != PAM_SUCCESS) {
- if (gdm_slave_action_pending ()) {
- gdm_error (_("Couldn't authenticate user"));
-diff -upr gdm-2.19.5-pre/gui/gdmchooser.c gdm-2.19.5-post/gui/gdmchooser.c
---- gdm-2.19.5-pre/gui/gdmchooser.c 2007-07-30 13:51:03.000000000 -0500
-+++ gdm-2.19.5-post/gui/gdmchooser.c 2007-08-16 15:31:56.000000000 -0500
-@@ -1799,6 +1799,7 @@ gdm_read_config (void)
- gdm_config_get_bool (GDM_KEY_ALLOW_ADD);
- gdm_config_get_bool (GDM_KEY_BROADCAST);
- gdm_config_get_bool (GDM_KEY_MULTICAST);
-+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
-
- gdmcomm_comm_bulk_stop ();
-
-@@ -1828,6 +1829,7 @@ gdm_reread_config (int sig, gpointer dat
- gdm_config_reload_int (GDM_KEY_SCAN_TIME) ||
- gdm_config_reload_bool (GDM_KEY_ALLOW_ADD) ||
- gdm_config_reload_bool (GDM_KEY_BROADCAST) ||
-+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
- gdm_config_reload_bool (GDM_KEY_MULTICAST)) {
-
- if (RUNNING_UNDER_GDM) {
-diff -upr gdm-2.19.5-pre/gui/gdmlogin.c gdm-2.19.5-post/gui/gdmlogin.c
---- gdm-2.19.5-pre/gui/gdmlogin.c 2007-07-30 13:51:02.000000000 -0500
-+++ gdm-2.19.5-post/gui/gdmlogin.c 2007-08-16 15:31:56.000000000 -0500
-@@ -2910,6 +2910,7 @@ gdm_read_config (void)
- gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE);
- gdm_config_get_bool (GDM_KEY_TITLE_BAR);
- gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
-+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
-
- /* Keys not to include in reread_config */
- gdm_config_get_bool (GDM_KEY_LOCK_POSITION);
-@@ -2992,6 +2993,7 @@ gdm_reread_config (int sig, gpointer dat
- gdm_config_reload_bool (GDM_KEY_SYSTEM_MENU) ||
- gdm_config_reload_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
- gdm_config_reload_bool (GDM_KEY_TITLE_BAR) ||
-+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
- gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
-
- /* Set busy cursor */
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter.c gdm-2.19.5-post/gui/greeter/greeter.c
---- gdm-2.19.5-pre/gui/greeter/greeter.c 2007-08-16 15:31:59.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter.c 2007-08-16 15:31:56.000000000 -0500
-@@ -63,6 +63,13 @@
- #include "greeter_session.h"
- #include "greeter_system.h"
-
-+static GtkWidget *hig_dialog_new (GtkWindow *parent,
-+ GtkDialogFlags flags,
-+ GtkMessageType type,
-+ GtkButtonsType buttons,
-+ const gchar *primary_message,
-+ const gchar *secondary_message);
-+
- gboolean DOING_GDM_DEVELOPMENT = FALSE;
-
- GtkWidget *window;
-@@ -153,6 +160,53 @@ get_random_theme ()
- return theme;
- }
-
-+static gchar *errdlg_message = NULL;
-+
-+static void
-+show_errdlg_messages (void)
-+{
-+ gchar *tmp;
-+ GtkWidget *dlg;
-+
-+ if (!errdlg_message)
-+ return;
-+
-+ /* we should be now fine for focusing new windows */
-+ gdm_wm_focus_new_windows (TRUE);
-+
-+ tmp = ve_locale_to_utf8 (errdlg_message);
-+ dlg = hig_dialog_new (NULL /* parent */,
-+ GTK_DIALOG_MODAL /* flags */,
-+ GTK_MESSAGE_ERROR,
-+ GTK_BUTTONS_OK,
-+ tmp,
-+ "");
-+ g_free (tmp);
-+ g_free (errdlg_message);
-+ errdlg_message = NULL;
-+
-+ gdm_wm_center_window (GTK_WINDOW (dlg));
-+
-+ gdm_wm_no_login_focus_push ();
-+ gtk_dialog_run (GTK_DIALOG (dlg));
-+ gtk_widget_destroy (dlg);
-+ gdm_wm_no_login_focus_pop ();
-+}
-+
-+static void
-+append_errdlg_message (const gchar *message)
-+{
-+ if (errdlg_message) {
-+ gchar *tmp;
-+
-+ tmp = g_strjoin ("\n\n", errdlg_message, message, NULL);
-+ g_free (errdlg_message);
-+ errdlg_message = tmp;
-+ } else {
-+ errdlg_message = g_strdup (message);
-+ }
-+}
-+
- static gboolean
- greeter_ctrl_handler (GIOChannel *source,
- GIOCondition cond,
-@@ -243,6 +297,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_PROMPT:
-+ show_errdlg_messages ();
-+
- tmp = ve_locale_to_utf8 (args);
- if (tmp != NULL && strcmp (tmp, _("Username:")) == 0) {
- gdm_common_login_sound (gdm_config_get_string (GDM_KEY_SOUND_PROGRAM),
-@@ -265,6 +321,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_NOECHO:
-+ show_errdlg_messages ();
-+
- tmp = ve_locale_to_utf8 (args);
-
- greeter_probably_login_prompt = FALSE;
-@@ -284,6 +342,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_MSG:
-+ show_errdlg_messages ();
-+
- tmp = ve_locale_to_utf8 (args);
- greeter_item_pam_message (tmp);
- g_free (tmp);
-@@ -292,6 +352,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_ERRBOX:
-+ show_errdlg_messages ();
-+
- tmp = ve_locale_to_utf8 (args);
- greeter_item_pam_error (tmp);
- g_free (tmp);
-@@ -301,30 +363,17 @@ process_operation (guchar op_code,
- break;
-
- case GDM_ERRDLG:
-- /* we should be now fine for focusing new windows */
-- gdm_wm_focus_new_windows (TRUE);
--
- tmp = ve_locale_to_utf8 (args);
-- dlg = hig_dialog_new (NULL /* parent */,
-- GTK_DIALOG_MODAL /* flags */,
-- GTK_MESSAGE_ERROR,
-- GTK_BUTTONS_OK,
-- tmp,
-- "");
-+ append_errdlg_message (tmp);
- g_free (tmp);
-
-- gdm_wm_center_window (GTK_WINDOW (dlg));
--
-- gdm_wm_no_login_focus_push ();
-- gtk_dialog_run (GTK_DIALOG (dlg));
-- gtk_widget_destroy (dlg);
-- gdm_wm_no_login_focus_pop ();
--
- printf ("%c\n", STX);
- fflush (stdout);
- break;
-
- case GDM_SESS:
-+ show_errdlg_messages ();
-+
- tmp = ve_locale_to_utf8 (args);
- session = gdm_session_lookup (tmp, &lookup_status);
- if (lookup_status != SESSION_LOOKUP_SUCCESS) {
-@@ -392,10 +441,14 @@ process_operation (guchar op_code,
- break;
-
- case GDM_LANG:
-+ show_errdlg_messages ();
-+
- gdm_lang_op_lang (args);
- break;
-
- case GDM_SSESS:
-+ show_errdlg_messages ();
-+
- if (gdm_get_save_session () == GTK_RESPONSE_YES)
- printf ("%cY\n", STX);
- else
-@@ -405,6 +458,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_SLANG:
-+ show_errdlg_messages ();
-+
- gdm_lang_op_slang (args);
- break;
-
-@@ -447,6 +502,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_QUIT:
-+ show_errdlg_messages ();
-+
- greeter_item_timed_stop ();
-
- if (require_quarter) {
-@@ -563,6 +620,8 @@ process_operation (guchar op_code,
- break;
-
- case GDM_SAVEDIE:
-+ show_errdlg_messages ();
-+
- /* Set busy cursor */
- gdm_common_setup_cursor (GDK_WATCH);
-
-@@ -582,6 +641,8 @@ process_operation (guchar op_code,
- break;
-
- default:
-+ show_errdlg_messages ();
-+
- gdm_common_fail_greeter ("Unexpected greeter command received: '%c'", op_code);
- break;
- }
-@@ -918,6 +979,7 @@ gdm_read_config (void)
- gdm_config_get_bool (GDM_KEY_SOUND_ON_LOGIN);
- gdm_config_get_bool (GDM_KEY_DEFAULT_WELCOME);
- gdm_config_get_bool (GDM_KEY_DEFAULT_REMOTE_WELCOME);
-+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
- gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
- gdm_config_get_bool (GDM_KEY_BROWSER);
-
-@@ -1007,6 +1069,7 @@ greeter_reread_config (int sig, gpointer
- gdm_config_reload_bool (GDM_KEY_SHOW_LAST_SESSION) ||
- gdm_config_reload_bool (GDM_KEY_ALLOW_ROOT) ||
- gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
-+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
- gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES) ||
- gdm_config_reload_bool (GDM_KEY_BROWSER)) {
-
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter_canvas_item.c gdm-2.19.5-post/gui/greeter/greeter_canvas_item.c
---- gdm-2.19.5-pre/gui/greeter/greeter_canvas_item.c 2007-08-16 15:31:59.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter_canvas_item.c 2007-08-16 15:31:56.000000000 -0500
-@@ -20,6 +20,8 @@
-
- #include
- #include
-+#include
-+#include
- #include
- #include
- #include
-@@ -46,6 +48,9 @@
- #include "greeter_canvas_text.h"
- #include "greeter_parser.h"
-
-+#define WBINFO_DOMAINS_MAX 64
-+#define WBINFO_READ_MAX 256
-+
- /* Keep track of buttons so they can be set sensitive/insensitive */
- GtkButton *gtk_ok_button = NULL;
- GtkButton *gtk_start_again_button = NULL;
-@@ -395,6 +400,189 @@ set_root_pixmap (GdkPixmap *pixmap)
- return FALSE;
- }
-
-+gboolean greeter_can_do_domain_login = FALSE;
-+gchar *greeter_domain_separator = NULL;
-+
-+gboolean greeter_wbinfo_was_run = FALSE;
-+gboolean greeter_wbinfo_is_running = FALSE;
-+GPid greeter_wbinfo_pid;
-+GIOChannel *greeter_wbinfo_channel;
-+GString *greeter_wbinfo_output;
-+
-+static void
-+wbinfo_end (void)
-+{
-+ GreeterItemInfo *domain_entry_item_info;
-+ GtkWidget *domain_entry = NULL;
-+ gint wbinfo_status = 0;
-+ gchar *wbinfo_output;
-+ GtkListStore *domain_list_store;
-+ gchar **tokens = NULL;
-+ gchar *own_domain = NULL;
-+ gint select_index = 0;
-+ GtkTreeIter iter;
-+ const gchar *text;
-+ gint i;
-+
-+ if (!greeter_wbinfo_is_running)
-+ return;
-+
-+ greeter_wbinfo_is_running = FALSE;
-+ waitpid (greeter_wbinfo_pid, &wbinfo_status, 0);
-+ g_spawn_close_pid (greeter_wbinfo_pid);
-+
-+ wbinfo_output = g_string_free (greeter_wbinfo_output, FALSE);
-+
-+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
-+ if (domain_entry_item_info && domain_entry_item_info->item &&
-+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item)) {
-+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
-+ } else {
-+ g_free (wbinfo_output);
-+ return;
-+ }
-+
-+ /* Set up the domain store model */
-+
-+ domain_list_store = gtk_list_store_new (1, G_TYPE_STRING);
-+
-+ /* The "local login" entry */
-+
-+ gtk_list_store_append (domain_list_store, &iter);
-+ gtk_list_store_set (domain_list_store, &iter,
-+ 0, _(""),
-+ -1);
-+
-+ /* Process wbinfo output, if any */
-+
-+ if (WEXITSTATUS (wbinfo_status) == 0 && wbinfo_output && *wbinfo_output) {
-+ /* The first line of output should be the domain separator,
-+ * and any remaining lines are trusted domains. */
-+ tokens = g_strsplit_set (wbinfo_output, "\n\r", WBINFO_DOMAINS_MAX + 1);
-+ }
-+
-+ g_free (wbinfo_output);
-+ g_free (greeter_domain_separator);
-+ greeter_domain_separator = NULL;
-+
-+ if (tokens && tokens [0]) {
-+ greeter_can_do_domain_login = TRUE;
-+ greeter_domain_separator = g_strdup (tokens [0]);
-+
-+ own_domain = tokens [1];
-+
-+ /* Generate a sorted list of domains for the domain selector combo. */
-+
-+ g_qsort_with_data (&tokens [1],
-+ g_strv_length (tokens) - 1,
-+ sizeof (gchar *),
-+ (GCompareDataFunc) g_ascii_strcasecmp,
-+ NULL);
-+
-+ for (i = 1; tokens [i]; i++) {
-+ /* Ensure no blank entries */
-+ if (!strlen (tokens [i]))
-+ continue;
-+
-+ gtk_list_store_append (domain_list_store, &iter);
-+ gtk_list_store_set (domain_list_store, &iter,
-+ 0, tokens [i],
-+ -1);
-+
-+ if (tokens [i] == own_domain)
-+ select_index = i;
-+ }
-+
-+ } else {
-+ greeter_can_do_domain_login = FALSE;
-+ }
-+
-+ if (tokens)
-+ g_strfreev (tokens);
-+
-+ /* Assign model and default selection to widget */
-+
-+ gtk_combo_box_set_model (GTK_COMBO_BOX (domain_entry),
-+ GTK_TREE_MODEL (domain_list_store));
-+ gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (domain_entry), 0);
-+
-+ /* Default to our own domain, but only if the entry was empty */
-+ text = gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (domain_entry))));
-+ if (!text || !*text)
-+ gtk_combo_box_set_active (GTK_COMBO_BOX (domain_entry), select_index);
-+
-+ g_object_unref (domain_list_store);
-+}
-+
-+static gboolean
-+wbinfo_on_output (GIOChannel *channel, GIOCondition condition, gpointer data)
-+{
-+ gchar buf [WBINFO_READ_MAX];
-+ gsize bytes_read;
-+ GIOStatus status;
-+
-+ status = g_io_channel_read_chars (channel, buf, WBINFO_READ_MAX, &bytes_read, NULL);
-+
-+ if (bytes_read < 1) {
-+ wbinfo_end ();
-+ return FALSE;
-+ }
-+
-+ g_string_append_len (greeter_wbinfo_output, buf, bytes_read);
-+ return TRUE;
-+}
-+
-+static void
-+wbinfo_begin (void)
-+{
-+ gchar *wbinfo_args [] = { "wbinfo", "--separator", "--own-domain", "--trusted-domains", NULL };
-+ gchar *wbinfo_env [] = { NULL };
-+ gint wbinfo_stdout_fd;
-+
-+ if (greeter_wbinfo_was_run)
-+ return;
-+
-+ greeter_wbinfo_was_run = TRUE;
-+
-+ /* Lame guess, in case winbind isn't running, but gets started later. This
-+ * is a workaround for testing and broken systems. */
-+ greeter_domain_separator = g_strdup ("\\");
-+
-+ if (!g_spawn_async_with_pipes ("/",
-+ wbinfo_args,
-+ wbinfo_env,
-+ G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL |
-+ G_SPAWN_DO_NOT_REAP_CHILD,
-+ NULL /* child setup function */,
-+ NULL /* child setup user_data */,
-+ &greeter_wbinfo_pid,
-+ NULL /* &wbinfo_stdin_fd */,
-+ &wbinfo_stdout_fd,
-+ NULL /* &wbinfo_stderr_fd */,
-+ NULL))
-+ return;
-+
-+ greeter_wbinfo_is_running = TRUE;
-+ greeter_wbinfo_output = g_string_new ("");
-+
-+ fcntl (wbinfo_stdout_fd, F_SETFL, O_NONBLOCK);
-+
-+ greeter_wbinfo_channel = g_io_channel_unix_new (wbinfo_stdout_fd);
-+ g_io_channel_set_encoding (greeter_wbinfo_channel, NULL, NULL);
-+ g_io_channel_set_close_on_unref (greeter_wbinfo_channel, TRUE);
-+ g_io_add_watch (greeter_wbinfo_channel, G_IO_IN | G_IO_HUP, wbinfo_on_output, NULL);
-+ g_io_channel_unref (greeter_wbinfo_channel); /* Watch holds remaining ref */
-+}
-+
-+static gboolean
-+deselect_entry_text (GtkEntry *entry)
-+{
-+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, 0);
-+ gtk_editable_set_position (GTK_EDITABLE (entry), -1);
-+
-+ return FALSE;
-+}
-+
- void
- greeter_item_create_canvas_item (GreeterItemInfo *item)
- {
-@@ -686,6 +874,48 @@ greeter_item_create_canvas_item (Greeter
-
- break;
-
-+ case GREETER_ITEM_TYPE_COMBO_BOX_ENTRY:
-+ entry = gtk_combo_box_entry_new ();
-+
-+ gtk_widget_set_name (entry, "domain-entry");
-+
-+ gtk_entry_set_has_frame (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (entry))), FALSE);
-+ gtk_widget_modify_font (entry, item->data.text.fonts[GREETER_ITEM_STATE_NORMAL]);
-+
-+ get_gdk_color_from_rgb (&c, item->data.text.colors[GREETER_ITEM_STATE_NORMAL]);
-+ gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &c);
-+
-+ item->item = gnome_canvas_item_new (group,
-+ GNOME_TYPE_CANVAS_WIDGET,
-+ "widget", entry,
-+ "x", x1,
-+ "y", y1,
-+ "height", (double)rect.height,
-+ "width", (double)rect.width,
-+ NULL);
-+
-+ /* cursor blinking is evil on remote displays, don't do it forever */
-+ gdm_common_setup_blinking_entry (gtk_bin_get_child (GTK_BIN (entry)));
-+
-+ /* Recall the last used domain */
-+ if (g_file_get_contents (GDM_SCRATCH_DIR "/last_domain", &text, NULL, NULL)) {
-+ GtkWidget *temp_entry;
-+
-+ temp_entry = gtk_bin_get_child (GTK_BIN (entry));
-+
-+ gtk_entry_set_text (GTK_ENTRY (temp_entry), text);
-+
-+ /* The set text gets selected. It looks bad. Avoid that. */
-+ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) deselect_entry_text, temp_entry, NULL);
-+
-+ g_free (text);
-+ }
-+
-+ /* Query wbinfo */
-+ wbinfo_begin ();
-+
-+ break;
-+
- case GREETER_ITEM_TYPE_LIST:
- /* Note a list type must be setup later and we will add the list store
- * to it then, depending on the type. Likely userlist is the
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter_configuration.h gdm-2.19.5-post/gui/greeter/greeter_configuration.h
---- gdm-2.19.5-pre/gui/greeter/greeter_configuration.h 2007-07-30 13:51:01.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter_configuration.h 2007-08-16 15:31:56.000000000 -0500
-@@ -65,6 +65,7 @@ extern gchar *GdmSoundOnLoginFailureFile
- extern gboolean GdmSoundOnLoginReady;
- extern gboolean GdmSoundOnLoginSuccess;
- extern gboolean GdmSoundOnLoginFailure;
-+extern gboolean GdmShowDomain;
-
- extern gboolean GDM_IS_LOCAL;
- extern gboolean DOING_GDM_DEVELOPMENT;
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter.h gdm-2.19.5-post/gui/greeter/greeter.h
---- gdm-2.19.5-pre/gui/greeter/greeter.h 2007-07-30 13:51:01.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter.h 2007-08-16 15:31:56.000000000 -0500
-@@ -27,6 +27,9 @@ extern GtkWidget *window;
-
- extern gboolean greeter_probably_login_prompt;
-
-+extern gboolean greeter_can_do_domain_login;
-+extern gchar *greeter_domain_separator;
-+
- void greeter_ignore_buttons (gboolean val);
-
- #endif
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item.c gdm-2.19.5-post/gui/greeter/greeter_item.c
---- gdm-2.19.5-pre/gui/greeter/greeter_item.c 2007-07-30 13:51:01.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter_item.c 2007-08-16 15:57:07.000000000 -0500
-@@ -234,6 +234,11 @@ greeter_item_is_visible (GreeterItemInfo
- return FALSE;
- }
-
-+ if ( ! gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN) &&
-+ (info->show_type != NULL &&
-+ g_str_has_prefix (info->show_type, "domain")))
-+ return FALSE;
-+
- if (( ! gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
- ve_string_empty (gdm_config_get_string (GDM_KEY_TIMED_LOGIN)) ||
- NULL == g_getenv("GDM_TIMED_LOGIN_OK")) &&
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item.h gdm-2.19.5-post/gui/greeter/greeter_item.h
---- gdm-2.19.5-pre/gui/greeter/greeter_item.h 2007-07-30 13:51:01.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter_item.h 2007-08-16 15:31:56.000000000 -0500
-@@ -47,7 +47,8 @@ enum _GreeterItemType {
- GREETER_ITEM_TYPE_LABEL,
- GREETER_ITEM_TYPE_ENTRY,
- GREETER_ITEM_TYPE_LIST,
-- GREETER_ITEM_TYPE_BUTTON
-+ GREETER_ITEM_TYPE_BUTTON,
-+ GREETER_ITEM_TYPE_COMBO_BOX_ENTRY
- };
-
- /* Make sure to adjust the bitfield in the structure if
-@@ -154,7 +155,7 @@ struct _GreeterItemInfo {
- union {
- /* Note: we want to have alphas, colors and have_color coincide for
- * all types that have it */
--#define GREETER_ITEM_TYPE_IS_TEXT(info) ((info)->item_type == GREETER_ITEM_TYPE_LABEL || (info)->item_type == GREETER_ITEM_TYPE_ENTRY)
-+#define GREETER_ITEM_TYPE_IS_TEXT(info) ((info)->item_type == GREETER_ITEM_TYPE_LABEL || (info)->item_type == GREETER_ITEM_TYPE_ENTRY || (info)->item_type == GREETER_ITEM_TYPE_COMBO_BOX_ENTRY)
- struct {
- guint8 alphas[GREETER_ITEM_STATE_MAX];
- guint32 colors[GREETER_ITEM_STATE_MAX];
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter_item_pam.c gdm-2.19.5-post/gui/greeter/greeter_item_pam.c
---- gdm-2.19.5-pre/gui/greeter/greeter_item_pam.c 2007-07-30 13:51:01.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter_item_pam.c 2007-08-16 15:31:56.000000000 -0500
-@@ -25,6 +25,7 @@
-
- #include "gdm-common.h"
- #include "gdm-socket-protocol.h"
-+#include "gdm-daemon-config-keys.h"
-
- #include "greeter.h"
- #include "greeter_item.h"
-@@ -37,6 +38,7 @@
- #include "gdm.h"
- #include "gdmwm.h"
- #include "gdmcommon.h"
-+#include "gdmconfig.h"
-
- static gboolean messages_to_give = FALSE;
- static gboolean replace_msg = TRUE;
-@@ -116,11 +118,29 @@ set_text (GreeterItemInfo *info, const c
- info->item);
- }
-
-+static void
-+domain_entry_set_sensitive (gboolean sensitive)
-+{
-+ if (gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN))
-+ {
-+ GreeterItemInfo *domain_entry_item_info;
-+ GtkWidget *domain_entry = NULL;
-+
-+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
-+ if (domain_entry_item_info && domain_entry_item_info->item &&
-+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item))
-+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
-+
-+ if (domain_entry)
-+ gtk_widget_set_sensitive (domain_entry, sensitive);
-+ }
-+}
-+
- void
- greeter_item_pam_login (GtkEntry *entry, GreeterItemInfo *info)
- {
- const char *str;
-- char *tmp;
-+ char *tmp, *tmp2;
- GreeterItemInfo *error_info;
-
- if (gtk_ok_button != NULL)
-@@ -152,6 +172,7 @@ greeter_item_pam_login (GtkEntry *entry,
- }
-
- gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE);
-+ domain_entry_set_sensitive (FALSE);
-
- /* clear the err_box */
- if (err_box_clear_handler > 0)
-@@ -166,6 +187,33 @@ greeter_item_pam_login (GtkEntry *entry,
- }
-
- tmp = ve_locale_from_utf8 (str);
-+
-+ /* Prepend the domain if applicable */
-+ if (greeter_probably_login_prompt && gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN))
-+ {
-+ GreeterItemInfo *domain_entry_item_info;
-+ GtkWidget *domain_entry = NULL;
-+
-+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
-+ if (domain_entry_item_info && domain_entry_item_info->item &&
-+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item))
-+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
-+
-+ if (domain_entry && (str = gtk_combo_box_get_active_text (GTK_COMBO_BOX (domain_entry))) && *str &&
-+ strcmp (str, _("")))
-+ {
-+ g_file_set_contents (GDM_SCRATCH_DIR "/last_domain", str, strlen (str), NULL);
-+
-+ tmp2 = g_strdup_printf ("%s%s%s", str, greeter_domain_separator, tmp);
-+ g_free (tmp);
-+ tmp = tmp2;
-+ }
-+ else
-+ {
-+ g_remove (GDM_SCRATCH_DIR "/last_domain");
-+ }
-+ }
-+
- printf ("%c%s\n", STX, tmp);
- fflush (stdout);
- g_free (tmp);
-@@ -224,6 +272,7 @@ greeter_item_pam_setup (void)
-
- /* initially insensitive */
- gtk_widget_set_sensitive (entry, FALSE);
-+ domain_entry_set_sensitive (FALSE);
- }
-
- g_signal_connect (entry, "activate",
-@@ -288,6 +337,9 @@ greeter_item_pam_prompt (const char *mes
- gtk_entry_set_max_length (GTK_ENTRY (entry), entry_len);
- gtk_entry_set_text (GTK_ENTRY (entry), "");
- gtk_widget_grab_focus (entry);
-+
-+ /* Domain selector should only be accessed when entering the user name */
-+ domain_entry_set_sensitive (entry_visible);
- }
-
- messages_to_give = FALSE;
-diff -upr gdm-2.19.5-pre/gui/greeter/greeter_parser.c gdm-2.19.5-post/gui/greeter/greeter_parser.c
---- gdm-2.19.5-pre/gui/greeter/greeter_parser.c 2007-07-30 13:51:01.000000000 -0500
-+++ gdm-2.19.5-post/gui/greeter/greeter_parser.c 2007-08-16 15:31:56.000000000 -0500
-@@ -402,6 +402,11 @@ parse_stock (xmlNodePtr node,
- g_free (*translated_text);
- *translated_text = g_strdup (_("Username:"));
- }
-+ else if (g_ascii_strcasecmp ((char *) prop, "domain-label") == 0)
-+ {
-+ g_free (*translated_text);
-+ *translated_text = g_strdup (_("Domain:"));
-+ }
- else if (g_ascii_strcasecmp ((char *) prop, "ok") == 0)
- {
- g_free (*translated_text);
-@@ -1649,6 +1654,15 @@ parse_entry (xmlNodePtr node,
- }
-
- static gboolean
-+parse_combo_box_entry (xmlNodePtr node,
-+ GreeterItemInfo *info,
-+ GError **error)
-+{
-+ /* A ComboBoxEntry is just an Entry with a dropdown list */
-+ return parse_entry (node, info, error);
-+}
-+
-+static gboolean
- parse_items (xmlNodePtr node,
- GList **items_out,
- GreeterItemInfo *parent,
-@@ -1704,6 +1718,8 @@ parse_items (xmlNodePtr node,
- item_type = GREETER_ITEM_TYPE_LIST;
- else if (strcmp ((char *) type, "button") == 0)
- item_type = GREETER_ITEM_TYPE_BUTTON;
-+ else if (strcmp ((char *) type, "combo-box-entry") == 0)
-+ item_type = GREETER_ITEM_TYPE_COMBO_BOX_ENTRY;
- else
- {
- g_set_error (error,
-@@ -1750,6 +1766,9 @@ parse_items (xmlNodePtr node,
- case GREETER_ITEM_TYPE_BUTTON:
- res = parse_gtkbutton (child, info, error);
- break;
-+ case GREETER_ITEM_TYPE_COMBO_BOX_ENTRY:
-+ res = parse_combo_box_entry (child, info, error);
-+ break;
- default:
- g_set_error (error,
- GREETER_PARSER_ERROR,
diff --git a/gdm-2.8.0.7-halt-needs-root.patch b/gdm-2.8.0.7-halt-needs-root.patch
deleted file mode 100644
index 735d2a5..0000000
--- a/gdm-2.8.0.7-halt-needs-root.patch
+++ /dev/null
@@ -1,568 +0,0 @@
-diff -upr gdm-2.19.7-pre/daemon/gdm-daemon-config-entries.h gdm-2.19.7-post/daemon/gdm-daemon-config-entries.h
---- gdm-2.19.7-pre/daemon/gdm-daemon-config-entries.h 2007-09-14 00:07:36.000000000 -0500
-+++ gdm-2.19.7-post/daemon/gdm-daemon-config-entries.h 2007-09-14 00:07:32.000000000 -0500
-@@ -110,6 +110,7 @@ typedef enum {
- GDM_ID_ALLOW_ROOT,
- GDM_ID_ALLOW_REMOTE_ROOT,
- GDM_ID_ALLOW_REMOTE_AUTOLOGIN,
-+ GDM_ID_SECURE_SHUTDOWN,
- GDM_ID_USER_MAX_FILE,
- GDM_ID_RELAX_PERM,
- GDM_ID_CHECK_DIR_OWNER,
-@@ -360,6 +361,7 @@ static const GdmConfigEntry gdm_daemon_c
- { GDM_CONFIG_GROUP_SECURITY, "AllowRoot", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_ALLOW_ROOT },
- { GDM_CONFIG_GROUP_SECURITY, "AllowRemoteRoot", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_ALLOW_REMOTE_ROOT },
- { GDM_CONFIG_GROUP_SECURITY, "AllowRemoteAutoLogin", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_ALLOW_REMOTE_AUTOLOGIN },
-+ { GDM_CONFIG_GROUP_SECURITY, "SecureShutdown", GDM_CONFIG_VALUE_BOOL, "false", GDM_ID_SECURE_SHUTDOWN },
- { GDM_CONFIG_GROUP_SECURITY, "UserMaxFile", GDM_CONFIG_VALUE_INT, "65536", GDM_ID_USER_MAX_FILE },
- { GDM_CONFIG_GROUP_SECURITY, "RelaxPermissions", GDM_CONFIG_VALUE_INT, "0", GDM_ID_RELAX_PERM },
- { GDM_CONFIG_GROUP_SECURITY, "CheckDirOwner", GDM_CONFIG_VALUE_BOOL, "true", GDM_ID_CHECK_DIR_OWNER },
-diff -upr gdm-2.19.7-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.7-post/daemon/gdm-daemon-config-keys.h
---- gdm-2.19.7-pre/daemon/gdm-daemon-config-keys.h 2007-09-14 00:07:36.000000000 -0500
-+++ gdm-2.19.7-post/daemon/gdm-daemon-config-keys.h 2007-09-14 00:07:32.000000000 -0500
-@@ -98,6 +98,7 @@ G_BEGIN_DECLS
- #define GDM_KEY_ALLOW_ROOT "security/AllowRoot=true"
- #define GDM_KEY_ALLOW_REMOTE_ROOT "security/AllowRemoteRoot=false"
- #define GDM_KEY_ALLOW_REMOTE_AUTOLOGIN "security/AllowRemoteAutoLogin=false"
-+#define GDM_KEY_SECURE_SHUTDOWN "security/SecureShutdown=false"
- #define GDM_KEY_USER_MAX_FILE "security/UserMaxFile=65536"
- #define GDM_KEY_RELAX_PERM "security/RelaxPermissions=0"
- #define GDM_KEY_CHECK_DIR_OWNER "security/CheckDirOwner=true"
-@@ -208,6 +209,7 @@ G_BEGIN_DECLS
- #define GDM_NOTIFY_ALLOW_REMOTE_ROOT "AllowRemoteRoot" /* */
- #define GDM_NOTIFY_ALLOW_ROOT "AllowRoot" /* */
- #define GDM_NOTIFY_ALLOW_REMOTE_AUTOLOGIN "AllowRemoteAutoLogin" /* */
-+#define GDM_NOTIFY_SECURE_SHUTDOWN "SecureShutdown" /* */
- #define GDM_NOTIFY_SYSTEM_MENU "SystemMenu" /* */
- #define GDM_NOTIFY_CONFIG_AVAILABLE "ConfigAvailable" /* */
- #define GDM_NOTIFY_CHOOSER_BUTTON "ChooserButton" /* */
-diff -upr gdm-2.19.7-pre/daemon/gdm-socket-protocol.h gdm-2.19.7-post/daemon/gdm-socket-protocol.h
---- gdm-2.19.7-pre/daemon/gdm-socket-protocol.h 2007-08-27 11:08:20.000000000 -0500
-+++ gdm-2.19.7-post/daemon/gdm-socket-protocol.h 2007-09-14 00:07:32.000000000 -0500
-@@ -68,6 +68,8 @@
- /* Different login interruptions */
- #define GDM_INTERRUPT_TIMED_LOGIN 'T'
- #define GDM_INTERRUPT_CONFIGURE 'C'
-+#define GDM_INTERRUPT_HALT 'K'
-+#define GDM_INTERRUPT_REBOOT 'B'
- #define GDM_INTERRUPT_SUSPEND 'S'
- #define GDM_INTERRUPT_SELECT_USER 'U'
- #define GDM_INTERRUPT_LOGIN_SOUND 'L'
-diff -upr gdm-2.19.7-pre/daemon/slave.c gdm-2.19.7-post/daemon/slave.c
---- gdm-2.19.7-pre/daemon/slave.c 2007-09-14 00:07:36.000000000 -0500
-+++ gdm-2.19.7-post/daemon/slave.c 2007-09-14 00:08:08.000000000 -0500
-@@ -140,6 +140,8 @@ static gboolean do_timed_login =
- static gboolean do_configurator = FALSE; /* If this is true, login as
- * root and start the
- * configurator */
-+static gboolean do_system_halt = FALSE;
-+static gboolean do_system_reboot = FALSE;
- static gboolean do_cancel = FALSE; /* If this is true, go back to
- username entry & unselect
- face browser (if present) */
-@@ -2067,6 +2069,96 @@ play_login_sound (const char *sound_file
- return TRUE;
- }
-
-+static gboolean
-+get_root_auth (const gchar *message, struct passwd **pwent)
-+{
-+ gboolean oldAllowRoot;
-+
-+ /* clear any error */
-+ gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
-+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, message);
-+
-+ /* we always allow root for this */
-+ oldAllowRoot = gdm_daemon_config_get_value_bool (GDM_KEY_ALLOW_ROOT);
-+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
-+
-+ *pwent = getpwuid (0);
-+ if G_UNLIKELY (*pwent == NULL) {
-+ /* what? no "root" ?? */
-+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
-+ return FALSE; /* continue */
-+ }
-+
-+ gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
-+ login_user = gdm_verify_user (d,
-+ (*pwent)->pw_name,
-+ FALSE);
-+ gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
-+
-+ /* Clear message */
-+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
-+
-+ if G_UNLIKELY (do_restart_greeter) {
-+ g_free (login_user);
-+ login_user = NULL;
-+ do_restart_greeter = FALSE;
-+ restart_the_greeter ();
-+ return FALSE; /* continue */
-+ }
-+
-+ check_notifies_now ();
-+
-+ /* The wanker can't remember his password */
-+ if (login_user == NULL) {
-+ gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
-+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-+ return FALSE; /* continue */
-+ }
-+
-+ /* Wipe the login */
-+ g_free (login_user);
-+ login_user = NULL;
-+
-+ /* Note that this can still fall through to
-+ * the timed login if the user doesn't type in the
-+ * password fast enough and there is timed login
-+ * enabled */
-+ if (do_timed_login) {
-+ return FALSE; /* break; */
-+ }
-+
-+ /* The user is a wanker */
-+ if G_UNLIKELY (do_configurator || do_system_halt || do_system_reboot) {
-+ do_configurator = FALSE;
-+ do_system_halt = FALSE;
-+ do_system_reboot = FALSE;
-+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-+ return FALSE; /* continue */
-+ }
-+
-+ /* Now running as root */
-+
-+ /* Get the root pwent */
-+ *pwent = getpwuid (0);
-+
-+ if G_UNLIKELY (*pwent == NULL) {
-+ /* What? No "root" ?? This is not possible
-+ * since we logged in, but I'm paranoid */
-+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-+ return FALSE; /* continue */
-+ }
-+
-+ d->logged_in = TRUE;
-+ logged_in_uid = 0;
-+ logged_in_gid = 0;
-+ gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
-+ /* Note: nobody really logged in */
-+ gdm_slave_send_string (GDM_SOP_LOGIN, "");
-+
-+ return TRUE;
-+}
-+
- static void
- gdm_slave_wait_for_login (void)
- {
-@@ -2127,86 +2219,14 @@ gdm_slave_wait_for_login (void)
- do_configurator = FALSE;
- g_free (login_user);
- login_user = NULL;
-- /* clear any error */
-- gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
-- gdm_slave_greeter_ctl_no_ret
-- (GDM_MSG,
-- _("You must authenticate as root to run configuration."));
--
-- /* we always allow root for this */
-- oldAllowRoot = gdm_daemon_config_get_value_bool (GDM_KEY_ALLOW_ROOT);
-- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
--
-- pwent = getpwuid (0);
-- if G_UNLIKELY (pwent == NULL) {
-- /* what? no "root" ?? */
-- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-- continue;
-- }
--
-- gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, pwent->pw_name);
-- login_user = gdm_verify_user (d,
-- pwent->pw_name,
-- FALSE);
-- gdm_daemon_config_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
--
-- /* Clear message */
-- gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
--
-- if G_UNLIKELY (do_restart_greeter) {
-- g_free (login_user);
-- login_user = NULL;
-- do_restart_greeter = FALSE;
-- restart_the_greeter ();
-- continue;
-- }
--
-- check_notifies_now ();
--
-- /* The user can't remember his password */
-- if (login_user == NULL) {
-- gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
-- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-- continue;
-- }
--
-- /* Wipe the login */
-- g_free (login_user);
-- login_user = NULL;
-
-- /* Note that this can still fall through to
-- * the timed login if the user doesn't type in the
-- * password fast enough and there is timed login
-- * enabled */
-- if (do_timed_login) {
-- break;
-- }
-+ if (!get_root_auth (_("You must authenticate as root to run configuration."), &pwent)) {
-+ if (do_timed_login)
-+ break;
-
-- if G_UNLIKELY (do_configurator) {
-- do_configurator = FALSE;
-- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
-- /* Now running as root */
--
-- /* Get the root pwent */
-- pwent = getpwuid (0);
--
-- if G_UNLIKELY (pwent == NULL) {
-- /* What? No "root" ?? This is not possible
-- * since we logged in, but I'm paranoid */
-- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
-- continue;
-- }
--
-- d->logged_in = TRUE;
-- logged_in_uid = 0;
-- logged_in_gid = 0;
-- gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
-- /* Note: nobody really logged in */
-- gdm_slave_send_string (GDM_SOP_LOGIN, "");
--
- /* Disable the login screen, we don't want people to
- * log in in the meantime */
- gdm_slave_greeter_ctl_no_ret (GDM_DISABLE, "");
-@@ -2245,6 +2265,43 @@ gdm_slave_wait_for_login (void)
- continue;
- }
-
-+ if (do_system_halt) {
-+ struct passwd *pwent;
-+
-+ do_system_halt = FALSE;
-+ g_free (login_user);
-+ login_user = NULL;
-+
-+ if (!gdm_daemon_config_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
-+ get_root_auth (_("You must authenticate as root to shut down."), &pwent)) {
-+ exit_code_to_use = DISPLAY_HALT;
-+ term_quit ();
-+ } else if (do_timed_login) {
-+ break;
-+ }
-+
-+ continue;
-+ }
-+
-+ if (do_system_reboot) {
-+ struct passwd *pwent;
-+
-+ do_system_reboot = FALSE;
-+ g_free (login_user);
-+ login_user = NULL;
-+
-+ if (!gdm_daemon_config_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
-+ get_root_auth (_("You must authenticate as root to restart the computer."), &pwent)) {
-+ exit_code_to_use = DISPLAY_REBOOT;
-+ term_quit ();
-+ } else if (do_timed_login) {
-+ break;
-+ }
-+
-+ continue;
-+ }
-+
-+
- /* The user timed out into a timed login during the
- * conversation */
- if (do_timed_login) {
-@@ -5519,6 +5576,14 @@ check_for_interruption (const char *msg)
- /* Not interrupted, continue reading input,
- * just proxy this to the master server */
- return TRUE;
-+ case GDM_INTERRUPT_HALT:
-+ if (d->attached)
-+ do_system_halt = TRUE;
-+ break;
-+ case GDM_INTERRUPT_REBOOT:
-+ if (d->attached)
-+ do_system_reboot = TRUE;
-+ break;
- case GDM_INTERRUPT_LOGIN_SOUND:
- if (d->attached &&
- ! play_login_sound (gdm_daemon_config_get_value_string (GDM_KEY_SOUND_ON_LOGIN_FILE))) {
-@@ -5975,6 +6040,8 @@ gdm_slave_action_pending (void)
- {
- if (do_timed_login ||
- do_configurator ||
-+ do_system_halt ||
-+ do_system_reboot ||
- do_restart_greeter ||
- do_cancel)
- return FALSE;
-@@ -6258,6 +6325,8 @@ gdm_slave_handle_notify (const char *msg
- remanage_asap = TRUE;
- }
- }
-+ } else if (sscanf (msg, GDM_NOTIFY_SECURE_SHUTDOWN " %d", &val) == 1) {
-+ gdm_daemon_config_set_value_bool (GDM_KEY_SECURE_SHUTDOWN, val);
- }
- }
-
-diff -upr gdm-2.19.7-pre/gui/gdmlogin.c gdm-2.19.7-post/gui/gdmlogin.c
---- gdm-2.19.7-pre/gui/gdmlogin.c 2007-09-14 00:07:36.000000000 -0500
-+++ gdm-2.19.7-post/gui/gdmlogin.c 2007-09-14 00:07:32.000000000 -0500
-@@ -692,12 +692,15 @@ gdm_run_gdmconfig (GtkWidget *w, gpointe
- static void
- gdm_login_restart_handler (void)
- {
-- if (gdm_wm_warn_dialog (
-- _("Are you sure you want to restart the computer?"), "",
-- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
--
-- gdm_kill_thingies ();
-- _exit (DISPLAY_REBOOT);
-+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
-+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
-+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
-+ gdm_kill_thingies ();
-+ _exit (DISPLAY_REBOOT);
-+ }
-+ } else {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
-+ fflush (stdout);
- }
- }
-
-@@ -721,12 +724,15 @@ gdm_custom_cmd_handler (GtkWidget *widge
- static void
- gdm_login_halt_handler (void)
- {
-- if (gdm_wm_warn_dialog (
-- _("Are you sure you want to Shut Down the computer?"), "",
-- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
--
-- gdm_kill_thingies ();
-- _exit (DISPLAY_HALT);
-+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
-+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
-+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
-+ gdm_kill_thingies ();
-+ _exit (DISPLAY_HALT);
-+ }
-+ } else {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
-+ fflush (stdout);
- }
- }
-
-@@ -740,11 +746,14 @@ gdm_login_use_chooser_handler (void)
- static void
- gdm_login_suspend_handler (void)
- {
-- if (gdm_wm_warn_dialog (
-- _("Are you sure you want to suspend the computer?"), "",
-- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
--
-- /* suspend interruption */
-+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
-+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
-+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
-+ /* suspend interruption */
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
-+ fflush (stdout);
-+ }
-+ } else {
- printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
- fflush (stdout);
- }
-@@ -2913,6 +2922,7 @@ gdm_read_config (void)
- gdm_config_get_bool (GDM_KEY_TITLE_BAR);
- gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
- gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
-+ gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN);
-
- /* Keys not to include in reread_config */
- gdm_config_get_bool (GDM_KEY_LOCK_POSITION);
-@@ -2996,6 +3006,7 @@ gdm_reread_config (int sig, gpointer dat
- gdm_config_reload_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
- gdm_config_reload_bool (GDM_KEY_TITLE_BAR) ||
- gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
-+ gdm_config_reload_bool (GDM_KEY_SECURE_SHUTDOWN) ||
- gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES)) {
-
- /* Set busy cursor */
-diff -upr gdm-2.19.7-pre/gui/greeter/greeter.c gdm-2.19.7-post/gui/greeter/greeter.c
---- gdm-2.19.7-pre/gui/greeter/greeter.c 2007-09-14 00:07:36.000000000 -0500
-+++ gdm-2.19.7-post/gui/greeter/greeter.c 2007-09-14 00:07:32.000000000 -0500
-@@ -982,6 +982,7 @@ gdm_read_config (void)
- gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
- gdm_config_get_bool (GDM_KEY_ADD_GTK_MODULES);
- gdm_config_get_bool (GDM_KEY_BROWSER);
-+ gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN);
-
- /* Keys for custom commands */
- for (i = 0; i < GDM_CUSTOM_COMMAND_MAX; i++) {
-@@ -1071,6 +1072,7 @@ greeter_reread_config (int sig, gpointer
- gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
- gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN) ||
- gdm_config_reload_bool (GDM_KEY_ADD_GTK_MODULES) ||
-+ gdm_config_reload_bool (GDM_KEY_SECURE_SHUTDOWN) ||
- gdm_config_reload_bool (GDM_KEY_BROWSER)) {
-
- /* Set busy cursor */
-diff -upr gdm-2.19.7-pre/gui/greeter/greeter_item.c gdm-2.19.7-post/gui/greeter/greeter_item.c
---- gdm-2.19.7-pre/gui/greeter/greeter_item.c 2007-09-14 00:07:36.000000000 -0500
-+++ gdm-2.19.7-post/gui/greeter/greeter_item.c 2007-09-14 00:07:32.000000000 -0500
-@@ -214,15 +214,15 @@ greeter_item_is_visible (GreeterItemInfo
- strcmp (info->show_type, "system") == 0)
- return FALSE;
-
-- if (( ! sysmenu || ! GdmHaltFound) &&
-+ if (( ! sysmenu || ! GdmHaltFound || !gdm_common_is_action_available ("HALT")) &&
- (info->show_type != NULL &&
- strcmp (info->show_type, "halt") == 0))
- return FALSE;
-- if (( ! sysmenu || ! GdmRebootFound) &&
-+ if (( ! sysmenu || ! GdmRebootFound || !gdm_common_is_action_available ("REBOOT")) &&
- (info->show_type != NULL &&
- strcmp (info->show_type, "reboot") == 0))
- return FALSE;
-- if (( ! sysmenu || ! GdmSuspendFound) &&
-+ if (( ! sysmenu || ! GdmSuspendFound || !gdm_common_is_action_available ("SUSPEND")) &&
- (info->show_type != NULL &&
- strcmp (info->show_type, "suspend") == 0))
- return FALSE;
-diff -upr gdm-2.19.7-pre/gui/greeter/greeter_system.c gdm-2.19.7-post/gui/greeter/greeter_system.c
---- gdm-2.19.7-pre/gui/greeter/greeter_system.c 2007-08-27 11:07:52.000000000 -0500
-+++ gdm-2.19.7-post/gui/greeter/greeter_system.c 2007-09-14 00:07:32.000000000 -0500
-@@ -77,10 +77,15 @@ bin_exists (const char *command)
- static void
- query_greeter_restart_handler (void)
- {
-- if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
-- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
-- _exit (DISPLAY_REBOOT);
-- }
-+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
-+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
-+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
-+ _exit (DISPLAY_REBOOT);
-+ }
-+ } else {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
-+ fflush (stdout);
-+ }
- }
-
- static void
-@@ -101,27 +106,42 @@ query_greeter_custom_cmd_handler (GtkWid
- static void
- query_greeter_halt_handler (void)
- {
-- if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
-- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
-- _exit (DISPLAY_HALT);
-- }
-+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
-+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
-+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
-+ _exit (DISPLAY_HALT);
-+ }
-+ } else {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
-+ fflush (stdout);
-+ }
- }
-
- static void
- query_greeter_suspend_handler (void)
- {
-- if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
-- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
-- /* suspend interruption */
-- printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
-- fflush (stdout);
-- }
-+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
-+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
-+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
-+ /* suspend interruption */
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
-+ fflush (stdout);
-+ }
-+ } else {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
-+ fflush (stdout);
-+ }
- }
-
- static void
- greeter_restart_handler (void)
- {
-- _exit (DISPLAY_REBOOT);
-+ if (GDM_KEY_SECURE_SHUTDOWN) {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
-+ fflush (stdout);
-+ } else {
-+ _exit (DISPLAY_REBOOT);
-+ }
- }
-
- static void
-@@ -134,7 +154,12 @@ greeter_custom_cmd_handler (gint cmd_id)
- static void
- greeter_halt_handler (void)
- {
-- _exit (DISPLAY_HALT);
-+ if (GDM_KEY_SECURE_SHUTDOWN) {
-+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
-+ fflush (stdout);
-+ } else {
-+ _exit (DISPLAY_HALT);
-+ }
- }
-
- static void
-@@ -342,7 +367,7 @@ greeter_system_handler (GreeterItemInfo
- vbox,
- TRUE, TRUE, 0);
-
-- if (GdmHaltFound) {
-+ if (GdmHaltFound && gdm_common_is_action_available ("HALT")) {
- if (group_radio != NULL)
- radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
- halt_radio = gtk_radio_button_new_with_mnemonic (radio_group,
-@@ -360,7 +385,7 @@ greeter_system_handler (GreeterItemInfo
- gtk_widget_show (halt_radio);
- }
-
-- if (GdmRebootFound) {
-+ if (GdmRebootFound && gdm_common_is_action_available ("REBOOT")) {
- if (group_radio != NULL)
- radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
- restart_radio = gtk_radio_button_new_with_mnemonic (radio_group,
-@@ -404,7 +429,7 @@ greeter_system_handler (GreeterItemInfo
- }
- }
-
-- if (GdmSuspendFound) {
-+ if (GdmSuspendFound && gdm_common_is_action_available ("SUSPEND")) {
- if (group_radio != NULL)
- radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
- suspend_radio = gtk_radio_button_new_with_mnemonic (radio_group,
diff --git a/gdm-2.8.0.7-onlyshow-in-gnome.diff b/gdm-2.8.0.7-onlyshow-in-gnome.diff
deleted file mode 100644
index 820600f..0000000
--- a/gdm-2.8.0.7-onlyshow-in-gnome.diff
+++ /dev/null
@@ -1,18 +0,0 @@
-Index: gdm-2.18.1/gui/gdmflexiserver.desktop.in
-===================================================================
---- gdm-2.18.1.orig/gui/gdmflexiserver.desktop.in
-+++ gdm-2.18.1/gui/gdmflexiserver.desktop.in
-@@ -11,3 +11,4 @@ Categories=GNOME;GTK;System;
- X-GNOME-Bugzilla-Bugzilla=GNOME
- X-GNOME-Bugzilla-Product=gdm
- X-GNOME-Bugzilla-Component=general
-+OnlyShowIn=GNOME;
-Index: gdm-2.18.1/gui/gdmphotosetup.desktop.in
-===================================================================
---- gdm-2.18.1.orig/gui/gdmphotosetup.desktop.in
-+++ gdm-2.18.1/gui/gdmphotosetup.desktop.in
-@@ -13,3 +13,4 @@ Categories=GNOME;GTK;Settings;
- X-GNOME-Bugzilla-Bugzilla=GNOME
- X-GNOME-Bugzilla-Product=gdm
- X-GNOME-Bugzilla-Component=general
-+OnlyShowIn=GNOME;
diff --git a/gdm-2.8.0.7-some-info-in-dialog.patch b/gdm-2.8.0.7-some-info-in-dialog.patch
deleted file mode 100644
index 1521f20..0000000
--- a/gdm-2.8.0.7-some-info-in-dialog.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Only in gdm-2.19.5-pre/daemon: gdm-daemon-config-keys.h.orig
-Only in gdm-2.19.5-pre/daemon: slave.c.orig
-diff -upr gdm-2.19.5-pre/daemon/verify-pam.c gdm-2.19.5-post/daemon/verify-pam.c
---- gdm-2.19.5-pre/daemon/verify-pam.c 2007-08-03 19:47:48.000000000 -0500
-+++ gdm-2.19.5-post/daemon/verify-pam.c 2007-08-03 19:48:46.000000000 -0500
-@@ -610,7 +610,7 @@ gdm_verify_pam_conv (int num_msg, struct
-
- case PAM_TEXT_INFO:
- /* PAM sent a message that should displayed to the user */
-- gdm_slave_greeter_ctl_no_ret (GDM_MSG, m);
-+ gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
- reply[replies].resp_retcode = PAM_SUCCESS;
- reply[replies].resp = NULL;
- break;
-Only in gdm-2.19.5-pre/daemon: verify-pam.c.orig
-Only in gdm-2.19.5-post: error.18283
diff --git a/gdm-XKeepsCrashing-SaX2.patch b/gdm-XKeepsCrashing-SaX2.patch
deleted file mode 100644
index 03f757c..0000000
--- a/gdm-XKeepsCrashing-SaX2.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- config/XKeepsCrashing
-+++ config/XKeepsCrashing
-@@ -65,6 +65,7 @@
- #
- XCONFIGURATOR=
- for n in \
-+ /usr/sbin/SaX2 \
- /usr/bin/system-config-display \
- /usr/bin/redhat-config-xfree86 \
- /usr/sbin/XFdrake \
diff --git a/gdm-XKeepsCrashing-desktop-effects.patch b/gdm-XKeepsCrashing-desktop-effects.patch
deleted file mode 100644
index ed64f6a..0000000
--- a/gdm-XKeepsCrashing-desktop-effects.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- config/XKeepsCrashing 2007-12-15 17:31:14.000000000 -0500
-+++ config/XKeepsCrashing 2008-04-02 16:21:39.000000000 -0400
-@@ -134,6 +135,11 @@
- exit $?
- fi
-
-+if test `grep "DISPLAYMANAGER_XSERVER=" /etc/sysconfig/displaymanager | grep Xgl | wc -l` = "1" && test -x /usr/bin/gnome-xgl-switch; then
-+ /usr/bin/gnome-xgl-switch --disable-xgl
-+ MSG7=`gettextfunc "Desktop effects have been disabled."`
-+fi
-+
- clear
-
- # Note, dialog required, though this script could be fixed to not require it
diff --git a/gdm-bnc343858-buggy-intel-xinerama.patch b/gdm-bnc343858-buggy-intel-xinerama.patch
deleted file mode 100644
index 6c19c7b..0000000
--- a/gdm-bnc343858-buggy-intel-xinerama.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-Fix for https://bugzilla.novell.com/show_bug.cgi?id=343858
-
-2008-01-15 Federico Mena Quintero
-
- * gui/gdmwm.c (gdm_wm_screen_init): Use the GdkScreen functions to
- get the monitors, instead of sanitizing the monitor geometries
- here. This assumes an updated GTK+ package with the sanitization
- logic in GdkScreen.
-
-diff --git a/gui/gdmwm.c b/gui/gdmwm.c
-index 806b944..681de8a 100644
---- a/gui/gdmwm.c
-+++ b/gui/gdmwm.c
-@@ -84,6 +84,9 @@ static guint save_struts[4] = {0, 0, 0, 0};
- void
- gdm_wm_screen_init (int cur_screen_num)
- {
-+ GdkScreen *screen;
-+ int i;
-+
- if (g_getenv ("FAKE_XINERAMA_GDM") != NULL) {
- /* for testing Xinerama support on non-xinerama setups */
- gdm_wm_screen.x = 100;
-@@ -101,129 +104,18 @@ gdm_wm_screen_init (int cur_screen_num)
- return;
- }
-
-- {
--#ifdef HAVE_XFREE_XINERAMA
-- gboolean have_xinerama = FALSE;
--
-- gdk_flush ();
-- gdk_error_trap_push ();
-- have_xinerama = XineramaIsActive (GDK_DISPLAY ());
-- gdk_flush ();
-- if (gdk_error_trap_pop () != 0)
-- have_xinerama = FALSE;
--
-- if (have_xinerama) {
-- int screen_num, i;
-- XineramaScreenInfo *xscreens =
-- XineramaQueryScreens (GDK_DISPLAY (),
-- &screen_num);
--
--
-- if (screen_num <= 0) {
-- /* should NEVER EVER happen */
-- gdm_common_error ("Xinerama active, but <= 0 screens?");
-- gdm_wm_screen.x = 0;
-- gdm_wm_screen.y = 0;
-- gdm_wm_screen.width = gdk_screen_width ();
-- gdm_wm_screen.height = gdk_screen_height ();
--
-- gdm_wm_allscreens = g_new0 (GdkRectangle, 1);
-- gdm_wm_allscreens[0] = gdm_wm_screen;
-- gdm_wm_screens = 1;
-- return;
-- }
-+ screen = gdk_screen_get_default ();
-
-- if (screen_num <= cur_screen_num)
-- cur_screen_num = 0;
-+ gdm_wm_screens = gdk_screen_get_n_monitors (screen);
-
-- gdm_wm_allscreens = g_new0 (GdkRectangle, screen_num);
-- gdm_wm_screens = screen_num;
-+ gdm_wm_allscreens = g_new (GdkRectangle, gdm_wm_screens);
-+ for (i = 0; i < gdm_wm_screens; i++)
-+ gdk_screen_get_monitor_geometry (screen, i, gdm_wm_allscreens + i);
-
-- for (i = 0; i < screen_num; i++) {
-- gdm_wm_allscreens[i].x = xscreens[i].x_org;
-- gdm_wm_allscreens[i].y = xscreens[i].y_org;
-- gdm_wm_allscreens[i].width = xscreens[i].width;
-- gdm_wm_allscreens[i].height = xscreens[i].height;
--
-- if (cur_screen_num == i)
-- gdm_wm_screen = gdm_wm_allscreens[i];
-- }
--
-- XFree (xscreens);
-- } else
--#elif HAVE_SOLARIS_XINERAMA
-- gboolean have_xinerama = FALSE;
-- /* This code from GDK, Copyright (C) 2002 Sun Microsystems */
-- int opcode;
-- int firstevent;
-- int firsterror;
-- int n_monitors = 0;
--
-- gdk_flush ();
-- gdk_error_trap_push ();
-- have_xinerama = XQueryExtension (GDK_DISPLAY (),
-- "XINERAMA",
-- &opcode,
-- &firstevent,
-- &firsterror);
-- gdk_flush ();
-- if (gdk_error_trap_pop () != 0)
-- have_xinerama = FALSE;
--
-- if (have_xinerama) {
-- int i;
-- int result;
-- XRectangle monitors[MAXFRAMEBUFFERS];
-- unsigned char hints[16];
--
-- result = XineramaGetInfo (GDK_DISPLAY (), 0, monitors, hints, &n_monitors);
-- /* Yes I know it should be Success but the current implementation
-- * returns the num of monitor
-- */
--
-- if (result <= 0) {
-- /* should NEVER EVER happen */
-- gdm_common_error ("Xinerama active, but <= 0 screens?");
-- gdm_wm_screen.x = 0;
-- gdm_wm_screen.y = 0;
-- gdm_wm_screen.width = gdk_screen_width ();
-- gdm_wm_screen.height = gdk_screen_height ();
--
-- gdm_wm_allscreens = g_new0 (GdkRectangle, 1);
-- gdm_wm_allscreens[0] = gdm_wm_screen;
-- gdm_wm_screens = 1;
-- return;
-- }
--
-- if (n_monitors <= cur_screen_num)
-- cur_screen_num = 0;
--
-- gdm_wm_allscreens = g_new0 (GdkRectangle, n_monitors);
-- gdm_wm_screens = n_monitors;
--
-- for (i = 0; i < n_monitors; i++) {
-- gdm_wm_allscreens[i].x = monitors[i].x;
-- gdm_wm_allscreens[i].y = monitors[i].y;
-- gdm_wm_allscreens[i].width = monitors[i].width;
-- gdm_wm_allscreens[i].height = monitors[i].height;
--
-- if (cur_screen_num == i)
-- gdm_wm_screen = gdm_wm_allscreens[i];
-- }
--
-- } else
--#endif
-- {
-- gdm_wm_screen.x = 0;
-- gdm_wm_screen.y = 0;
-- gdm_wm_screen.width = gdk_screen_width ();
-- gdm_wm_screen.height = gdk_screen_height ();
-+ if (gdm_wm_screens < cur_screen_num)
-+ cur_screen_num = 0;
-
-- gdm_wm_allscreens = g_new0 (GdkRectangle, 1);
-- gdm_wm_allscreens[0] = gdm_wm_screen;
-- gdm_wm_screens = 1;
-- }
-- }
-+ gdm_wm_screen = gdm_wm_allscreens[cur_screen_num];
- }
-
- void
diff --git a/gdm-conf-custom-sysconfig.patch b/gdm-conf-custom-sysconfig.patch
deleted file mode 100644
index c35b369..0000000
--- a/gdm-conf-custom-sysconfig.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: config/gdm.conf-custom.in
-===================================================================
---- config/gdm.conf-custom.in.orig
-+++ config/gdm.conf-custom.in
-@@ -50,6 +50,12 @@
- #
- # NOTE: Lines that begin with "#" are considered comments.
- #
-+# SuSEconfig comments: Some of entries in this file are updated by SuSEconfig,
-+# whenever sysconfig entry change. To edit these entries, please use sysconfig
-+# (or never touch these sysconfig variables).
-+# Comment for each of this entry contains related /etc/sysconfig file and
-+# variable.
-+#
- # Have fun!
-
- [daemon]
diff --git a/gdm-conf.patch b/gdm-conf.patch
deleted file mode 100644
index c6855ce..0000000
--- a/gdm-conf.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- config/gdm.conf.in
-+++ config/gdm.conf.in
-@@ -86,10 +86,12 @@
- # This value will be overridden with the value from /etc/default/login if it
- # contains "ROOT=".
- #DefaultPath=@GDM_USER_PATH@
-+DefaultPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
- # Default path for root. The profile scripts will likely override this value.
- # This value will be overridden with the value from /etc/default/login if it
- # contains "SUROOT=".
- #RootPath=/sbin:/usr/sbin:@GDM_USER_PATH@
-+RootPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
-
- # If you are having trouble with using a single server for a long time and want
- # GDM to kill/restart the server, turn this on. On Solaris, this value is
-@@ -126,9 +128,14 @@
- #
- # Reboot, Halt and suspend commands, you can add different commands separated
- # by a semicolon. GDM will use the first one it can find.
--RebootCommand=@REBOOT_COMMAND@
--HaltCommand=@HALT_COMMAND@
--SuspendCommand=@SUSPEND_COMMAND@
-+#RebootCommand=@REBOOT_COMMAND@
-+#HaltCommand=@HALT_COMMAND@
-+#SuspendCommand=@SUSPEND_COMMAND@
-+
-+RebootCommand=/sbin/shutdown -r now
-+HaltCommand=/sbin/shutdown -h now
-+SuspendCommand=/usr/bin/powersave --suspend-to-disk
-+
-
- # The following options specify how GDM system commands are supported.
- #
-@@ -163,7 +170,7 @@
- # really a PATH style variable since 2.4.4.2 to allow actual interoperability
- # with KDM. Note that /Sessions is there for backwards
- # compatibility reasons with 2.4.4.x.
--#SessionDesktopDir=/etc/X11/sessions/:@dmconfdir@/Sessions/:@datadir@/gdm/BuiltInSessions/:@datadir@/xsessions/
-+SessionDesktopDir=/usr/share/xsessions/:@dmconfdir@/Sessions/:@datadir@/gdm/BuiltInSessions/
- # This is the default .desktop session. One of the ones in SessionDesktopDir
- #DefaultSession=gnome.desktop
- # Better leave this blank and HOME will be used. You can use syntax ~/ below
-@@ -339,11 +346,12 @@
- #PingIntervalSeconds=15
- # The port. 177 is the standard port so better keep it that way.
- #Port=177
--# Willing script, none is shipped and by default we'll send hostname system id.
--# But if you supply something here, the output of this script will be sent as
--# status of this host so that the chooser can display it. You could for
--# example send load, or mail details for some user, or some such.
--#Willing=@gdmconfdir@/Xwilling
-+# Willing script, none is shipped, X11's one is used by default. If
-+# none is present we'll send hostname system id. But if you supply
-+# something here, the output of this script will be sent as status of
-+# this host so that the chooser can display it. You could for example
-+# send load, or mail details for some user, or some such.
-+Willing=/etc/X11/xdm/Xwilling
-
- [gui]
- # The specific gtkrc file we use. It should be the full path to the gtkrc that
-@@ -397,7 +405,7 @@
- # User ID's less than the MinimalUID value will not be included in the face
- # browser or in the gdmselection list for Automatic/Timed login. They will not
- # be displayed regardless of the settings for Include and Exclude.
--#MinimalUID=100
-+MinimalUID=500
- # Users listed in Include will be included in the face browser and in the
- # gdmsetup selection list for Automatic/Timed login. Users should be separated
- # by commas.
-@@ -626,7 +634,7 @@
-
- [server-Standard]
- name=Standard server
--command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@
-+command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@ -br
- flexible=true
- # Indicates that the X server should be started at a different process
- # priority. Values can be any integer value accepted by the setpriority C
diff --git a/gdm-consolekit-helper-subdir.patch b/gdm-consolekit-helper-subdir.patch
new file mode 100644
index 0000000..7eff50a
--- /dev/null
+++ b/gdm-consolekit-helper-subdir.patch
@@ -0,0 +1,12 @@
+diff -upr gdm-2.22.0-pre/daemon/gdm-server.c gdm-2.22.0-post/daemon/gdm-server.c
+--- gdm-2.22.0-pre/daemon/gdm-server.c 2008-04-17 22:29:28.000000000 -0500
++++ gdm-2.22.0-post/daemon/gdm-server.c 2008-07-31 00:35:53.000000000 -0500
+@@ -125,7 +125,7 @@ _gdm_server_query_ck_for_display_device
+ g_return_val_if_fail (GDM_IS_SERVER (server), NULL);
+
+ error = NULL;
+- command = g_strdup_printf (LIBEXECDIR "/ck-get-x11-display-device --display %s",
++ command = g_strdup_printf (LIBEXECDIR "/ConsoleKit/ck-get-x11-display-device --display %s",
+ server->priv->display_name);
+
+ g_debug ("GdmServer: Running helper %s", command);
diff --git a/gdm-gdmsetup-rootonly.patch b/gdm-gdmsetup-rootonly.patch
deleted file mode 100644
index 5fb302a..0000000
--- a/gdm-gdmsetup-rootonly.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: gui/gdmsetup.desktop.in.in
-===================================================================
---- gui/gdmsetup.desktop.in.in.orig
-+++ gui/gdmsetup.desktop.in.in
-@@ -4,6 +4,7 @@ _Name=Login Window
- _Comment=Configure GDM login window appearance and behavior
- TryExec=@sbindir@/gdmsetup
- Exec=@sbindir@/gdmsetup
-+X-KDE-RootOnly=true
- Icon=gdmsetup
- StartupNotify=true
- Terminal=false
diff --git a/gdm-gdmsetup.patch b/gdm-gdmsetup.patch
deleted file mode 100644
index bf3188a..0000000
--- a/gdm-gdmsetup.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: gui/gdmsetup.desktop.in.in
-===================================================================
---- gui/gdmsetup.desktop.in.in.orig
-+++ gui/gdmsetup.desktop.in.in
-@@ -2,7 +2,7 @@
- Encoding=UTF-8
- _Name=Login Window
- _Comment=Configure GDM login window appearance and behavior
--TryExec=@sbindir@/gdmsetup
-+TryExec=gdmsetup
- Exec=@sbindir@/gdmsetup
- X-KDE-RootOnly=true
- Icon=gdm-setup
diff --git a/gdm-greeter-file-system-type-can-be-null.patch b/gdm-greeter-file-system-type-can-be-null.patch
new file mode 100644
index 0000000..f17672c
--- /dev/null
+++ b/gdm-greeter-file-system-type-can-be-null.patch
@@ -0,0 +1,20 @@
+--- gdm-2.22.0-pre/gui/simple-greeter/gdm-user.c 2008-04-17 22:29:26.000000000 -0500
++++ gdm-2.22.0-post/gui/simple-greeter/gdm-user.c 2008-07-31 07:37:40.000000000 -0500
+@@ -750,11 +750,12 @@ render_icon_from_home (GdmUser *user,
+ }
+ filesystem_type = g_file_info_get_attribute_string (file_info,
+ G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
+- is_local = ((strcmp (filesystem_type, "nfs") != 0) &&
+- (strcmp (filesystem_type, "afs") != 0) &&
+- (strcmp (filesystem_type, "autofs") != 0) &&
+- (strcmp (filesystem_type, "unknown") != 0) &&
+- (strcmp (filesystem_type, "ncpfs") != 0));
++ is_local = (filesystem_type == NULL ||
++ ((strcmp (filesystem_type, "nfs") != 0) &&
++ (strcmp (filesystem_type, "afs") != 0) &&
++ (strcmp (filesystem_type, "autofs") != 0) &&
++ (strcmp (filesystem_type, "unknown") != 0) &&
++ (strcmp (filesystem_type, "ncpfs") != 0)));
+ g_object_unref (file_info);
+ g_object_unref (file);
+ }
diff --git a/gdm-language-dialog-size.patch b/gdm-language-dialog-size.patch
deleted file mode 100644
index f79f026..0000000
--- a/gdm-language-dialog-size.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -upr gdm-2.19.3-pre/gui/gdmlanguages.c gdm-2.19.3-post/gui/gdmlanguages.c
---- gdm-2.19.3-pre/gui/gdmlanguages.c 2007-07-31 20:36:54.000000000 -0400
-+++ gdm-2.19.3-post/gui/gdmlanguages.c 2007-07-31 20:43:55.000000000 -0400
-@@ -840,6 +840,7 @@ gdm_lang_setup_treeview (void)
- GtkWidget *swindow;
- GtkWidget *label;
- char *s;
-+ gint y_size;
-
- dialog = gtk_dialog_new_with_buttons (_("Select a Language"),
- #ifdef TODO
-@@ -906,9 +907,13 @@ gdm_lang_setup_treeview (void)
- gtk_container_add (GTK_CONTAINER (swindow), tv);
- gtk_box_pack_start (GTK_BOX (main_vbox),
- swindow, TRUE, TRUE, 0);
-+
-+ /* Make the dialog fill 8/10 of the screen's height */
-+ y_size = (8 * gdm_wm_screen.height) / 10;
-+
- gtk_window_set_default_size (GTK_WINDOW (dialog),
- MIN (400, gdm_wm_screen.width),
-- MIN (600, gdm_wm_screen.height));
-+ y_size);
- g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (tv))),
- "changed",
- (GCallback) selection_changed,
diff --git a/gdm-language-hang.patch b/gdm-language-hang.patch
deleted file mode 100644
index 478f1a3..0000000
--- a/gdm-language-hang.patch
+++ /dev/null
@@ -1,117 +0,0 @@
---- daemon/slave.c 2007-09-12 18:59:56.000000000 +0200
-+++ daemon/slave.c 2007-09-15 01:04:02.000000000 +0200
-@@ -192,7 +192,7 @@
- * the slave can talk to itself from its sig handler
- * using the greeter ipc mechanism
- */
--static int slave_fd_out = -1;
-+//static int slave_fd_out = -1;
-
- #ifdef HAVE_TSOL
- static gboolean have_suntsol_extension = FALSE;
-@@ -682,6 +682,18 @@
- }
-
- static void
-+whack_greeter_fds (void)
-+{
-+ if (greeter_fd_out > 0)
-+ VE_IGNORE_EINTR (close (greeter_fd_out));
-+ greeter_fd_out = -1;
-+ if (greeter_fd_in > 0)
-+ VE_IGNORE_EINTR (close (greeter_fd_in));
-+ greeter_fd_in = -1;
-+}
-+
-+/*
-+static void
- whack_greeter_and_slave_fds (void)
- {
- if (greeter_fd_out > 0)
-@@ -690,10 +702,12 @@
- if (greeter_fd_in > 0)
- VE_IGNORE_EINTR (close (greeter_fd_in));
- greeter_fd_in = -1;
-+
- if (slave_fd_out > 0)
- VE_IGNORE_EINTR (close (slave_fd_out));
- slave_fd_out = -1;
- }
-+*/
-
- static void
- term_session_stop_and_quit (void)
-@@ -1178,7 +1192,8 @@
-
- d->greetpid = 0;
-
-- whack_greeter_and_slave_fds ();
-+ //whack_greeter_and_slave_fds ();
-+ whack_greeter_fds ();
-
- gdm_slave_send_num (GDM_SOP_GREETPID, 0);
-
-@@ -2027,7 +2042,8 @@
-
- d->greetpid = 0;
-
-- whack_greeter_and_slave_fds ();
-+ //whack_greeter_and_slave_fds ();
-+ whack_greeter_fds ();
-
- gdm_slave_send_num (GDM_SOP_GREETPID, 0);
- }
-@@ -2945,10 +2961,13 @@
-
- default:
- VE_IGNORE_EINTR (close (pipe1[0]));
-+ // added
-+ VE_IGNORE_EINTR (close (pipe2[1]));
-
-- whack_greeter_and_slave_fds ();
-+ //whack_greeter_and_slave_fds ();
-+ whack_greeter_fds ();
-
-- slave_fd_out = pipe2[1];
-+ //slave_fd_out = pipe2[1];
-
- greeter_fd_out = pipe1[1];
- greeter_fd_in = pipe2[0];
-@@ -5301,7 +5320,8 @@
-
- greet = FALSE;
- d->greetpid = 0;
-- whack_greeter_and_slave_fds ();
-+ //whack_greeter_and_slave_fds ();
-+ whack_greeter_fds ();
- gdm_slave_send_num (GDM_SOP_GREETPID, 0);
-
- do_restart_greeter = TRUE;
-@@ -5313,7 +5333,8 @@
- continue;
- }
-
-- whack_greeter_and_slave_fds ();
-+ //whack_greeter_and_slave_fds ();
-+ whack_greeter_fds ();
-
- /* if greet is TRUE, then the greeter died outside of our
- * control really, so clean up and die, something is wrong
-@@ -5456,7 +5477,7 @@
- gdm_wait_for_go = FALSE;
- } else if (strcmp (&s[1], GDM_NOTIFY_TWIDDLE_POINTER) == 0) {
- gdm_twiddle_pointer (d);
-- } else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) {
-+ } /*else if (strcmp (&s[1], GDM_NOTIFY_RESET) == 0) {
- if (!d->logged_in) {
- gdm_fdprintf (slave_fd_out, "%c%c%c\n",
- STX, BEL, GDM_INTERRUPT_CANCEL);
-@@ -5466,7 +5487,7 @@
- gdm_fdprintf (slave_fd_out, "%c%c%c\n",
- STX, BEL, GDM_INTERRUPT_TOKEN_LOGIN);
- }
-- }
-+ }*/
- } else if (s[0] == GDM_SLAVE_NOTIFY_RESPONSE) {
- gdm_got_ack = TRUE;
- if (gdm_ack_response)
diff --git a/gdm-presession-kde-path.patch b/gdm-presession-kde-path.patch
deleted file mode 100644
index f685d19..0000000
--- a/gdm-presession-kde-path.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdm-2.16.1/config/PreSession.in
-+++ gdm-2.16.1/config/PreSession.in
-@@ -6,7 +6,7 @@
- #
- # Note that output goes into the .xsession-errors file for easy debugging
- #
--PATH="@X_PATH@:$PATH:/bin:/usr/bin"
-+PATH="@X_PATH@:$PATH:/bin:/usr/bin:/opt/kde3/bin"
- OLD_IFS=$IFS
-
- gdmwhich () {
diff --git a/gdm-server-timeout.patch b/gdm-server-timeout.patch
deleted file mode 100644
index 7a0b4bb..0000000
--- a/gdm-server-timeout.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -upr gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h
---- gdm-2.19.5-pre/daemon/gdm-daemon-config-keys.h 2007-08-03 19:38:33.000000000 -0500
-+++ gdm-2.19.5-post/daemon/gdm-daemon-config-keys.h 2007-08-03 19:44:00.000000000 -0500
-@@ -81,7 +81,7 @@ G_BEGIN_DECLS
- #define GDM_KEY_FIRST_VT "daemon/FirstVT=7"
- #define GDM_KEY_VT_ALLOCATION "daemon/VTAllocation=true"
- #define GDM_KEY_CONSOLE_CANNOT_HANDLE "daemon/ConsoleCannotHandle=am,ar,az,bn,el,fa,gu,hi,ja,ko,ml,mr,pa,ta,zh"
--#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=10"
-+#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=30"
- #define GDM_KEY_SYSTEM_COMMANDS_IN_MENU "daemon/SystemCommandsInMenu=HALT;REBOOT;SUSPEND;CUSTOM_CMD"
- #define GDM_KEY_ALLOW_LOGOUT_ACTIONS "daemon/AllowLogoutActions=HALT;REBOOT;SUSPEND;CUSTOM_CMD"
- #define GDM_KEY_RBAC_SYSTEM_COMMAND_KEYS "daemon/RBACSystemCommandKeys=" GDM_RBAC_SYSCMD_KEYS
-Only in gdm-2.19.5-post/daemon: gdm-daemon-config-keys.h~
-Only in gdm-2.19.5-pre/daemon: gdm-daemon-config-keys.h.orig
-Only in gdm-2.19.5-pre/daemon: slave.c.orig
-Only in gdm-2.19.5-pre/daemon: verify-pam.c.orig
-Only in gdm-2.19.5-post: error.15631
diff --git a/gdm-xdm-sessions.patch b/gdm-xdm-sessions.patch
deleted file mode 100644
index 6119f89..0000000
--- a/gdm-xdm-sessions.patch
+++ /dev/null
@@ -1,401 +0,0 @@
---- gdm-2.20.0-orig/config/Init.in 2007-09-17 16:45:50.000000000 +0200
-+++ gdm-2.20.0/config/Init.in 2007-11-07 00:03:29.000000000 +0100
-@@ -1,89 +1,2 @@
- #!/bin/sh
--# Stolen from the debian kdm setup, aren't I sneaky
--# Plus a lot of fun stuff added
--# -George
--
--PATH=@X_PATH@:$PATH
--OLD_IFS=$IFS
--
--gdmwhich () {
-- COMMAND="$1"
-- OUTPUT=
-- IFS=:
-- for dir in $PATH
-- do
-- if test -x "$dir/$COMMAND" ; then
-- if test "x$OUTPUT" = "x" ; then
-- OUTPUT="$dir/$COMMAND"
-- fi
-- fi
-- done
-- IFS=$OLD_IFS
-- echo "$OUTPUT"
--}
--
--sysresources=/etc/X11/Xresources
--
--# merge in defaults
--if [ -f "$sysresources" ]; then
-- xrdb -merge "$sysresources"
--fi
--
--sysmodmap=/etc/X11/Xmodmap
--
--XMODMAP=`gdmwhich xmodmap`
--if [ x$XMODMAP != x ] ; then
-- if [ x$GDM_PARENT_DISPLAY = x ]; then
-- if [ -f $sysmodmap ]; then
-- $XMODMAP $sysmodmap
-- fi
-- else
-- ( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
-- fi
--
-- #
-- # Switch Sun's Alt and Meta mod mappings
-- #
--
-- UNAME=`gdmwhich uname`
-- PROCESSOR=`$UNAME -p`
-- if [ x$PROCESSOR = xsparc ]; then
-- if $XMODMAP | /usr/bin/grep mod4 | /usr/bin/grep Alt > /dev/null 2>/dev/null
-- then
-- $XMODMAP -e "clear Mod1" \
-- -e "clear Mod4" \
-- -e "add Mod1 = Alt_L" \
-- -e "add Mod1 = Alt_R" \
-- -e "add Mod4 = Meta_L" \
-- -e "add Mod4 = Meta_R"
-- fi
-- fi
--fi
--
--SETXKBMAP=`gdmwhich setxkbmap`
--if [ x$SETXKBMAP != x ] ; then
-- # FIXME: is this all right? Is this completely on crack?
-- # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
-- # FIXME: This should be done in code. Or there must be an easier way ...
-- if [ -n "$GDM_PARENT_DISPLAY" ]; then
-- XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
-- if [ -n "$XKBSETUP" ]; then
-- XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
-- XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
-- XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
-- XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
-- XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
-- if [ -n "$XKBKEYMAP" ]; then
-- $SETXKBMAP -keymap "$XKBKEYMAP"
-- elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
-- $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
-- elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
-- $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
-- elif [ -n "$XKBSYMBOLS" ]; then
-- $SETXKBMAP -symbols "$XKBSYMBOLS"
-- fi
-- fi
-- fi
--fi
--
--exit 0
-+exec /etc/X11/xdm/Xsetup
---- gdm-2.20.0-orig/config/PostSession.in 2007-09-17 16:45:50.000000000 +0200
-+++ gdm-2.20.0/config/PostSession.in 2007-11-07 00:03:57.000000000 +0100
-@@ -1,22 +1,3 @@
- #!/bin/sh
-
--PATH="@X_PATH@:$PATH:/bin:/usr/bin"
--OLD_IFS=$IFS
--
--gdmwhich () {
-- COMMAND="$1"
-- OUTPUT=
-- IFS=:
-- for dir in $PATH
-- do
-- if test -x "$dir/$COMMAND" ; then
-- if test "x$OUTPUT" = "x" ; then
-- OUTPUT="$dir/$COMMAND"
-- fi
-- fi
-- done
-- IFS=$OLD_IFS
-- echo "$OUTPUT"
--}
--
--exit 0
-+exec /etc/X11/xdm/Xreset
---- gdm-2.20.0-orig/config/Xsession.in 2007-09-17 16:45:50.000000000 +0200
-+++ gdm-2.20.0/config/Xsession.in 2007-11-07 00:04:54.000000000 +0100
-@@ -1,278 +1,3 @@
- #!@XSESSION_SHELL@
- #
--# This is SORT OF LIKE an X session, but not quite. You get a command as the
--# first argument (it could be multiple words, so run it with "eval"). As a
--# special case, the command can be:
--# default - Run the appropriate Xclients startup (see the code below)
--# custom - Run ~/.xsession and if that's not available run 'default'
--#
--# (Note that other arguments could also follow, but only the command one is
--# right now relevant and supported)
--#
--# The output is ALREADY redirected to .xsession-errors in GDM. This way
--# .xsession-errors actually gets more output such as if the PreSession script
--# is failing. This also prevents DoS attacks if some app in the users session
--# can be prodded to dump lots of stuff on the stdout/stderr. We wish to be
--# robust don't we? In case you wish to use an existing script for other DM's,
--# you can just not redirect when GDMSESSION is set. GDMSESSION will always
--# be set from gdm.
--#
--# Also note that this is not run as a login shell, this is just executed.
--# This is why we source the profile files below.
--#
--# based on:
--# $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
--
--command="$@"
--
--# this will go into the .xsession-errors along with all other echo's
--# good for debugging where things went wrong
--echo "$0: Beginning session setup..."
--
--# First read /etc/profile and .profile
--test -f /etc/profile && . /etc/profile
--test -f "$HOME/.profile" && . "$HOME/.profile"
--# Second read /etc/xprofile and .xprofile for X specific setup
--test -f /etc/xprofile && . /etc/xprofile
--test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
--
--# Translation stuff
--if [ -x "@libexecdir@/gdmtranslate" ] ; then
-- gdmtranslate="@libexecdir@/gdmtranslate"
--else
-- gdmtranslate=
--fi
--
--# Note that this should only go to zenity dialogs which always expect utf8
--gettextfunc () {
-- if [ "x$gdmtranslate" != "x" ] ; then
-- "$gdmtranslate" --utf8 "$1"
-- else
-- echo "$1"
-- fi
--}
--
--OLD_IFS=$IFS
--
--gdmwhich () {
-- COMMAND="$1"
-- OUTPUT=
-- IFS=:
-- for dir in $PATH
-- do
-- if test -x "$dir/$COMMAND" ; then
-- if test "x$OUTPUT" = "x" ; then
-- OUTPUT="$dir/$COMMAND"
-- fi
-- fi
-- done
-- IFS=$OLD_IFS
-- echo "$OUTPUT"
--}
--
--zenity=`gdmwhich zenity`
--
--# Note: ~/.xsession-errors is now done in the daemon so that it
--# works for ALL sessions (except ones named 'Failsafe')
--
--# clean up after xbanner
--freetemp=`gdmwhich freetemp`
--if [ -n "$freetemp" ] ; then
-- "$freetemp"
--fi
--
--userresources="$HOME/.Xresources"
--usermodmap="$HOME/.Xmodmap"
--userxkbmap="$HOME/.Xkbmap"
--
--sysresources=/etc/X11/Xresources
--sysmodmap=/etc/X11/Xmodmap
--sysxkbmap=/etc/X11/Xkbmap
--
--rh6sysresources=/etc/X11/xinit/Xresources
--rh6sysmodmap=/etc/X11/xinit/Xmodmap
--
--# merge in defaults
--if [ -f "$rh6sysresources" ]; then
-- xrdb -merge "$rh6sysresources"
--fi
--
--if [ -f "$sysresources" ]; then
-- xrdb -merge "$sysresources"
--fi
--
--if [ -f "$userresources" ]; then
-- xrdb -merge "$userresources"
--fi
--
--# merge in keymaps
--if [ -f "$sysxkbmap" ]; then
-- setxkbmap `cat "$sysxkbmap"`
-- XKB_IN_USE=yes
--fi
--
--if [ -f "$userxkbmap" ]; then
-- setxkbmap `cat "$userxkbmap"`
-- XKB_IN_USE=yes
--fi
--
--#
--# Eeek, this seems like too much magic here
--#
--if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
-- if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
-- xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
-- if [ -n "$xkbsymbols" ]; then
-- setxkbmap -symbols "$xkbsymbols"
-- XKB_IN_USE=yes
-- fi
-- fi
--fi
--
--# xkb and xmodmap don't play nice together
--if [ -z "$XKB_IN_USE" ]; then
-- if [ -f "$rh6sysmodmap" ]; then
-- xmodmap "$rh6sysmodmap"
-- fi
--
-- if [ -f "$sysmodmap" ]; then
-- xmodmap "$sysmodmap"
-- fi
--
-- if [ -f "$usermodmap" ]; then
-- xmodmap "$usermodmap"
-- fi
--fi
--
--unset XKB_IN_USE
--
--# Normalize languages, some places/distros screw us up in /etc/profile,
--# so in case the user did select a language
--if [ -n "$GDM_LANG" ]; then
-- LANG="$GDM_LANG"
-- export LANG
--
-- if [ -n "$LC_ALL" ]; then
-- if [ "$LC_ALL" != "$LANG" ]; then
-- LC_ALL="$LANG"
-- fi
-- else
-- unset LC_ALL
-- fi
--
-- if [ -n "$LANGUAGE" ]; then
-- if [ "$LANGUAGE" != "$LANG" ]; then
-- LANGUAGE="$LANG"
-- fi
-- else
-- unset LANGUAGE
-- fi
--
-- if [ -n "$LINGUAS" ]; then
-- if [ "$LINGUAS" != "$LANG" ]; then
-- LINGUAS="$LANG"
-- fi
-- else
-- unset LINGUAS
-- fi
--fi
--
--# Normalize all LC_* settings to $LANG
--for var in "LC_ALL" "LC_CTYPE" "LC_NUMERIC" "LC_TIME" "LC_COLLATE" "LC_MONETARY" "LC_MESSAGES" \
-- "LC_PAPER" "LC_NAME" "LC_ADDRESS" "LC_TELEPHONE" "LC_MEASUREMENT" "LC_IDENTIFICATION" ; do
-- if eval "[ -n \"\$$var\" -a \"\$$var\" != \"\$LANG\" ]" ; then
-- unset $var
-- fi
--done
--
--# run all system xinitrc shell scripts.
--if [ -d /etc/X11/xinit/xinitrc.d ]; then
-- for i in /etc/X11/xinit/xinitrc.d/* ; do
-- if [ -x "$i" ]; then
-- . "$i"
-- fi
-- done
--fi
--
--#
--# To determine the character set used for filenames with
--# glib's g_filename_to/from_utf8() functions, we set the
--# environment variables G_FILENAME_ENCODING and G_BROKEN_FILENAMES.
--#
--# G_BROKEN_FILENAMES, when set, lets the functions take the
--# character set for the current locale for filename's encoding.
--#
--# G_FILENAME_ENCODING, which is introduced to glib 2.3.x and later, may be
--# set to a comma-separated list of character set names.
--# The special token "@locale" is taken to mean the character set
--# for the current locale. The first character set from the list is taken
--# as the filename encoding.
--#
--# If G_FILENAME_ENCODING is not set, but G_BROKEN_FILENAMES is, the
--# character set of the current locale is taken as the filename encoding.
--
--G_BROKEN_FILENAMES=yes
--export G_BROKEN_FILENAMES
--# G_FILENAME_ENCODING=@locale
--# export G_FILENAME_ENCODING
--
--#Startup Input methods (IIIM->XIM)
--if [ -f /etc/iiim/xsession ]; then
-- . /etc/iiim/xsession
--fi
--#Startup XIM stuff
--if [ "x$XMODIFIERS" = "x" ]; then
-- if [ -f "$HOME/.xim" ]; then
-- . $HOME/.xim
-- elif [ -f "/etc/skel/.xim" ]; then
-- . /etc/skel/.xim
-- fi
--fi
--
--if [ "x$command" = "xcustom" ] ; then
-- if [ -x "$HOME/.xsession" ]; then
-- command="$HOME/.xsession"
-- else
-- echo "$0: Cannot find ~/.xsession will try the default session"
-- command="default"
-- fi
--fi
--
--if [ "x$command" = "xdefault" ] ; then
-- if [ -x "$HOME/.Xclients" ]; then
-- command="$HOME/.Xclients"
-- elif [ -x /etc/X11/xinit/Xclients ]; then
-- command="/etc/X11/xinit/Xclients"
-- elif [ -x /etc/X11/Xclients ]; then
-- command="/etc/X11/Xclients"
-- else
-- if [ -n "$zenity" ] ; then
-- disptext=`gettextfunc "System has no Xclients file, so starting a failsafe xterm session. Windows will have focus only if the mouse pointer is above them. To get out of this mode type 'exit' in the window."`
-- "$zenity" --info --text "$disptext"
-- else
-- echo "$0: Cannot find Xclients"
-- fi
-- exec xterm -geometry 80x24+0+0
-- fi
--fi
--
--# add ssh-agent if found
--sshagent="`gdmwhich ssh-agent`"
--if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
-- command="$sshagent -- $command"
--elif [ -z "$sshagent" ] ; then
-- echo "$0: ssh-agent not found!"
--fi
--
--echo "$0: Setup done, will execute: $command"
--
--eval exec $command
--
--echo "$0: Executing $command failed, will run xterm"
--
--if [ -n "$zenity" ] ; then
-- disptext=`gettextfunc "Failed to start the session, so starting a failsafe xterm session. Windows will have focus only if the mouse pointer is above them. To get out of this mode type 'exit' in the window."`
-- "$zenity" --info --text "$disptext"
--fi
--
--exec xterm -geometry 80x24+0+0
-+/bin/bash /etc/X11/xdm/Xstartup && exec /etc/X11/xdm/Xsession $1 $GDM_LANG
diff --git a/gdm.changes b/gdm.changes
index d5f2e4d..ef40b0b 100644
--- a/gdm.changes
+++ b/gdm.changes
@@ -1,3 +1,30 @@
+-------------------------------------------------------------------
+Fri Aug 1 17:28:58 CDT 2008 - hpj@suse.de
+
+- Major upgrade to GDM 2.22.0, which is pretty much a complete rewrite upstream:
+ + Added gdm-consolekit-helper-subdir.patch, which lets GDM find ConsoleKit's
+ helper executable in the subdir where it's installed.
+ + Added gdm-2.21.9-no-fatal-warnings.patch, which prevents GDM from crashing
+ on non-fatal errors.
+ + Added gdm-greeter-file-system-type-can-be-null.patch, which prevents a
+ crash.
+ + Added gdm-2.21.5-vt7-temporary-hack.patch, which makes GDM default to VT7
+ when the initial VT is not specified. Prevents a keyboard lockup on startup.
+ + Dropped patches:
+ gdm-conf.patch, gdm-language-dialog-size.patch,
+ gdm-xdm-sessions.patch, gdm-presession-kde-path.patch,
+ gdm-gdmsetup-rootonly.patch, gdm-2.8.0.0-any-hostname-auth.patch,
+ gdm-2.8.0.0-list-users.patch, gdm-2.8.0.0-setup-no-flicker.patch,
+ gdm-2.8.0.7-bg-4.patch, gdm-2.8.0.7-domain-entry.patch,
+ gdm-2.8.0.7-halt-needs-root.patch, gdm-2.8.0.7-onlyshow-in-gnome.patch,
+ gdm-server-timeout.patch, gdm-2.8.0.7-some-info-in-dialog.patch,
+ gdm-gdmsetup.patch, gdm-conf-custom-sysconfig.patch,
+ gdm-2.19.3-reset-pam.patch, gdm-2.19.3-dbus-security-tokens.patch,
+ gdm-2.19.3-token-login.patch, gdm-2.19.3-token-login2.patch,
+ gdm-XKeepsCrashing-SaX2.patch, gdm-XKeepsCrashing-desktop-effects.patch,
+ gdm-language-hang.patch, gdm-2.20.0-wait-for-restart.patch,
+ gdm-bnc343858-buggy-intel-xinerama.patch.
+
-------------------------------------------------------------------
Thu May 15 10:14:09 CEST 2008 - vuntz@suse.de
diff --git a/gdm.spec b/gdm.spec
index 3c07f45..7a1c3e7 100644
--- a/gdm.spec
+++ b/gdm.spec
@@ -1,10 +1,17 @@
#
-# spec file for package gdm (Version 2.20.4)
+# spec file for package gdm (Version 2.22.0)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
-# This file and all modifications and additions to the pristine
-# package are under the same license as the package itself.
#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
@@ -12,7 +19,7 @@
Name: gdm
-BuildRequires: docbook_4 fdupes gnome-common gnome-doc-utils-devel gnome-patch-translation gnutls-devel intltool libglade2-devel libgnomeprintui-devel libgnomeui-devel librsvg-devel libwnck-devel pam-devel perl-XML-Parser pwdutils scrollkeeper tcpd-devel update-desktop-files xorg-x11-server xorg-x11-server-extra zenity
+BuildRequires: docbook_4 fdupes gconf2-devel gnome-common gnome-doc-utils-devel gnome-panel-devel gnome-patch-translation intltool libglade2-devel libgnomeprintui-devel libgnomeui-devel libgnutls-devel librsvg-devel libwnck-devel pam-devel perl-XML-Parser pwdutils scrollkeeper tcpd-devel update-desktop-files xorg-x11-server xorg-x11-server-extra zenity
PreReq: /usr/sbin/groupadd
PreReq: /usr/sbin/useradd
PreReq: /usr/sbin/usermod
@@ -22,8 +29,8 @@ PreReq: %fillup_prereq
PreReq: %insserv_prereq
License: GPL v2 or later
Group: System/GUI/GNOME
-Version: 2.20.4
-Release: 24
+Version: 2.22.0
+Release: 1
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
@@ -31,50 +38,20 @@ Source2: gdm-autologin.pamd
# FIXME: See FIXME in the script.
Source3: SuSEconfig.gdm
Source5: sysconfig.displaymanager-gdm
-Source6: dbus-gdm.conf
-# Only system integration patches are allowed in gdm.conf.
-# Any Look and Feel changes should be done in gdm-branding packages.
-Patch0: gdm-conf.patch
-Patch3: gdm-language-dialog-size.patch
-Patch5: gdm-xdm-sessions.patch
-Patch9: gdm-presession-kde-path.patch
-Patch12: gdm-gdmsetup-rootonly.patch
-Patch13: gdm-2.8.0.0-any-hostname-auth.patch
-Patch14: gdm-2.8.0.0-list-users.patch
-Patch15: gdm-2.8.0.0-setup-no-flicker.patch
-Patch19: gdm-2.8.0.7-bg-4.patch
-Patch20: gdm-2.8.0.7-domain-entry.patch
-Patch21: gdm-2.8.0.7-halt-needs-root.patch
-Patch22: gdm-2.8.0.7-onlyshow-in-gnome.diff
-Patch24: gdm-server-timeout.patch
-Patch26: gdm-2.8.0.7-some-info-in-dialog.patch
+Patch1: gdm-consolekit-helper-subdir.patch
+Patch2: gdm-2.21.9-no-fatal-warnings.patch
+Patch3: gdm-greeter-file-system-type-can-be-null.patch
+Patch4: gdm-2.21.5-vt7-temporary-hack.patch
Patch28: gdm-X_SERVER.patch
-Patch29: gdm-gdmsetup.patch
-Patch30: gdm-conf-custom-sysconfig.patch
-Patch34: gdm-2.17.7-vt-fallback.patch
-Patch35: gdm-2.19.3-reset-pam.patch
-Patch36: gdm-2.19.3-dbus-security-tokens.patch
-Patch37: gdm-2.19.3-token-login.patch
-# don't ask.
-Patch38: gdm-2.19.3-token-login2.patch
-Patch40: gdm-XKeepsCrashing-SaX2.patch
-Patch41: gdm-XKeepsCrashing-desktop-effects.patch
-#Patch42: fix-desktop-files.diff
-Patch43: gdm-language-hang.patch
-Patch45: gdm-2.20.0-wait-for-restart.patch
-# PATCH-FIX-UPSTREAM gdm-bnc343858-buggy-intel-xinerama.patch bnc343858 bgo523403 vuntz@novell.com -- make gdm use gdk functions to know about xinerama
-Patch48: gdm-bnc343858-buggy-intel-xinerama.patch
Url: http://www.gnome.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
DocDir: %{_defaultdocdir}
Provides: gdm2
Obsoletes: gdm2
-%if %suse_version <= 1020
-PreReq: xorg-x11
-%endif
Requires: gnome-themes klogd xorg-x11-server-extra
Requires: %{name}-branding
Requires: %{name}-lang = %{version}
+%gconf_schemas_prereq
%description
This version of GDM, the GNOME display manager, is based on GTK2 and is
@@ -118,48 +95,18 @@ Authors:
%lang_package
%prep
%setup -q
-gnome-patch-translation-prepare
-%patch0
+%patch1 -p1
+%patch2 -p1
%patch3 -p1
-%patch5 -p1
-%patch9 -p1
-%patch12
-%patch13 -p1
-%patch14 -p1
-%patch15 -p1
-%patch19 -p1
-%if %suse_version > 1000
-%patch20 -p1
-%patch21 -p1
-%endif
-%patch22 -p1
-%patch24 -p1
-%patch26 -p1
+%patch4 -p1
%patch28
-%patch29
-%patch30
-%patch34 -p1
-%patch35 -p1
-%patch36 -p1
-%patch37 -p1
-%patch38 -p0
-%patch40
-%patch41
-#%patch42 - dont think this patch is needed with suse_udpate_desktop_file -g working.
-%patch43
-%patch45 -p1
-%patch48 -p1
-gnome-patch-translation-update
%build
autoreconf -f -i
-# gdm-2.16.1: greeter_canvas_text.c:98: warning: dereferencing type-punned pointer will break strict-aliasing rules
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
-# FIXME: Build as root modifies system!
-# gdm-2.16.1: --disable-scrollkeeper does not work properly.
%configure\
- --libexecdir=%{_prefix}/lib/gdm\
- --localstatedir=%{_localstatedir}/lib\
+ --libexecdir=%{_prefix}/lib \
+ --localstatedir=%{_localstatedir} \
--with-atspi-dir=%{_prefix}/lib/at-spi \
--enable-ipv6\
--disable-scrollkeeper\
@@ -168,6 +115,7 @@ make %{?jobs:-j%jobs}
%install
%makeinstall
+%find_gconf_schemas
# Remove wrapper, it is not needed.
mv $RPM_BUILD_ROOT%{_sbindir}/gdm-binary $RPM_BUILD_ROOT%{_sbindir}/gdm
# Install PAM files and remove examples.
@@ -180,36 +128,18 @@ mv $RPM_BUILD_ROOT%{_sysconfdir}/gdm/PostLogin/Default.sample $RPM_BUILD_ROOT%{_
mkdir -p $RPM_BUILD_ROOT/sbin/conf.d
cp %{S:3} $RPM_BUILD_ROOT/sbin/conf.d
chmod +x $RPM_BUILD_ROOT/sbin/conf.d/SuSEconfig.gdm
-%if %suse_version <1010
-mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates
-cp %{S:5} $RPM_BUILD_ROOT/var/adm/fillup-templates
-%endif
-#
-%if %suse_version > 1030
-mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/dbus-1/system.d
-cp %{S:6} $RPM_BUILD_ROOT/%{_sysconfdir}/dbus-1/system.d/gdm.conf
-%endif
touch $RPM_BUILD_ROOT%{_sysconfdir}/gdm/gdm_sysconfig.conf
-# gnome.desktop should be in gnome-session, ssh.desktop doesn't work
-rm $RPM_BUILD_ROOT%{_datadir}/xsessions/ssh.desktop
-rm $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome.desktop
-rmdir $RPM_BUILD_ROOT%{_sysconfdir}/dm
-%suse_update_desktop_file $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmsetup.desktop SystemSetup
-%suse_update_desktop_file -G "" $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmphotosetup.desktop SystemSetup
-%suse_update_desktop_file -G "" $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmflexiserver.desktop RemoteAccess
-%suse_update_desktop_file -G "" $RPM_BUILD_ROOT/usr/share/gdm/applications/gdmflexiserver-xnest.desktop RemoteAccess
-#echo DocPath=gdm >> $RPM_BUILD_ROOT%{_datadir}/applications/gdmsetup.desktop
-#echo DocPath=gdm >> $RPM_BUILD_ROOT%{_datadir}/applications/gdmphotosetup.desktop
-mkdir -p $RPM_BUILD_ROOT/var/log/gdm
+mkdir -p $RPM_BUILD_ROOT{_localstatedir}/log/gdm
+mkdir -p $RPM_BUILD_ROOT{_localstatedir}/run/gdm
%find_lang %{name}
+mkdir -p $RPM_BUILD_ROOT%{_bindir}
ln -s ../sbin/gdm $RPM_BUILD_ROOT%{_bindir}/gdm
-rm $RPM_BUILD_ROOT%{_libdir}/*/*/*.*a
%fdupes $RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
-%pre
+%pre -f %{name}.schemas_pre
/usr/sbin/groupadd -r gdm 2> /dev/null || :
/usr/sbin/useradd -r -o -g gdm -s /bin/false \
-c "Gnome Display Manager daemon" -d /var/lib/gdm gdm 2> /dev/null || :
@@ -233,66 +163,70 @@ if grep -q gdm-autologin sbin/conf.d/SuSEconfig.gdm ; then
fi
fi
-%post
-%if %suse_version < 1010
-%{fillup_only -n displaymanager -s gdm}
-%{fillup_and_insserv -npY displaymanager}
-%endif
-%if %suse_version <= 1020
-sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/init.d/xdm
+%preun -f %{name}.schemas_preun
+%posttrans -f %{name}.schemas_posttrans
-%triggerin -- xorg-x11
-sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/init.d/xdm
-%endif
+%post
%postun
%insserv_cleanup
-%files
+%files -f %{name}.schemas_list
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README TODO
%dir %config %{_sysconfdir}/gdm
-%dir %{_datadir}/omf/gdm
%config %{_sysconfdir}/gdm/[IPXl]*
-%config(noreplace) %{_sysconfdir}/gdm/custom.conf
-%{_sysconfdir}/gdm/Xsession
%ghost %{_sysconfdir}/gdm/gdm_sysconfig.conf
-%dir %config %{_sysconfdir}/gdm/modules
-%config %{_sysconfdir}/gdm/modules/A*
-%{_sysconfdir}/gdm/modules/factory*
-%{_datadir}/omf/gdm/gdm-*.omf
%{_sbindir}/*
%{_bindir}/*
%{_datadir}/gdm
-%exclude %{_datadir}/gdm/*.conf
-#%{_datadir}/applications/*.desktop
%{_datadir}/pixmaps/*.png
%{_datadir}/pixmaps/faces
%{_datadir}/icons/*/*/*/*.*
-%{_libdir}/gtk-2.0/modules/*
-%doc %{_mandir}/man1/*.*
-%{_prefix}/lib/gdm
+%{_prefix}/lib/*
+%{_prefix}/lib/bonobo/servers/*
+%{_datadir}/gnome-2.0/ui/*
%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm
+%attr(755,gdm,gdm) %dir %{_localstatedir}/run/gdm
%attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm
%config /etc/pam.d/*
/sbin/conf.d/SuSEconfig.gdm
-%if %suse_version <1010
-/var/adm/fillup-templates/*
-%endif
-%if %suse_version <= 1020
-%dir /usr/share/xsessions
-%endif
-%if %suse_version > 1030
%{_sysconfdir}/dbus-1/system.d/gdm.conf
-%endif
-
-%files lang -f %{name}.lang
+%{_sysconfdir}/gdm/gdm.schemas
+%{_localstatedir}/lib/gdm/.gconf.mandatory/%gconf-tree.xml
+%{_localstatedir}/lib/gdm/.gconf.path
%files branding-upstream
%defattr(-,root,root)
-%{_datadir}/gdm/*.conf
+%config(noreplace) %{_sysconfdir}/gdm/custom.conf
+
+%files lang -f %{name}.lang
%changelog
+* Fri Aug 01 2008 hpj@suse.de
+- Major upgrade to GDM 2.22.0, which is pretty much a complete rewrite upstream:
+ + Added gdm-consolekit-helper-subdir.patch, which lets GDM find ConsoleKit's
+ helper executable in the subdir where it's installed.
+ + Added gdm-2.21.9-no-fatal-warnings.patch, which prevents GDM from crashing
+ on non-fatal errors.
+ + Added gdm-greeter-file-system-type-can-be-null.patch, which prevents a
+ crash.
+ + Added gdm-2.21.5-vt7-temporary-hack.patch, which makes GDM default to VT7
+ when the initial VT is not specified. Prevents a keyboard lockup on startup.
+ + Dropped patches:
+ gdm-conf.patch, gdm-language-dialog-size.patch,
+ gdm-xdm-sessions.patch, gdm-presession-kde-path.patch,
+ gdm-gdmsetup-rootonly.patch, gdm-2.8.0.0-any-hostname-auth.patch,
+ gdm-2.8.0.0-list-users.patch, gdm-2.8.0.0-setup-no-flicker.patch,
+ gdm-2.8.0.7-bg-4.patch, gdm-2.8.0.7-domain-entry.patch,
+ gdm-2.8.0.7-halt-needs-root.patch, gdm-2.8.0.7-onlyshow-in-gnome.patch,
+ gdm-server-timeout.patch, gdm-2.8.0.7-some-info-in-dialog.patch,
+ gdm-gdmsetup.patch, gdm-conf-custom-sysconfig.patch,
+ gdm-2.19.3-reset-pam.patch, gdm-2.19.3-dbus-security-tokens.patch,
+ gdm-2.19.3-token-login.patch, gdm-2.19.3-token-login2.patch,
+ gdm-XKeepsCrashing-SaX2.patch, gdm-XKeepsCrashing-desktop-effects.patch,
+ gdm-language-hang.patch, gdm-2.20.0-wait-for-restart.patch,
+ gdm-bnc343858-buggy-intel-xinerama.patch.
* Thu May 15 2008 vuntz@suse.de
- Update gdm-xdm-sessions.patch to run /etc/X11/xdm/Xstartup. Part
of bnc#368673.
@@ -375,7 +309,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
displays.
+ Build/configure fixes for Solaris.
+ Translation updates.
-* Wed Nov 14 2007 hpj@suse.de
+* Tue Nov 13 2007 hpj@suse.de
- Removed second --with-atspi-dir from configure.
- Added gdm-tab-triggers-enter.patch, which fixes Novell bug
[#334446].
@@ -384,7 +318,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
(#337428)
- Updated gdm-xdm-sessions.patch to run again the /etc/X11/xdm
scripts (#304399)
-* Fri Nov 09 2007 hpj@suse.de
+* Thu Nov 08 2007 hpj@suse.de
- Pass the --with-atspi-dir= flag to configure so the
at-spi-registryd is started correctly. Fixes Novell bug #337428.
* Thu Oct 18 2007 maw@suse.de
@@ -392,7 +326,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Add abuild.patch.
* Thu Oct 11 2007 sbrabec@suse.cz
- Removed bogus dependency on mDNSResponder.
-* Mon Sep 24 2007 hpj@suse.de
+* Sun Sep 23 2007 hpj@suse.de
- Added gdm-2.20.0-wait-for-restart.patch, which fixes Novell bug
[#326281].
* Thu Sep 20 2007 banderso@suse.de
@@ -486,7 +420,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- The greeter.dtd file has been updated. Now the default GDM themes
validate with this dtd. (Dave Fincher)
- Plus translation updates for a plethora of locales.
-* Fri Aug 17 2007 hpj@suse.de
+* Thu Aug 16 2007 hpj@suse.de
- Fixed missing configuration variable definition in
gdm-2.8.0.7-domain-entry.patch.
* Fri Aug 10 2007 sbrabec@suse.cz
@@ -502,7 +436,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Sat Aug 04 2007 maw@suse.de
- Use %%fdupes
- Uncomment out the rm in %%clean.
-* Sat Aug 04 2007 hpj@suse.de
+* Fri Aug 03 2007 hpj@suse.de
- Update to version 2.19.5.
- Fix up gdm-conf.patch.
- Fix up gdm-2.19.3-reset-pam.patch.
@@ -526,11 +460,11 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Tue Jul 24 2007 jpr@suse.de
- Add xorg-x11-server-extras for Xnest/Xephyr so that the defaults
are set correctly (not an installation dep)
-* Fri Jul 20 2007 maw@suse.de
+* Thu Jul 19 2007 maw@suse.de
- Reenable gdm-conf.patch (#292837).
* Tue Jul 17 2007 coolo@suse.de
- fix pointer arithmetic
-* Tue Jul 17 2007 mauro@suse.de
+* Mon Jul 16 2007 mauro@suse.de
- Update to version 2.19.3
- Clean up of the not applicable patches.
- Bugfixes for #448547, #448548, #443557.
@@ -574,15 +508,15 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
Fontenelle, Pema Geyleg, Priit Laes, Kjartan Maraas, Inaki Larranaga
Murgoitio, Kostas Papadimas, Ignacio Casal Quinteiro, Hendrik Richter,
Changwoo Ryu, Claudio Saavedra)
-* Sat Mar 31 2007 maw@suse.de
+* Fri Mar 30 2007 maw@suse.de
- Update to version 2.18.0
- b.g.o 415513, 417350, 415181, 409801, 409693, 406226, and 407687.
* Fri Mar 30 2007 aj@suse.de
- Add pwdutils to BuildRequires.
-* Thu Mar 22 2007 hpj@suse.de
+* Wed Mar 21 2007 hpj@suse.de
- Add gdm-2.17.7-vt-fallback.patch. This is a port of the fix for
https://bugzilla.novell.com/show_bug.cgi?id=206804
-* Wed Mar 14 2007 maw@suse.de
+* Tue Mar 13 2007 maw@suse.de
- Update to version 2.17.7
- Removeupstreamed gdm-autobuild-warning.patch,
gdm-bufferoverrun.patch
@@ -590,10 +524,10 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
[#400698], #399486, #352263, #395790, #394421.
* Fri Mar 02 2007 sbrabec@suse.cz
- Do not own /usr/share/xsessions (#229172).
-* Tue Feb 27 2007 hpj@suse.de
+* Mon Feb 26 2007 hpj@suse.de
- Added gdm-2.13.0.4-audit-login.patch, which fixes Novell bug
[#234133] (GDM cannot log authentication attempts).
-* Wed Feb 14 2007 hpj@suse.de
+* Tue Feb 13 2007 hpj@suse.de
- Add gdm-trunk-string-literal-cmp.patch. Fixes #233655.
* Mon Feb 12 2007 sbrabec@suse.cz
- Fixed reversed interpretation of
@@ -640,7 +574,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Fri Oct 27 2006 jhargadon@suse.de
- changed TryExec to be the same as Exec in gdmsetup.desktop to
resolve bug #210943
-* Tue Oct 24 2006 jhargadon@suse.de
+* Mon Oct 23 2006 jhargadon@suse.de
- mkdir /var/log/gdm (#213737)
* Thu Oct 12 2006 danw@suse.de
- Remove some dead patches. Rename a few for consistency
@@ -662,7 +596,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Tue Sep 26 2006 jhargadon@suse.de
- removed am_devperm.so from gdm.pamd and gdm-autologin.pamd
to resolve bug #206963
-* Thu Sep 21 2006 jhargadon@suse.de
+* Wed Sep 20 2006 jhargadon@suse.de
- modified SuSEconfig.gdm to reflect the name change of gdm.conf
to custom.conf. bug #206904
* Thu Sep 14 2006 jhargadon@suse.de
@@ -674,7 +608,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- 341619 - No longer save "Failsafe" sessions as user's default login
* Mon Sep 04 2006 kukuk@suse.de
- Add pam_loginuid.so to gdm.pamd and gdm-autologin.pamd
-* Thu Aug 31 2006 jhargadon@suse.de
+* Wed Aug 30 2006 jhargadon@suse.de
- update to version 2.15.10
- Now gdmlogin centers cursor in the GUI to ensure that the login
window always has focus
@@ -756,21 +690,21 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Per-display configuration is now supported.
- Greeter themes now support real GTK+ button types, making gdmgreeter
better support a11y and allow GTK themeable buttons.
-* Sat Jun 10 2006 hpj@suse.de
+* Fri Jun 09 2006 hpj@suse.de
- Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes
Novell bug #167344.
-* Thu Jun 01 2006 hpj@suse.de
+* Wed May 31 2006 hpj@suse.de
- Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219.
-* Thu Jun 01 2006 dreveman@suse.de
+* Wed May 31 2006 dreveman@suse.de
- Fix bg patch and change gdm.conf patch so we pass -br to X
server for black root window. (bnc 179847)
* Wed May 24 2006 sbrabec@suse.cz
- Do not display Japanese string in terminal, which doesn't support
it (#168736).
- Disabled beep on start (#174786).
-* Fri May 19 2006 hpj@suse.de
+* Thu May 18 2006 hpj@suse.de
- Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661.
* Tue May 16 2006 sbrabec@suse.cz
@@ -780,7 +714,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Fri May 12 2006 sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20).
-* Tue May 09 2006 hpj@suse.de
+* Mon May 08 2006 hpj@suse.de
- Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
[#119651].
- Made use of the tab key work like pressing enter if there is no
@@ -808,7 +742,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
service, bug #158786.
* Sat Mar 11 2006 coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in
-* Tue Mar 07 2006 federico@novell.com
+* Mon Mar 06 2006 federico@novell.com
- Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration
filename.
@@ -817,9 +751,9 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
in PLUS (148468#c17).
* Tue Feb 28 2006 sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14).
-* Sat Feb 25 2006 hpj@suse.de
+* Fri Feb 24 2006 hpj@suse.de
- Add patch to fix tab keynav.
-* Sat Feb 18 2006 sreeves@suse.de
+* Fri Feb 17 2006 sreeves@suse.de
- Update .desktop file (Name, GenericName, Comment, DocPath)
* Fri Feb 17 2006 gekker@suse.de
- Fix background color in GDM, it should be black
@@ -845,10 +779,10 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Added patch to require root auth to halt or reboot.
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
-* Thu Jan 19 2006 hpj@suse.de
+* Wed Jan 18 2006 hpj@suse.de
- Updated the domain logon patch with numerous new features and
cosmetic fixes.
-* Tue Jan 17 2006 hpj@suse.de
+* Mon Jan 16 2006 hpj@suse.de
- Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch.
* Fri Jan 13 2006 schwab@suse.de
@@ -868,37 +802,37 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Patch from upstream b.g.o (#152906)
* Mon Oct 17 2005 gekker@suse.de
- Make gdm.conf %%config(noreplace)
-* Fri Oct 14 2005 hpj@suse.de
+* Thu Oct 13 2005 hpj@suse.de
- Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable.
-* Fri Oct 14 2005 gekker@suse.de
+* Thu Oct 13 2005 gekker@suse.de
- Update to version 2.8.0.5
-* Wed Oct 05 2005 gekker@suse.de
+* Tue Oct 04 2005 gekker@suse.de
- Rediff patch for background colors
* Tue Oct 04 2005 gekker@suse.de
- Fix background colors to be consistent on startup
* Tue Sep 20 2005 sbrabec@suse.cz
- Removed references to build directory in installed .la files.
-* Fri Sep 16 2005 gekker@suse.de
+* Thu Sep 15 2005 gekker@suse.de
- Make Industrial the default Gtk+ theme (114173)
* Tue Sep 06 2005 sbrabec@suse.cz
- Updated to version 2.8.0.4.
-* Tue Aug 23 2005 gekker@suse.de
+* Mon Aug 22 2005 gekker@suse.de
- Update to version 2.8.0.3
- Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move
-* Sat Aug 20 2005 hpj@suse.de
+* Fri Aug 19 2005 hpj@suse.de
- Make the default session option work on autologin; we now get GNOME.
* Tue Aug 16 2005 sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver.
-* Sat Aug 13 2005 hpj@suse.de
+* Fri Aug 12 2005 hpj@suse.de
- Made gdm-autologin.pam not require a password.
* Fri Aug 12 2005 jpr@suse.de
- require xorg-x11-xnest for the gdmflexiserver -n option
-* Fri Aug 12 2005 gekker@suse.de
+* Thu Aug 11 2005 gekker@suse.de
- Update to version 2.8.0.2
- Make 64bit clean
-* Sun Jul 31 2005 jpr@suse.de
+* Sat Jul 30 2005 jpr@suse.de
- turn on compatibility symlink for all products
* Tue Jul 05 2005 gekker@suse.de
- Update to version 2.8.0.1
@@ -932,7 +866,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
* Fri Feb 11 2005 sbrabec@suse.cz
- Resource only /usr/share/xsessions for session desktop files.
- Fixed tcp_wrappers support on bi-arch.
-* Fri Feb 11 2005 gekker@suse.de
+* Thu Feb 10 2005 gekker@suse.de
- Update to version 2.6.0.7
* Wed Feb 09 2005 sbrabec@suse.cz
- Cleaned-up configuration and patches.
@@ -947,7 +881,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- add X-KDE-RootOnly to gdmsetup.desktop (#45807)
* Mon Nov 15 2004 kukuk@suse.de
- Use common-* PAM config files for gdm and gdm-autologin
-* Wed Oct 27 2004 mmj@suse.de
+* Tue Oct 26 2004 mmj@suse.de
- Locale rename no to nb
* Fri Oct 15 2004 sbrabec@suse.cz
- Implemented sysconfig displaymanager support.
@@ -956,7 +890,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
the industrial theme (#44330)
* Wed Aug 25 2004 clahey@suse.de
- Cache gdm help and show gdm in khelpcenter.
-* Tue Aug 17 2004 ro@suse.de
+* Mon Aug 16 2004 ro@suse.de
- fixed specfile
* Mon Aug 16 2004 shprasad@suse.de
- Fixes bug #60020
@@ -970,10 +904,10 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
time of login.
(In the spec file, the diff file, gdm-session-startkde.diff, is
applied at the %%install section)
-* Thu Jun 24 2004 dave@suse.de
+* Wed Jun 23 2004 dave@suse.de
- Added gdm-presession-kde-path.patch, adds /opt/kde3/bin to the
gdm path
-* Sat Jun 12 2004 clahey@suse.de
+* Fri Jun 11 2004 clahey@suse.de
- Added gdm-support-gdmctl.patch.
* Wed Jun 02 2004 mibarra@suse.de
- Fixed gdm.conf to use the correct group
@@ -987,7 +921,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- honor xdm scripts (#37852)
* Tue Mar 23 2004 sbrabec@suse.cz
- Non-UTF-8 locales removed from language menu.
-* Tue Mar 23 2004 hhetter@suse.de
+* Mon Mar 22 2004 hhetter@suse.de
- remove SuSEconfig.gdm; it's no longer needed to manage
the available sessions for gdm, as it is now using desktop
files to define it's sessions (#36267)
@@ -1023,7 +957,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- updated to version 2.4.1.6
* Mon Jul 28 2003 kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions
-* Fri Jul 25 2003 hhetter@suse.de
+* Thu Jul 24 2003 hhetter@suse.de
- move capplets to correct position
- fix build
* Wed Jul 16 2003 sbrabec@suse.cz
@@ -1036,7 +970,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Updated neededforbuild.
- Use %%find_lang.
- Prefix clash fix (capplets).
-* Wed May 28 2003 ro@suse.de
+* Tue May 27 2003 ro@suse.de
- remove unpackaged files from buildroot
* Mon May 26 2003 sbrabec@suse.cz
- Re-enabled UTF-8 alternatives for all locales.
@@ -1060,7 +994,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- updated to 2.4.1.3 [GNOME 2.2.0]
* Fri Feb 07 2003 kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so
-* Thu Jan 16 2003 ro@suse.de
+* Wed Jan 15 2003 ro@suse.de
- use gtk2-devel-packages and libjpeg in neededforbuild
* Tue Jan 07 2003 sbrabec@suse.cz
- Update to version 2.4.1.0.
@@ -1073,7 +1007,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
- Removed sox from neededforbuild.
* Thu Nov 28 2002 hhetter@suse.de
- updated to version 2.4.0.12 [GNOME 2.0.3]
-* Tue Nov 12 2002 ro@suse.de
+* Mon Nov 11 2002 ro@suse.de
- changed neededforbuild to
* Sun Nov 03 2002 mfabian@suse.de
- Bug Id #21407: correct wrong spelling of UTF-8 locale names