SHA256
1
0
forked from pool/gdm
OBS User unknown 2008-08-13 23:48:24 +00:00 committed by Git OBS Bridge
parent 1dad7090c8
commit be6da14d1b
35 changed files with 200 additions and 3467 deletions

View File

@ -1,21 +0,0 @@
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="gdm">
<allow send_interface="org.freedesktop.ConsoleKit.Manager"/>
<allow send_interface="org.freedesktop.ConsoleKit.Seat"/>
<allow send_interface="org.freedesktop.ConsoleKit.Session"/>
<allow send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="OpenConsoleWithParameters"/>
<allow send_interface="org.freedesktop.ConsoleKit.Session"
send_member="Lock"/>
<allow send_interface="org.freedesktop.ConsoleKit.Session"
send_member="Unlock"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.DBus.Properties" />
</policy>
</busconfig>

View File

@ -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

View File

@ -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 <syslog.h>
#include <locale.h>
+#define DBUS_API_SUBJECT_TO_CHANGE
+#include <dbus/dbus-glib.h>
+
/* This should be moved to auth.c I suppose */
#include <X11/Xauth.h>
@@ -70,6 +73,10 @@
#include <libdevinfo.h>
#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);
+}

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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);
}
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:adb64d70d9c2bf87a2f67520f40bba29bd76726baee21440f8b24cf3f6336061
size 3906797

View File

@ -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;

View File

@ -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

3
gdm-2.22.0.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6ff4bef13b15a1c54895eabcc37f7046fa13ca3bc449c9541c38e6993930fffa
size 2244663

View File

@ -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) {

View File

@ -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/

View File

@ -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

View File

@ -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 <glib/gi18n.h>
#include <librsvg/rsvg.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+
#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);

View File

@ -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" /* <seconds> */
#define GDM_NOTIFY_TIMED_LOGIN_ENABLE "TimedLoginEnable" /* <true/false as int> */
#define GDM_NOTIFY_DISALLOW_TCP "DisallowTCP" /* <true/false as int> */
+#define GDM_NOTIFY_SHOW_DOMAIN "ShowDomain" /* <true/false as int> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_FILE "SoundOnLoginFile" /* <sound file> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_SUCCESS_FILE "SoundOnLoginSuccessFile" /* <sound file> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* <sound file> */
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 <math.h>
#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
#include <librsvg/rsvg.h>
@@ -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, _("<Local>"),
+ -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, _("<Local>")))
+ {
+ 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,

View File

@ -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" /* <true/false as int> */
#define GDM_NOTIFY_ALLOW_ROOT "AllowRoot" /* <true/false as int> */
#define GDM_NOTIFY_ALLOW_REMOTE_AUTOLOGIN "AllowRemoteAutoLogin" /* <true/false as int> */
+#define GDM_NOTIFY_SECURE_SHUTDOWN "SecureShutdown" /* <true/false as int> */
#define GDM_NOTIFY_SYSTEM_MENU "SystemMenu" /* <true/false as int> */
#define GDM_NOTIFY_CONFIG_AVAILABLE "ConfigAvailable" /* <true/false as int> */
#define GDM_NOTIFY_CHOOSER_BUTTON "ChooserButton" /* <true/false as int> */
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,

View File

@ -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;

View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -1,161 +0,0 @@
Fix for https://bugzilla.novell.com/show_bug.cgi?id=343858
2008-01-15 Federico Mena Quintero <federico@novell.com>
* 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

View File

@ -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]

View File

@ -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=<pathvalue>".
#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=<pathvalue>".
#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 <dmconfdir>/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

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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,

View File

@ -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)

View File

@ -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 () {

View File

@ -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

View File

@ -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

View File

@ -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 Thu May 15 10:14:09 CEST 2008 - vuntz@suse.de

286
gdm.spec
View File

@ -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. # 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/ # Please submit bugfixes or comments via http://bugs.opensuse.org/
# #
@ -12,7 +19,7 @@
Name: gdm 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/groupadd
PreReq: /usr/sbin/useradd PreReq: /usr/sbin/useradd
PreReq: /usr/sbin/usermod PreReq: /usr/sbin/usermod
@ -22,8 +29,8 @@ PreReq: %fillup_prereq
PreReq: %insserv_prereq PreReq: %insserv_prereq
License: GPL v2 or later License: GPL v2 or later
Group: System/GUI/GNOME Group: System/GUI/GNOME
Version: 2.20.4 Version: 2.22.0
Release: 24 Release: 1
Summary: The GNOME 2.x Display Manager Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2 Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd Source1: gdm.pamd
@ -31,50 +38,20 @@ Source2: gdm-autologin.pamd
# FIXME: See FIXME in the script. # FIXME: See FIXME in the script.
Source3: SuSEconfig.gdm Source3: SuSEconfig.gdm
Source5: sysconfig.displaymanager-gdm Source5: sysconfig.displaymanager-gdm
Source6: dbus-gdm.conf Patch1: gdm-consolekit-helper-subdir.patch
# Only system integration patches are allowed in gdm.conf. Patch2: gdm-2.21.9-no-fatal-warnings.patch
# Any Look and Feel changes should be done in gdm-branding packages. Patch3: gdm-greeter-file-system-type-can-be-null.patch
Patch0: gdm-conf.patch Patch4: gdm-2.21.5-vt7-temporary-hack.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
Patch28: gdm-X_SERVER.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/ Url: http://www.gnome.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
DocDir: %{_defaultdocdir} DocDir: %{_defaultdocdir}
Provides: gdm2 Provides: gdm2
Obsoletes: gdm2 Obsoletes: gdm2
%if %suse_version <= 1020
PreReq: xorg-x11
%endif
Requires: gnome-themes klogd xorg-x11-server-extra Requires: gnome-themes klogd xorg-x11-server-extra
Requires: %{name}-branding Requires: %{name}-branding
Requires: %{name}-lang = %{version} Requires: %{name}-lang = %{version}
%gconf_schemas_prereq
%description %description
This version of GDM, the GNOME display manager, is based on GTK2 and is This version of GDM, the GNOME display manager, is based on GTK2 and is
@ -118,48 +95,18 @@ Authors:
%lang_package %lang_package
%prep %prep
%setup -q %setup -q
gnome-patch-translation-prepare %patch1 -p1
%patch0 %patch2 -p1
%patch3 -p1 %patch3 -p1
%patch5 -p1 %patch4 -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
%patch28 %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 %build
autoreconf -f -i 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" 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\ %configure\
--libexecdir=%{_prefix}/lib/gdm\ --libexecdir=%{_prefix}/lib \
--localstatedir=%{_localstatedir}/lib\ --localstatedir=%{_localstatedir} \
--with-atspi-dir=%{_prefix}/lib/at-spi \ --with-atspi-dir=%{_prefix}/lib/at-spi \
--enable-ipv6\ --enable-ipv6\
--disable-scrollkeeper\ --disable-scrollkeeper\
@ -168,6 +115,7 @@ make %{?jobs:-j%jobs}
%install %install
%makeinstall %makeinstall
%find_gconf_schemas
# Remove wrapper, it is not needed. # Remove wrapper, it is not needed.
mv $RPM_BUILD_ROOT%{_sbindir}/gdm-binary $RPM_BUILD_ROOT%{_sbindir}/gdm mv $RPM_BUILD_ROOT%{_sbindir}/gdm-binary $RPM_BUILD_ROOT%{_sbindir}/gdm
# Install PAM files and remove examples. # 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 mkdir -p $RPM_BUILD_ROOT/sbin/conf.d
cp %{S:3} $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 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 touch $RPM_BUILD_ROOT%{_sysconfdir}/gdm/gdm_sysconfig.conf
# gnome.desktop should be in gnome-session, ssh.desktop doesn't work mkdir -p $RPM_BUILD_ROOT{_localstatedir}/log/gdm
rm $RPM_BUILD_ROOT%{_datadir}/xsessions/ssh.desktop mkdir -p $RPM_BUILD_ROOT{_localstatedir}/run/gdm
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
%find_lang %{name} %find_lang %{name}
mkdir -p $RPM_BUILD_ROOT%{_bindir}
ln -s ../sbin/gdm $RPM_BUILD_ROOT%{_bindir}/gdm ln -s ../sbin/gdm $RPM_BUILD_ROOT%{_bindir}/gdm
rm $RPM_BUILD_ROOT%{_libdir}/*/*/*.*a
%fdupes $RPM_BUILD_ROOT %fdupes $RPM_BUILD_ROOT
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%pre %pre -f %{name}.schemas_pre
/usr/sbin/groupadd -r gdm 2> /dev/null || : /usr/sbin/groupadd -r gdm 2> /dev/null || :
/usr/sbin/useradd -r -o -g gdm -s /bin/false \ /usr/sbin/useradd -r -o -g gdm -s /bin/false \
-c "Gnome Display Manager daemon" -d /var/lib/gdm gdm 2> /dev/null || : -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
fi fi
%post %preun -f %{name}.schemas_preun
%if %suse_version < 1010 %posttrans -f %{name}.schemas_posttrans
%{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
%triggerin -- xorg-x11 %post
sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/init.d/xdm
%endif
%postun %postun
%insserv_cleanup %insserv_cleanup
%files %files -f %{name}.schemas_list
%defattr(-,root,root) %defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README TODO %doc AUTHORS COPYING ChangeLog NEWS README TODO
%dir %config %{_sysconfdir}/gdm %dir %config %{_sysconfdir}/gdm
%dir %{_datadir}/omf/gdm
%config %{_sysconfdir}/gdm/[IPXl]* %config %{_sysconfdir}/gdm/[IPXl]*
%config(noreplace) %{_sysconfdir}/gdm/custom.conf
%{_sysconfdir}/gdm/Xsession
%ghost %{_sysconfdir}/gdm/gdm_sysconfig.conf %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}/* %{_sbindir}/*
%{_bindir}/* %{_bindir}/*
%{_datadir}/gdm %{_datadir}/gdm
%exclude %{_datadir}/gdm/*.conf
#%{_datadir}/applications/*.desktop
%{_datadir}/pixmaps/*.png %{_datadir}/pixmaps/*.png
%{_datadir}/pixmaps/faces %{_datadir}/pixmaps/faces
%{_datadir}/icons/*/*/*/*.* %{_datadir}/icons/*/*/*/*.*
%{_libdir}/gtk-2.0/modules/* %{_prefix}/lib/*
%doc %{_mandir}/man1/*.* %{_prefix}/lib/bonobo/servers/*
%{_prefix}/lib/gdm %{_datadir}/gnome-2.0/ui/*
%attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm %attr(750,gdm,gdm) %dir %{_localstatedir}/lib/gdm
%attr(755,gdm,gdm) %dir %{_localstatedir}/run/gdm
%attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm %attr(750,gdm,gdm) %dir %{_localstatedir}/log/gdm
%config /etc/pam.d/* %config /etc/pam.d/*
/sbin/conf.d/SuSEconfig.gdm /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 %{_sysconfdir}/dbus-1/system.d/gdm.conf
%endif %{_sysconfdir}/gdm/gdm.schemas
%{_localstatedir}/lib/gdm/.gconf.mandatory/%gconf-tree.xml
%files lang -f %{name}.lang %{_localstatedir}/lib/gdm/.gconf.path
%files branding-upstream %files branding-upstream
%defattr(-,root,root) %defattr(-,root,root)
%{_datadir}/gdm/*.conf %config(noreplace) %{_sysconfdir}/gdm/custom.conf
%files lang -f %{name}.lang
%changelog %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 * Thu May 15 2008 vuntz@suse.de
- Update gdm-xdm-sessions.patch to run /etc/X11/xdm/Xstartup. Part - Update gdm-xdm-sessions.patch to run /etc/X11/xdm/Xstartup. Part
of bnc#368673. of bnc#368673.
@ -375,7 +309,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
displays. displays.
+ Build/configure fixes for Solaris. + Build/configure fixes for Solaris.
+ Translation updates. + Translation updates.
* Wed Nov 14 2007 hpj@suse.de * Tue Nov 13 2007 hpj@suse.de
- Removed second --with-atspi-dir from configure. - Removed second --with-atspi-dir from configure.
- Added gdm-tab-triggers-enter.patch, which fixes Novell bug - Added gdm-tab-triggers-enter.patch, which fixes Novell bug
[#334446]. [#334446].
@ -384,7 +318,7 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
(#337428) (#337428)
- Updated gdm-xdm-sessions.patch to run again the /etc/X11/xdm - Updated gdm-xdm-sessions.patch to run again the /etc/X11/xdm
scripts (#304399) 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 - Pass the --with-atspi-dir= flag to configure so the
at-spi-registryd is started correctly. Fixes Novell bug #337428. at-spi-registryd is started correctly. Fixes Novell bug #337428.
* Thu Oct 18 2007 maw@suse.de * 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. - Add abuild.patch.
* Thu Oct 11 2007 sbrabec@suse.cz * Thu Oct 11 2007 sbrabec@suse.cz
- Removed bogus dependency on mDNSResponder. - 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 - Added gdm-2.20.0-wait-for-restart.patch, which fixes Novell bug
[#326281]. [#326281].
* Thu Sep 20 2007 banderso@suse.de * 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 - The greeter.dtd file has been updated. Now the default GDM themes
validate with this dtd. (Dave Fincher) validate with this dtd. (Dave Fincher)
- Plus translation updates for a plethora of locales. - 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 - Fixed missing configuration variable definition in
gdm-2.8.0.7-domain-entry.patch. gdm-2.8.0.7-domain-entry.patch.
* Fri Aug 10 2007 sbrabec@suse.cz * 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 * Sat Aug 04 2007 maw@suse.de
- Use %%fdupes - Use %%fdupes
- Uncomment out the rm in %%clean. - 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. - Update to version 2.19.5.
- Fix up gdm-conf.patch. - Fix up gdm-conf.patch.
- Fix up gdm-2.19.3-reset-pam.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 * Tue Jul 24 2007 jpr@suse.de
- Add xorg-x11-server-extras for Xnest/Xephyr so that the defaults - Add xorg-x11-server-extras for Xnest/Xephyr so that the defaults
are set correctly (not an installation dep) 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). - Reenable gdm-conf.patch (#292837).
* Tue Jul 17 2007 coolo@suse.de * Tue Jul 17 2007 coolo@suse.de
- fix pointer arithmetic - fix pointer arithmetic
* Tue Jul 17 2007 mauro@suse.de * Mon Jul 16 2007 mauro@suse.de
- Update to version 2.19.3 - Update to version 2.19.3
- Clean up of the not applicable patches. - Clean up of the not applicable patches.
- Bugfixes for #448547, #448548, #443557. - 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 Fontenelle, Pema Geyleg, Priit Laes, Kjartan Maraas, Inaki Larranaga
Murgoitio, Kostas Papadimas, Ignacio Casal Quinteiro, Hendrik Richter, Murgoitio, Kostas Papadimas, Ignacio Casal Quinteiro, Hendrik Richter,
Changwoo Ryu, Claudio Saavedra) Changwoo Ryu, Claudio Saavedra)
* Sat Mar 31 2007 maw@suse.de * Fri Mar 30 2007 maw@suse.de
- Update to version 2.18.0 - Update to version 2.18.0
- b.g.o 415513, 417350, 415181, 409801, 409693, 406226, and 407687. - b.g.o 415513, 417350, 415181, 409801, 409693, 406226, and 407687.
* Fri Mar 30 2007 aj@suse.de * Fri Mar 30 2007 aj@suse.de
- Add pwdutils to BuildRequires. - 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 - 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 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 - Update to version 2.17.7
- Removeupstreamed gdm-autobuild-warning.patch, - Removeupstreamed gdm-autobuild-warning.patch,
gdm-bufferoverrun.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. [#400698], #399486, #352263, #395790, #394421.
* Fri Mar 02 2007 sbrabec@suse.cz * Fri Mar 02 2007 sbrabec@suse.cz
- Do not own /usr/share/xsessions (#229172). - 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 - Added gdm-2.13.0.4-audit-login.patch, which fixes Novell bug
[#234133] (GDM cannot log authentication attempts). [#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. - Add gdm-trunk-string-literal-cmp.patch. Fixes #233655.
* Mon Feb 12 2007 sbrabec@suse.cz * Mon Feb 12 2007 sbrabec@suse.cz
- Fixed reversed interpretation of - 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 * Fri Oct 27 2006 jhargadon@suse.de
- changed TryExec to be the same as Exec in gdmsetup.desktop to - changed TryExec to be the same as Exec in gdmsetup.desktop to
resolve bug #210943 resolve bug #210943
* Tue Oct 24 2006 jhargadon@suse.de * Mon Oct 23 2006 jhargadon@suse.de
- mkdir /var/log/gdm (#213737) - mkdir /var/log/gdm (#213737)
* Thu Oct 12 2006 danw@suse.de * Thu Oct 12 2006 danw@suse.de
- Remove some dead patches. Rename a few for consistency - 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 * Tue Sep 26 2006 jhargadon@suse.de
- removed am_devperm.so from gdm.pamd and gdm-autologin.pamd - removed am_devperm.so from gdm.pamd and gdm-autologin.pamd
to resolve bug #206963 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 - modified SuSEconfig.gdm to reflect the name change of gdm.conf
to custom.conf. bug #206904 to custom.conf. bug #206904
* Thu Sep 14 2006 jhargadon@suse.de * 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 - 341619 - No longer save "Failsafe" sessions as user's default login
* Mon Sep 04 2006 kukuk@suse.de * Mon Sep 04 2006 kukuk@suse.de
- Add pam_loginuid.so to gdm.pamd and gdm-autologin.pamd - 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 - update to version 2.15.10
- Now gdmlogin centers cursor in the GUI to ensure that the login - Now gdmlogin centers cursor in the GUI to ensure that the login
window always has focus 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. - Per-display configuration is now supported.
- Greeter themes now support real GTK+ button types, making gdmgreeter - Greeter themes now support real GTK+ button types, making gdmgreeter
better support a11y and allow GTK themeable buttons. 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 - Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes Active Directory domain if there was no stored preference. Fixes
Novell bug #167344. 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 - Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219. 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 - Fix bg patch and change gdm.conf patch so we pass -br to X
server for black root window. (bnc 179847) server for black root window. (bnc 179847)
* Wed May 24 2006 sbrabec@suse.cz * Wed May 24 2006 sbrabec@suse.cz
- Do not display Japanese string in terminal, which doesn't support - Do not display Japanese string in terminal, which doesn't support
it (#168736). it (#168736).
- Disabled beep on start (#174786). - 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, - Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661. gdmgreeter for remote logins. Fixes Novell bug #176661.
* Tue May 16 2006 sbrabec@suse.cz * 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 * Fri May 12 2006 sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in - Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20). 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 - Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
[#119651]. [#119651].
- Made use of the tab key work like pressing enter if there is no - 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. service, bug #158786.
* Sat Mar 11 2006 coolo@suse.de * Sat Mar 11 2006 coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in - 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 - Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration fillup_and_insserv with "displaymanager" for the configuration
filename. filename.
@ -817,9 +751,9 @@ sed -i s:DISPLAYMANAGER=/opt/gnome/sbin/gdm:DISPLAYMANAGER=/usr/sbin/gdm:g etc/i
in PLUS (148468#c17). in PLUS (148468#c17).
* Tue Feb 28 2006 sbrabec@suse.cz * Tue Feb 28 2006 sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14). - 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. - 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) - Update .desktop file (Name, GenericName, Comment, DocPath)
* Fri Feb 17 2006 gekker@suse.de * Fri Feb 17 2006 gekker@suse.de
- Fix background color in GDM, it should be black - 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. - Added patch to require root auth to halt or reboot.
* Wed Jan 25 2006 mls@suse.de * Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires - 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 - Updated the domain logon patch with numerous new features and
cosmetic fixes. 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 - Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch. working. Updated domain logon patch.
* Fri Jan 13 2006 schwab@suse.de * 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) - Patch from upstream b.g.o (#152906)
* Mon Oct 17 2005 gekker@suse.de * Mon Oct 17 2005 gekker@suse.de
- Make gdm.conf %%config(noreplace) - 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 - Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable. XAUTHLOCALHOSTNAME environment variable.
* Fri Oct 14 2005 gekker@suse.de * Thu Oct 13 2005 gekker@suse.de
- Update to version 2.8.0.5 - 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 - Rediff patch for background colors
* Tue Oct 04 2005 gekker@suse.de * Tue Oct 04 2005 gekker@suse.de
- Fix background colors to be consistent on startup - Fix background colors to be consistent on startup
* Tue Sep 20 2005 sbrabec@suse.cz * Tue Sep 20 2005 sbrabec@suse.cz
- Removed references to build directory in installed .la files. - 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) - Make Industrial the default Gtk+ theme (114173)
* Tue Sep 06 2005 sbrabec@suse.cz * Tue Sep 06 2005 sbrabec@suse.cz
- Updated to version 2.8.0.4. - 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 - Update to version 2.8.0.3
- Remove upstreamed autologin patch - Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move - 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. - Make the default session option work on autologin; we now get GNOME.
* Tue Aug 16 2005 sbrabec@suse.cz * Tue Aug 16 2005 sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver. - 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. - Made gdm-autologin.pam not require a password.
* Fri Aug 12 2005 jpr@suse.de * Fri Aug 12 2005 jpr@suse.de
- require xorg-x11-xnest for the gdmflexiserver -n option - 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 - Update to version 2.8.0.2
- Make 64bit clean - Make 64bit clean
* Sun Jul 31 2005 jpr@suse.de * Sat Jul 30 2005 jpr@suse.de
- turn on compatibility symlink for all products - turn on compatibility symlink for all products
* Tue Jul 05 2005 gekker@suse.de * Tue Jul 05 2005 gekker@suse.de
- Update to version 2.8.0.1 - 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 * Fri Feb 11 2005 sbrabec@suse.cz
- Resource only /usr/share/xsessions for session desktop files. - Resource only /usr/share/xsessions for session desktop files.
- Fixed tcp_wrappers support on bi-arch. - 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 - Update to version 2.6.0.7
* Wed Feb 09 2005 sbrabec@suse.cz * Wed Feb 09 2005 sbrabec@suse.cz
- Cleaned-up configuration and patches. - 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) - add X-KDE-RootOnly to gdmsetup.desktop (#45807)
* Mon Nov 15 2004 kukuk@suse.de * Mon Nov 15 2004 kukuk@suse.de
- Use common-* PAM config files for gdm and gdm-autologin - 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 - Locale rename no to nb
* Fri Oct 15 2004 sbrabec@suse.cz * Fri Oct 15 2004 sbrabec@suse.cz
- Implemented sysconfig displaymanager support. - 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) the industrial theme (#44330)
* Wed Aug 25 2004 clahey@suse.de * Wed Aug 25 2004 clahey@suse.de
- Cache gdm help and show gdm in khelpcenter. - Cache gdm help and show gdm in khelpcenter.
* Tue Aug 17 2004 ro@suse.de * Mon Aug 16 2004 ro@suse.de
- fixed specfile - fixed specfile
* Mon Aug 16 2004 shprasad@suse.de * Mon Aug 16 2004 shprasad@suse.de
- Fixes bug #60020 - 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. time of login.
(In the spec file, the diff file, gdm-session-startkde.diff, is (In the spec file, the diff file, gdm-session-startkde.diff, is
applied at the %%install section) 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 - Added gdm-presession-kde-path.patch, adds /opt/kde3/bin to the
gdm path gdm path
* Sat Jun 12 2004 clahey@suse.de * Fri Jun 11 2004 clahey@suse.de
- Added gdm-support-gdmctl.patch. - Added gdm-support-gdmctl.patch.
* Wed Jun 02 2004 mibarra@suse.de * Wed Jun 02 2004 mibarra@suse.de
- Fixed gdm.conf to use the correct group - 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) - honor xdm scripts (#37852)
* Tue Mar 23 2004 sbrabec@suse.cz * Tue Mar 23 2004 sbrabec@suse.cz
- Non-UTF-8 locales removed from language menu. - 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 - remove SuSEconfig.gdm; it's no longer needed to manage
the available sessions for gdm, as it is now using desktop the available sessions for gdm, as it is now using desktop
files to define it's sessions (#36267) 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 - updated to version 2.4.1.6
* Mon Jul 28 2003 kukuk@suse.de * Mon Jul 28 2003 kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions - 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 - move capplets to correct position
- fix build - fix build
* Wed Jul 16 2003 sbrabec@suse.cz * 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. - Updated neededforbuild.
- Use %%find_lang. - Use %%find_lang.
- Prefix clash fix (capplets). - Prefix clash fix (capplets).
* Wed May 28 2003 ro@suse.de * Tue May 27 2003 ro@suse.de
- remove unpackaged files from buildroot - remove unpackaged files from buildroot
* Mon May 26 2003 sbrabec@suse.cz * Mon May 26 2003 sbrabec@suse.cz
- Re-enabled UTF-8 alternatives for all locales. - 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] - updated to 2.4.1.3 [GNOME 2.2.0]
* Fri Feb 07 2003 kukuk@suse.de * Fri Feb 07 2003 kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so - 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 - use gtk2-devel-packages and libjpeg in neededforbuild
* Tue Jan 07 2003 sbrabec@suse.cz * Tue Jan 07 2003 sbrabec@suse.cz
- Update to version 2.4.1.0. - 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. - Removed sox from neededforbuild.
* Thu Nov 28 2002 hhetter@suse.de * Thu Nov 28 2002 hhetter@suse.de
- updated to version 2.4.0.12 [GNOME 2.0.3] - 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 <xf86 xdevel> to <x-devel-packages> - changed neededforbuild <xf86 xdevel> to <x-devel-packages>
* Sun Nov 03 2002 mfabian@suse.de * Sun Nov 03 2002 mfabian@suse.de
- Bug Id #21407: correct wrong spelling of UTF-8 locale names - Bug Id #21407: correct wrong spelling of UTF-8 locale names