diff options
Diffstat (limited to 'x11/gdm/files')
23 files changed, 0 insertions, 1073 deletions
diff --git a/x11/gdm/files/gdm.in b/x11/gdm/files/gdm.in deleted file mode 100644 index 972d370c3..000000000 --- a/x11/gdm/files/gdm.in +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -# $FreeBSD$ -# $MCom: ports/x11/gdm/files/gdm.in,v 1.37 2009/07/06 21:18:03 marcus Exp $ - -# PROVIDE: gdm -# REQUIRE: LOGIN cleanvar moused syscons dbus hald -# -# Add the following to /etc/rc.conf to start GDM at boot time: -# -# gdm_enable="YES" -# - -. %%RC_SUBR%% -. %%GNOME_SUBR%% - -gdm_enable=${gdm_enable-${gnome_enable}} -gdm_preserve_base_pam_conf=${gdm_preserve_base_pam_conf-NO} -gdm_lang=${gdm_lang-${LANG}} - -export PATH=/bin:/sbin:/usr/bin:/usr/sbin:%%LOCALBASE%%/bin:%%LOCALBASE%%/sbin - -name="gdm" -rcvar=`set_rcvar` -command="%%PREFIX%%/sbin/${name}" -pidfile="/var/run/${name}.pid" -procname="%%PREFIX%%/sbin/gdm-binary" -start_cmd="gdm_start" - -gdm_start() -{ - if ! checkyesno gdm_enable ; then - return 0 - fi - echo "Starting ${name}." - - # make sure there is no pam configuration for gdm service in base system - if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then - cp -p /etc/pam.d/gdm /etc/pam.d/gdm_disabled - rm -f /etc/pam.d/gdm - fi - - ( iter=0 - while ! ps -axoargs | grep "^/usr/libexec/getty " | grep -qv grep >/dev/null 2>&1; do - if [ ${iter} -eq 60 ]; then - break - fi - sleep 1 - iter=$(expr ${iter} + 1) - done - iter=0 - while ! %%LOCALBASE%%/bin/lshal >/dev/null 2>&1 ; do - if [ ${iter} -eq 60 ]; then - break - fi - sleep 1 - iter=$(expr ${iter} + 1) - done - LANG=${gdm_lang} ${command} ${gdm_flags} ) & -} - -load_rc_config ${name} -run_rc_command "$1" diff --git a/x11/gdm/files/gdm.pam.in b/x11/gdm/files/gdm.pam.in deleted file mode 100644 index e4a67f735..000000000 --- a/x11/gdm/files/gdm.pam.in +++ /dev/null @@ -1,22 +0,0 @@ -# -# $FreeBSD$ -# $MCom: ports/x11/gdm/files/gdm.pam.in,v 1.7 2009/07/06 21:18:03 marcus Exp $ -# -# PAM configuration for the "gdm" service -# - -# auth -#auth sufficient pam_krb5.so no_warn try_first_pass -#auth sufficient pam_ssh.so no_warn try_first_pass -auth required pam_unix.so no_warn try_first_pass -%%PAM_KEYRING%%auth optional %%LOCALBASE%%/lib/pam_gnome_keyring.so - -# account -account required pam_nologin.so -#account required pam_krb5.so -account required pam_unix.so - -# session -#session optional pam_ssh.so -session required pam_permit.so -%%PAM_KEYRING%%session optional %%LOCALBASE%%/lib/pam_gnome_keyring.so auto_start diff --git a/x11/gdm/files/patch-common_Makefile.in b/x11/gdm/files/patch-common_Makefile.in deleted file mode 100644 index 2ab0a5001..000000000 --- a/x11/gdm/files/patch-common_Makefile.in +++ /dev/null @@ -1,20 +0,0 @@ ---- common/Makefile.in.orig 2008-08-20 14:34:16.000000000 -0400 -+++ common/Makefile.in 2008-08-20 14:36:50.000000000 -0400 -@@ -428,7 +428,8 @@ gdm_crash_logger_CPPFLAGS = \ - -DLOCALSTATEDIR=\"$(localstatedir)\" \ - $(NULL) - --gdm_crash_logger_LDADD = $(GTHREAD_LIBS) -+gdm_crash_logger_LDADD = $(GTHREAD_LIBS) \ -+ -lexecinfo - @MKDTEMP_MISSING_FALSE@MKDTEMP_FILES = - @MKDTEMP_MISSING_TRUE@MKDTEMP_FILES = mkdtemp.c mkdtemp.h - libgdmcommon_la_SOURCES = \ -@@ -473,6 +474,7 @@ libgdmcommon_la_CFLAGS = \ - $(NULL) - - libgdmcommon_la_LIBADD = \ -+ -lexecinfo \ - $(NULL) - - libgdmcommon_la_LDFLAGS = \ diff --git a/x11/gdm/files/patch-common_gdm-address.c b/x11/gdm/files/patch-common_gdm-address.c deleted file mode 100644 index a827d4b6d..000000000 --- a/x11/gdm/files/patch-common_gdm-address.c +++ /dev/null @@ -1,45 +0,0 @@ ---- common/gdm-address.c.orig 2009-02-19 21:45:13.000000000 -0500 -+++ common/gdm-address.c 2009-05-11 02:38:17.000000000 -0400 -@@ -29,6 +29,8 @@ - #include <stropts.h> - #endif - #include <string.h> -+#include <sys/types.h> -+#include <sys/param.h> - #ifdef HAVE_SYS_SOCKET_H - #include <sys/socket.h> - #endif -@@ -37,7 +39,6 @@ - #endif - #include <netdb.h> - #include <sys/ioctl.h> --#include <net/if.h> - - #ifndef G_OS_WIN32 - #include <sys/select.h> -@@ -47,6 +48,7 @@ - #include <winsock2.h> - #include <ws2tcpip.h> - #endif -+#include <net/if.h> - - #include <glib-object.h> - -@@ -206,7 +208,7 @@ gdm_address_get_hostname (GdmAddress *ad - - host [0] = '\0'; - res = getnameinfo ((const struct sockaddr *)address->ss, -- sizeof (struct sockaddr_storage), -+ gdm_sockaddr_len (address->ss), - host, sizeof (host), - NULL, 0, - 0); -@@ -245,7 +247,7 @@ gdm_address_get_numeric_info (GdmAddress - host [0] = '\0'; - serv [0] = '\0'; - res = getnameinfo ((const struct sockaddr *)address->ss, -- sizeof (struct sockaddr_storage), -+ gdm_sockaddr_len (address->ss), - host, sizeof (host), - serv, sizeof (serv), - NI_NUMERICHOST | NI_NUMERICSERV); diff --git a/x11/gdm/files/patch-common_gdm-address.h b/x11/gdm/files/patch-common_gdm-address.h deleted file mode 100644 index a4fd39310..000000000 --- a/x11/gdm/files/patch-common_gdm-address.h +++ /dev/null @@ -1,11 +0,0 @@ ---- common/gdm-address.h.orig 2009-05-09 21:08:07.000000000 -0400 -+++ common/gdm-address.h 2009-05-09 21:08:34.000000000 -0400 -@@ -36,6 +36,8 @@ G_BEGIN_DECLS - - #define GDM_TYPE_ADDRESS (gdm_address_get_type ()) - -+#define gdm_sockaddr_len(sa) (((struct sockaddr *)sa)->sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) -+ - typedef struct _GdmAddress GdmAddress; - - GType gdm_address_get_type (void); diff --git a/x11/gdm/files/patch-common_gdm-common.c b/x11/gdm/files/patch-common_gdm-common.c deleted file mode 100644 index 9fa4acafa..000000000 --- a/x11/gdm/files/patch-common_gdm-common.c +++ /dev/null @@ -1,13 +0,0 @@ ---- common/gdm-common.c.orig 2007-12-23 10:29:20.000000000 +0100 -+++ common/gdm-common.c 2007-12-23 10:29:34.000000000 +0100 -@@ -33,6 +33,10 @@ - - #include "gdm-common.h" - -+#ifndef ENODATA -+#define ENODATA EAGAIN -+#endif -+ - void - gdm_set_fatal_warnings_if_unstable (void) - { diff --git a/x11/gdm/files/patch-config.h.in b/x11/gdm/files/patch-config.h.in deleted file mode 100644 index d17901da1..000000000 --- a/x11/gdm/files/patch-config.h.in +++ /dev/null @@ -1,12 +0,0 @@ ---- config.h.in.orig 2007-11-02 20:48:28.000000000 -0400 -+++ config.h.in 2007-11-02 20:49:39.000000000 -0400 -@@ -23,6 +23,9 @@ - #undef HAVE_LC_MESSAGES - #undef HAVE_LIBSM - #undef HAVE_LIBXDMCP -+#undef HAVE_LOGIN -+#undef HAVE_LOGOUT -+#undef HAVE_LOGWTMP - #undef HAVE_LOGINCAP - #undef HAVE_LOGINDEVPERM - #undef HAVE_LOGINRESTRICTIONS diff --git a/x11/gdm/files/patch-configure b/x11/gdm/files/patch-configure deleted file mode 100644 index 220aa1cb6..000000000 --- a/x11/gdm/files/patch-configure +++ /dev/null @@ -1,138 +0,0 @@ ---- configure.orig 2009-09-22 12:26:34.000000000 +0200 -+++ configure 2009-09-22 12:29:51.000000000 +0200 -@@ -22494,10 +22494,12 @@ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= \$GLIB_REQUIRED_VERSION - gio-2.0 >= \$GLIB_REQUIRED_VERSION -+ hal - \"") >&5 - ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 -@@ -22519,10 +22521,12 @@ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= \$GLIB_REQUIRED_VERSION - gio-2.0 >= \$GLIB_REQUIRED_VERSION -+ hal - \"") >&5 - ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 -@@ -22530,6 +22534,7 @@ - pkg_cv_COMMON_LIBS=`$PKG_CONFIG --libs "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>/dev/null` - else - pkg_failed=yes -@@ -22551,11 +22556,13 @@ - COMMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>&1` - else - COMMON_PKG_ERRORS=`$PKG_CONFIG --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>&1` - fi - # Put the nasty error message in config.log where it belongs -@@ -22564,6 +22571,7 @@ - { { echo "$as_me:$LINENO: error: Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ) were not met: - - $COMMON_PKG_ERRORS -@@ -22578,6 +22586,7 @@ - echo "$as_me: error: Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ) were not met: - - $COMMON_PKG_ERRORS -@@ -22634,10 +22643,12 @@ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= \$GLIB_REQUIRED_VERSION - gio-2.0 >= \$GLIB_REQUIRED_VERSION -+ hal - \"") >&5 - ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 -@@ -22645,6 +22656,7 @@ - pkg_cv_DAEMON_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>/dev/null` - else - pkg_failed=yes -@@ -22659,10 +22671,12 @@ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1 >= \$DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= \$GLIB_REQUIRED_VERSION - gio-2.0 >= \$GLIB_REQUIRED_VERSION -+ hal - \"") >&5 - ($PKG_CONFIG --exists --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 -@@ -22670,6 +22684,7 @@ - pkg_cv_DAEMON_LIBS=`$PKG_CONFIG --libs "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>/dev/null` - else - pkg_failed=yes -@@ -22691,11 +22706,13 @@ - DAEMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>&1` - else - DAEMON_PKG_ERRORS=`$PKG_CONFIG --print-errors "dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - " 2>&1` - fi - # Put the nasty error message in config.log where it belongs -@@ -22704,6 +22721,7 @@ - { { echo "$as_me:$LINENO: error: Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ) were not met: - - $DAEMON_PKG_ERRORS -@@ -22718,6 +22736,7 @@ - echo "$as_me: error: Package requirements (dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION - gobject-2.0 >= $GLIB_REQUIRED_VERSION - gio-2.0 >= $GLIB_REQUIRED_VERSION -+ hal - ) were not met: - - $DAEMON_PKG_ERRORS diff --git a/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c b/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c deleted file mode 100644 index 692c27516..000000000 --- a/x11/gdm/files/patch-daemon-gdm-xdmcp-display-factory.c +++ /dev/null @@ -1,138 +0,0 @@ ---- daemon/gdm-xdmcp-display-factory.c.orig 2009-07-20 03:09:09.000000000 +0200 -+++ daemon/gdm-xdmcp-display-factory.c 2009-07-20 09:54:25.000000000 +0200 -@@ -35,6 +35,7 @@ - #include <netdb.h> - #include <arpa/inet.h> - #include <net/if.h> -+#include <netinet/in.h> - #ifdef HAVE_SYS_SOCKIO_H - #include <sys/sockio.h> - #endif -@@ -76,7 +77,7 @@ int deny_severity = LOG_WARNING; - #define DEFAULT_USE_MULTICAST FALSE - #define DEFAULT_MULTICAST_ADDRESS "ff02::1" - #define DEFAULT_HONOR_INDIRECT TRUE --#define DEFAULT_MAX_DISPLAYS_PER_HOST 1 -+#define DEFAULT_MAX_DISPLAYS_PER_HOST 2 - #define DEFAULT_MAX_DISPLAYS 16 - #define DEFAULT_MAX_PENDING_DISPLAYS 4 - #define DEFAULT_MAX_WAIT 30 -@@ -404,6 +405,11 @@ static int - create_socket (struct addrinfo *ai) - { - int sock; -+#ifdef ENABLE_IPV6 -+#ifdef IPV6_V6ONLY -+ int off = 0; -+#endif -+#endif - - sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (sock < 0) { -@@ -411,6 +417,16 @@ create_socket (struct addrinfo *ai) - return sock; - } - -+#ifdef ENABLE_IPV6 -+#ifdef IPV6_V6ONLY -+ if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&off, sizeof (off)) < 0) { -+ g_warning ("setsockopt: %s", g_strerror (errno)); -+ close (sock); -+ return -1; -+ } -+#endif -+#endif -+ - if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0) { - g_warning ("bind: %s", g_strerror (errno)); - close (sock); -@@ -835,7 +851,7 @@ gdm_xdmcp_send_willing (GdmXdmcpDisplayF - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - - g_free (status.data); - } -@@ -879,7 +895,7 @@ gdm_xdmcp_send_unwilling (GdmXdmcpDispla - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - - last_time = time (NULL); - } -@@ -988,7 +1004,7 @@ gdm_xdmcp_send_forward_query (GdmXdmcpDi - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (ic->chosen_address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (ic->chosen_address))); - - g_free (port.data); - g_free (addr.data); -@@ -1691,7 +1707,7 @@ gdm_xdmcp_really_send_managed_forward (G - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - - g_free (addr.data); - } -@@ -1772,7 +1788,7 @@ gdm_xdmcp_send_got_managed_forward (GdmX - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - } - - static gboolean -@@ -1945,7 +1961,7 @@ gdm_xdmcp_send_decline (GdmXdmcpDisplayF - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - - /* Send MANAGED_FORWARD to indicate that the connection - * reached some sort of resolution */ -@@ -2093,7 +2109,7 @@ gdm_xdmcp_send_accept (GdmXdmcpDisplayFa - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - - host = NULL; - gdm_address_get_numeric_info (address, &host, NULL); -@@ -2424,7 +2440,7 @@ gdm_xdmcp_send_failed (GdmXdmcpDisplayFa - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - } - - static void -@@ -2448,7 +2464,7 @@ gdm_xdmcp_send_refuse (GdmXdmcpDisplayFa - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - - /* - * This was from a forwarded query quite apparently so -@@ -2719,7 +2735,7 @@ gdm_xdmcp_send_alive (GdmXdmcpDisplayFac - XdmcpFlush (factory->priv->socket_fd, - &factory->priv->buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - } - - static void diff --git a/x11/gdm/files/patch-daemon_Makefile.in b/x11/gdm/files/patch-daemon_Makefile.in deleted file mode 100644 index 137352970..000000000 --- a/x11/gdm/files/patch-daemon_Makefile.in +++ /dev/null @@ -1,18 +0,0 @@ ---- daemon/Makefile.in.orig 2009-05-31 15:51:18.000000000 -0400 -+++ daemon/Makefile.in 2009-05-31 15:56:32.000000000 -0400 -@@ -525,6 +525,7 @@ test_session_LDADD = \ - $(XLIB_LIBS) \ - $(EXTRA_DAEMON_LIBS) \ - $(DAEMON_LIBS) \ -+ $(EXTRA_DAEMON_LIBS) \ - $(PAM_LIBS) \ - $(NULL) - -@@ -660,6 +661,7 @@ gdm_session_worker_SOURCES = session-wor - gdm_session_worker_LDFLAGS = \ - $(XLIB_LIBS) \ - $(PAM_LIBS) \ -+ $(EXTRA_DAEMON_LIBS) \ - $(NULL) - - gdm_session_worker_LDADD = \ diff --git a/x11/gdm/files/patch-daemon_gdm-session-worker.c b/x11/gdm/files/patch-daemon_gdm-session-worker.c deleted file mode 100644 index 362a116ea..000000000 --- a/x11/gdm/files/patch-daemon_gdm-session-worker.c +++ /dev/null @@ -1,71 +0,0 @@ ---- daemon/gdm-session-worker.c.orig 2009-09-21 22:05:27.000000000 +0200 -+++ daemon/gdm-session-worker.c 2009-09-22 12:33:59.000000000 +0200 -@@ -31,6 +31,9 @@ - #include <errno.h> - #include <grp.h> - #include <pwd.h> -+#ifdef HAVE_LOGINCAP -+#include <login_cap.h> -+#endif - - #ifdef HAVE_LOGINDEVPERM - #include <libdevinfo.h> -@@ -340,7 +343,7 @@ gdm_session_execute (const char *file, - * what to search if PATH is unset. POSIX may, dunno. - */ - -- path = "/bin:/usr/bin:."; -+ path = "/bin:/usr/bin:/usr/local/bin:."; - } - - len = strlen (file) + 1; -@@ -1995,15 +1998,16 @@ gdm_session_worker_start_user_session (G - char *cachedirname; - char *home_dir; - int fd; -+#ifdef HAVE_LOGINCAP -+ char *login = worker->priv->username; -+ struct passwd *pwent = getpwnam (login); -+#endif - - /* Make sure cachedir gets created before we drop to user */ - cachedirname = gdm_session_worker_create_cachedir (worker); - g_free (cachedirname); - -- if (setuid (worker->priv->uid) < 0) { -- g_debug ("GdmSessionWorker: could not reset uid - %s", g_strerror (errno)); -- _exit (1); -- } -+ /* Call setsid() before setusercontext() */ - - if (setsid () < 0) { - g_debug ("GdmSessionWorker: could not set pid '%u' as leader of new session and process group - %s", -@@ -2011,6 +2015,28 @@ gdm_session_worker_start_user_session (G - _exit (2); - } - -+#ifdef HAVE_LOGINCAP -+ if (setusercontext (NULL, pwent, pwent->pw_uid, -+ LOGIN_SETLOGIN | LOGIN_SETPATH | -+ LOGIN_SETPRIORITY | LOGIN_SETRESOURCES | -+ LOGIN_SETUMASK | LOGIN_SETUSER | -+ LOGIN_SETENV) < 0) { -+ g_debug ("%s: setusercontext () failed for %s. " -+ "Aborting.", "gdm_session_worker_start_user_session", -+ login ? login : "(null)"); -+ } -+ -+ /* Propagate PATH environment variable from user context to child processes */ -+ -+ gdm_session_worker_set_environment_variable (worker, "PATH", getenv ("PATH")); -+ -+#else -+ if (setuid (worker->priv->uid) < 0) { -+ g_debug ("GdmSessionWorker: could not reset uid - %s", g_strerror (errno)); -+ _exit (1); -+ } -+#endif -+ - environment = gdm_session_worker_get_environment (worker); - - g_assert (geteuid () == getuid ()); diff --git a/x11/gdm/files/patch-data_Xsession.in b/x11/gdm/files/patch-data_Xsession.in deleted file mode 100644 index 894c97d16..000000000 --- a/x11/gdm/files/patch-data_Xsession.in +++ /dev/null @@ -1,39 +0,0 @@ ---- data/Xsession.in.orig 2008-05-12 20:25:54.000000000 -0400 -+++ data/Xsession.in 2008-06-09 01:29:59.000000000 -0400 -@@ -231,12 +231,31 @@ if [ "x$command" = "xdefault" ] ; then - fi - fi - -+is_gnome=0 -+if [ "x$command" = "xgnome-session" ]; then -+ is_gnome=1 -+fi -+ -+# add seahorse-agent if found -+if [ ${is_gnome} = 1 ]; then -+ seahorseagent="`gdmwhich seahorse-agent`" -+ if [ -n "$seahorseagent" ] && [ -x "$seahorseagent" ] && [ -z "$GPG_AGENT_INFO" ] ; then -+ command="dbus-launch --exit-with-session $seahorseagent --execute $command" -+ elif [ -z "$seahorseagent" ] ; then -+ echo "$0: seahorse-agent not found!" -+ 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!" -+# ssh-agent functionality is handled by gnome-keyring-daemon which is launched -+# from gnome-session -+if [ ${is_gnome} != 1 ]; then -+ 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 - fi - - echo "$0: Setup done, will execute: $command" diff --git a/x11/gdm/files/patch-data_gconf.path b/x11/gdm/files/patch-data_gconf.path deleted file mode 100644 index 2efdb3cc9..000000000 --- a/x11/gdm/files/patch-data_gconf.path +++ /dev/null @@ -1,9 +0,0 @@ ---- data/gconf.path.orig 2008-12-26 17:04:03.000000000 -0500 -+++ data/gconf.path 2008-12-26 17:04:13.000000000 -0500 -@@ -1,5 +1,5 @@ - # treat system-wide settings as mandatory --xml:readonly:/etc/gconf/gconf.xml.system -+xml:readonly:%%LOCALBASE%%/etc/gconf/gconf.xml.system - - # override some settings - # we treat settings in this location as diff --git a/x11/gdm/files/patch-data_gdm.schemas.in.in b/x11/gdm/files/patch-data_gdm.schemas.in.in deleted file mode 100644 index f52dd8bd5..000000000 --- a/x11/gdm/files/patch-data_gdm.schemas.in.in +++ /dev/null @@ -1,11 +0,0 @@ ---- data/gdm.schemas.in.in.orig 2009-05-16 18:17:53.000000000 -0400 -+++ data/gdm.schemas.in.in 2009-05-16 18:18:01.000000000 -0400 -@@ -77,7 +77,7 @@ - <schema> - <key>xdmcp/DisplaysPerHost</key> - <signature>i</signature> -- <default>1</default> -+ <default>2</default> - </schema> - <schema> - <key>xdmcp/Port</key> diff --git a/x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in b/x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in deleted file mode 100644 index 7febf5165..000000000 --- a/x11/gdm/files/patch-data_greeter-autostart_gdm-simple-greeter.desktop.in.in +++ /dev/null @@ -1,7 +0,0 @@ ---- data/greeter-autostart/gdm-simple-greeter.desktop.in.in.orig 2008-11-23 22:22:04.000000000 -0500 -+++ data/greeter-autostart/gdm-simple-greeter.desktop.in.in 2008-11-23 22:22:09.000000000 -0500 -@@ -5,4 +5,3 @@ Exec=@LIBEXECDIR@/gdm-simple-greeter - OnlyShowIn=GNOME; - X-GNOME-Autostart-Phase=Application - X-GNOME-Autostart-Notify=true --X-GNOME-AutoRestart=true diff --git a/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c b/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c deleted file mode 100644 index 340e955b3..000000000 --- a/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c +++ /dev/null @@ -1,38 +0,0 @@ ---- gui/simple-chooser/gdm-host-chooser-widget.c.orig 2009-02-19 21:45:09.000000000 -0500 -+++ gui/simple-chooser/gdm-host-chooser-widget.c 2009-05-11 02:34:20.000000000 -0400 -@@ -311,7 +311,7 @@ do_ping (GdmHostChooserWidget *widget, - res = XdmcpFlush (widget->priv->socket_fd, - &widget->priv->broadcast_buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - if (! res) { - g_warning ("Unable to flush the XDMCP broadcast packet: %s", g_strerror (errno)); - } -@@ -328,7 +328,7 @@ do_ping (GdmHostChooserWidget *widget, - res = XdmcpFlush (widget->priv->socket_fd, - &widget->priv->query_buf, - (XdmcpNetaddr)gdm_address_peek_sockaddr_storage (address), -- (int)sizeof (struct sockaddr_storage)); -+ (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); - if (! res) { - g_warning ("Unable to flush the XDMCP query packet"); - } -@@ -442,7 +442,7 @@ find_broadcast_addresses (GdmHostChooser - /* paranoia */ - ifreq.ifr_name[sizeof (ifreq.ifr_name) - 1] = '\0'; - -- if (ioctl (sock, SIOCGIFFLAGS, &ifreq) < 0) { -+ if ((ioctl (sock, SIOCGIFFLAGS, &ifreq) < 0) && (errno != ENXIO)) { - g_warning ("Could not get SIOCGIFFLAGS for %s", ifr[i].ifr_name); - } - -@@ -542,6 +542,8 @@ xdmcp_init (GdmHostChooserWidget *widget - #ifdef ENABLE_IPV6 - widget->priv->socket_fd = socket (AF_INET6, SOCK_DGRAM, 0); - if (widget->priv->socket_fd != -1) { -+ int off = 0; -+ setsockopt(widget->priv->socket_fd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&off, sizeof (off)); - widget->priv->have_ipv6 = TRUE; - } - #endif diff --git a/x11/gdm/files/patch-gui_simple-greeter_Makefile.in b/x11/gdm/files/patch-gui_simple-greeter_Makefile.in deleted file mode 100644 index 56d49b99b..000000000 --- a/x11/gdm/files/patch-gui_simple-greeter_Makefile.in +++ /dev/null @@ -1,11 +0,0 @@ ---- gui/simple-greeter/Makefile.in.orig 2008-02-13 01:57:37.000000000 -0500 -+++ gui/simple-greeter/Makefile.in 2008-02-13 01:57:44.000000000 -0500 -@@ -445,7 +445,7 @@ INCLUDES = \ - -DGDMCONFDIR=\"$(gdmconfdir)\" \ - -DDATADIR=\""$(datadir)"\" \ - -DSYSCONFDIR=\""$(sysconfdir)"\" \ -- -DLIBLOCALEDIR=\""$(prefix)/lib/locale"\" \ -+ -DLIBLOCALEDIR=\""$(prefix)/share/locale"\" \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - -DGLADEDIR=\""$(pkgdatadir)"\" \ - -DLIBEXECDIR=\""$(libexecdir)"\" \ diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c deleted file mode 100644 index 55f6d7ec8..000000000 --- a/x11/gdm/files/patch-gui_simple-greeter_gdm-greeter-login-window.c +++ /dev/null @@ -1,155 +0,0 @@ ---- gui/simple-greeter/gdm-greeter-login-window.c.orig 2009-10-24 20:05:24.000000000 -0400 -+++ gui/simple-greeter/gdm-greeter-login-window.c 2009-10-24 20:11:02.000000000 -0400 -@@ -56,10 +56,6 @@ - #include <dbus/dbus-glib.h> - #include <dbus/dbus-glib-lowlevel.h> - --#ifdef HAVE_DEVICEKIT_POWER --#include <devkit-power-gobject/devicekit-power.h> --#endif -- - #include "gdm-settings-client.h" - #include "gdm-settings-keys.h" - #include "gdm-profile.h" -@@ -83,6 +79,10 @@ - #define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat" - #define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session" - -+#define GPM_DBUS_NAME "org.freedesktop.PowerManagement" -+#define GPM_DBUS_PATH "/org/freedesktop/PowerManagement" -+#define GPM_DBUS_INTERFACE "org.freedesktop.PowerManagement" -+ - #define GLADE_XML_FILE "gdm-greeter-login-window.glade" - - #define KEY_GREETER_DIR "/apps/gdm/simple-greeter" -@@ -477,22 +477,46 @@ adjust_other_login_visibility(GdmGreeter - } - } - --#ifdef HAVE_DEVICEKIT_POWER - static gboolean - can_suspend (GdmGreeterLoginWindow *login_window) - { -- gboolean ret; -- DkpClient *dkp_client; -+ DBusGConnection *connection; -+ DBusGProxy *proxy; -+ GError *error; -+ gboolean ret; -+ gboolean res; -+ -+ error = NULL; -+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); -+ if (error != NULL) { -+ g_warning ("Couldn't connect to power manager: %s", error->message); -+ g_error_free (error); -+ return FALSE; -+ } -+ proxy = dbus_g_proxy_new_for_name (connection, -+ GPM_DBUS_NAME, -+ GPM_DBUS_PATH, -+ GPM_DBUS_INTERFACE); -+ -+ ret = FALSE; -+ -+ res = dbus_g_proxy_call (proxy, "CanSuspend", -+ &error, -+ G_TYPE_INVALID, -+ G_TYPE_BOOLEAN, -+ &ret, -+ G_TYPE_INVALID); -+ if (!res) { -+ if (error != NULL) { -+ g_warning ("Could not ask power manager if user can suspend: %s", -+ error->message); -+ g_error_free (error); -+ } -+ ret = FALSE; -+ } - -- /* use DeviceKit-power to get data */ -- dkp_client = dkp_client_new (); -- g_object_get (dkp_client, -- "can-suspend", &ret, -- NULL); -- g_object_unref (dkp_client); -- return ret; -+ return ret; - } --#endif - - static void - remove_sensitize_power_buttons_timeout (GdmGreeterLoginWindow *login_window) -@@ -544,11 +568,7 @@ switch_mode (GdmGreeterLoginWindow *logi - - show_restart_buttons = get_show_restart_buttons (login_window); - --#ifdef HAVE_DEVICEKIT_POWER - show_suspend_button = can_suspend (login_window); --#else -- show_suspend_button = FALSE; --#endif - - /* we want to run this even if we're supposed to - be in the mode already so that we reset everything -@@ -634,25 +654,39 @@ do_disconnect (GdmGreeterLoginWindow *lo - gtk_main_quit (); - } - --#ifdef HAVE_DEVICEKIT_POWER - static void - do_suspend (GdmGreeterLoginWindow *login_window) - { -- gboolean ret; -- DkpClient *dkp_client; -- GError *error = NULL; -- -- /* use DeviceKit-power to get data */ -- dkp_client = dkp_client_new (); -- ret = dkp_client_suspend (dkp_client, &error); -- if (!ret) { -+ GError *error; -+ DBusGConnection *connection; -+ DBusGProxy *proxy; -+ -+ g_debug ("GdmGreeterLoginWindow: Suspend button clicked"); -+ -+ error = NULL; -+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); -+ if (error != NULL) { - g_warning ("Couldn't suspend: %s", error->message); - g_error_free (error); - return; - } -- g_object_unref (dkp_client); -+ proxy = dbus_g_proxy_new_for_name (connection, -+ GPM_DBUS_NAME, -+ GPM_DBUS_PATH, -+ GPM_DBUS_INTERFACE); -+ error = NULL; -+ dbus_g_proxy_call (proxy, -+ "Suspend", -+ &error, -+ G_TYPE_INVALID, -+ G_TYPE_INVALID); -+ if (error != NULL) { -+ g_warning ("Couldn't suspend: %s", error->message); -+ g_error_free (error); -+ return; -+ } -+ g_object_unref (proxy); - } --#endif - - static void - delete_entry_text (GtkWidget *entry) -@@ -971,9 +1005,7 @@ static void - suspend_button_clicked (GtkButton *button, - GdmGreeterLoginWindow *login_window) - { --#ifdef HAVE_DEVICEKIT_POWER - do_suspend (login_window); --#endif - } - - diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c deleted file mode 100644 index 675925aa9..000000000 --- a/x11/gdm/files/patch-gui_simple-greeter_gdm-languages.c +++ /dev/null @@ -1,45 +0,0 @@ ---- gui/simple-greeter/gdm-languages.c.orig 2009-07-20 03:09:09.000000000 +0200 -+++ gui/simple-greeter/gdm-languages.c 2009-07-20 10:02:41.000000000 +0200 -@@ -168,13 +168,13 @@ gdm_parse_language_name (const char *nam - *codesetp = NULL; - } - -- if (*codesetp != NULL) { -+/* if (*codesetp != NULL) { - char *codeset; - - codeset = normalize_codeset (*codesetp); - g_free (*codesetp); - *codesetp = codeset; -- } -+ }*/ - } - - if (modifierp != NULL) { -@@ -314,7 +314,7 @@ language_name_has_translations (const ch - const char *name; - gboolean has_translations; - -- path = g_build_filename (GNOMELOCALEDIR, language_name, "LC_MESSAGES", NULL); -+ path = g_build_filename ("/usr/share/locale", language_name, "LC_MESSAGES", NULL); - - has_translations = FALSE; - dir = g_dir_open (path, 0, NULL); -@@ -352,7 +352,7 @@ add_locale (const char *language_name) - if (language_name_is_utf8 (language_name)) { - name = g_strdup (language_name); - } else { -- name = g_strdup_printf ("%s.utf8", language_name); -+ name = g_strdup_printf ("%s.UTF-8", language_name); - - if (!language_name_is_utf8 (name)) { - g_free (name); -@@ -501,7 +501,7 @@ collect_locales_from_directory (void) - int ndirents; - int cnt; - -- ndirents = scandir (LIBLOCALEDIR, &dirents, select_dirs, alphasort); -+ ndirents = scandir ("/usr/share/locale", &dirents, select_dirs, alphasort); - - for (cnt = 0; cnt < ndirents; ++cnt) { - add_locale (dirents[cnt]->d_name); diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c deleted file mode 100644 index 059d72cf4..000000000 --- a/x11/gdm/files/patch-gui_simple-greeter_gdm-remote-login-window.c +++ /dev/null @@ -1,10 +0,0 @@ ---- gui/simple-greeter/gdm-remote-login-window.c.orig 2008-03-24 11:27:13.000000000 +0100 -+++ gui/simple-greeter/gdm-remote-login-window.c 2008-03-24 11:27:31.000000000 +0100 -@@ -25,6 +25,7 @@ - #include <unistd.h> - #include <sys/types.h> - #include <sys/wait.h> -+#include <sys/signal.h> - #include <errno.h> - - #include <glib.h> diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c deleted file mode 100644 index d0a5d73f5..000000000 --- a/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c +++ /dev/null @@ -1,60 +0,0 @@ ---- gui/simple-greeter/gdm-user-manager.c.orig 2009-09-21 16:05:27.000000000 -0400 -+++ gui/simple-greeter/gdm-user-manager.c 2009-10-14 12:58:37.000000000 -0400 -@@ -65,6 +65,8 @@ - - #ifdef __sun - #define DEFAULT_MINIMAL_UID 100 -+#elif defined(__FreeBSD__) -+#define DEFAULT_MINIMAL_UID 1000 - #else - #define DEFAULT_MINIMAL_UID 500 - #endif -@@ -1366,17 +1368,24 @@ reload_passwd (GdmUserManager *manager) - GSList *new_users; - GSList *list; - GSList *dup; -+#ifndef __FreeBSD__ - FILE *fp; -+#endif - - old_users = NULL; - new_users = NULL; - -+#ifdef __FreeBSD__ -+ setpwent (); -+#else -+ - errno = 0; - fp = fopen (PATH_PASSWD, "r"); - if (fp == NULL) { - g_warning ("Unable to open %s: %s", PATH_PASSWD, g_strerror (errno)); - goto out; - } -+#endif - - g_hash_table_foreach (manager->priv->users, listify_hash_values_hfunc, &old_users); - g_slist_foreach (old_users, (GFunc) g_object_ref, NULL); -@@ -1390,7 +1399,11 @@ reload_passwd (GdmUserManager *manager) - } - } - -+#ifdef __FreeBSD__ -+ for (pwent = getpwent (); pwent != NULL; pwent = getpwent ()) { -+#else - for (pwent = fgetpwent (fp); pwent != NULL; pwent = fgetpwent (fp)) { -+#endif - GdmUser *user; - - user = NULL; -@@ -1461,7 +1474,11 @@ reload_passwd (GdmUserManager *manager) - out: - /* Cleanup */ - -+#ifdef __FreeBSD__ -+ endpwent (); -+#else - fclose (fp); -+#endif - - g_slist_foreach (new_users, (GFunc) g_object_thaw_notify, NULL); - g_slist_foreach (new_users, (GFunc) g_object_unref, NULL); diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-user.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-user.c deleted file mode 100644 index fae89ec07..000000000 --- a/x11/gdm/files/patch-gui_simple-greeter_gdm-user.c +++ /dev/null @@ -1,34 +0,0 @@ ---- gui/simple-greeter/gdm-user.c.orig 2009-07-20 03:09:09.000000000 +0200 -+++ gui/simple-greeter/gdm-user.c 2009-07-20 10:09:41.000000000 +0200 -@@ -427,6 +427,7 @@ _gdm_user_update (GdmUser *u - /* Display Name */ - if (pwent->pw_gecos && pwent->pw_gecos[0] != '\0') { - gchar *first_comma; -+ gchar *ampersand; - gchar *real_name_utf8; - - real_name_utf8 = g_locale_to_utf8 (pwent->pw_gecos, -1, NULL, NULL, NULL); -@@ -443,6 +444,23 @@ _gdm_user_update (GdmUser *u - g_free (real_name); - real_name = NULL; - } -+ -+ while (real_name != NULL && (ampersand = strchr (real_name, '&')) != NULL) { -+ gchar *temp_real_name1; -+ gchar *temp_real_name2; -+ gchar *temp_name; -+ -+ temp_real_name1 = g_strndup (real_name, -+ (ampersand - real_name)); -+ temp_real_name2 = g_strdup (ampersand + 1); -+ temp_name = g_strdup (pwent->pw_name); -+ temp_name[0] = toupper (temp_name[0]); -+ g_free (real_name); -+ real_name = g_strdup_printf ("%s%s%s", temp_real_name1, temp_name, temp_real_name2); -+ g_free (temp_real_name1); -+ g_free (temp_real_name2); -+ g_free (temp_name); -+ } - } else { - real_name = NULL; - } diff --git a/x11/gdm/files/patch-hal-keyboard b/x11/gdm/files/patch-hal-keyboard deleted file mode 100644 index 904f1cdac..000000000 --- a/x11/gdm/files/patch-hal-keyboard +++ /dev/null @@ -1,104 +0,0 @@ ---- daemon/gdm-session-direct.c.orig 2009-07-20 03:09:09.000000000 +0200 -+++ daemon/gdm-session-direct.c 2009-07-20 10:14:45.000000000 +0200 -@@ -45,6 +45,8 @@ - #include <dbus/dbus-glib.h> - #include <dbus/dbus-glib-lowlevel.h> - -+#include <libhal.h> -+ - #include "gdm-session-direct.h" - #include "gdm-session.h" - #include "gdm-session-private.h" -@@ -597,14 +599,66 @@ get_default_language_name (GdmSessionDir - return setlocale (LC_MESSAGES, NULL); - } - -+static char * -+get_system_default_layout (GdmSessionDirect *session) -+{ -+ DBusConnection *connection; -+ LibHalContext *ctx; -+ char **devices; -+ int n_devices; -+ char *layout; -+ char *result; -+ -+ result = NULL; -+ -+ connection = dbus_g_connection_get_connection (session->priv->connection); -+ ctx = libhal_ctx_new (); -+ libhal_ctx_set_dbus_connection (ctx, connection); -+ -+ if (!libhal_ctx_init (ctx, NULL)) { -+ goto out; -+ } -+ -+ devices = libhal_find_device_by_capability (ctx, -+ "input.keyboard", -+ &n_devices, -+ NULL); -+ if (n_devices > 0) { -+ layout = libhal_device_get_property_string (ctx, -+ devices[0], -+ "input.x11_options.XkbLayout", -+ NULL); -+ if (!layout) { -+ layout = libhal_device_get_property_string (ctx, -+ devices[0], -+ "input.xkb.layout", -+ NULL); -+ } -+ result = g_strdup (layout); -+ libhal_free_string (layout); -+ } -+ -+ libhal_free_string_array (devices); -+ -+ libhal_ctx_shutdown (ctx, NULL); -+ libhal_ctx_free (ctx); -+ -+out: -+ if (!result) { -+ result = g_strdup ("us"); -+ } -+ -+ return result; -+} -+ - static const char * - get_default_layout_name (GdmSessionDirect *session) - { -- if (session->priv->saved_layout != NULL) { -- return session->priv->saved_layout; -+ if (!session->priv->saved_layout) { -+ session->priv->saved_layout = get_system_default_layout (session); - } - -- return "us"; -+ return session->priv->saved_layout; - } - - static char * -@@ -1953,8 +2007,8 @@ setup_session_environment (GdmSessionDir - "GDM_LANG", - get_language_name (session)); - -- if (strcmp (get_layout_name (session), -- get_default_layout_name (session)) == 0) { -+ if (g_strcmp0 (get_layout_name (session), -+ get_default_layout_name (session)) != 0) { - gdm_session_direct_set_environment_variable (session, - "GDM_KEYBOARD_LAYOUT", - get_layout_name (session)); ---- daemon/gdm-session-settings.c.orig 2009-05-19 17:18:12.000000000 +0200 -+++ daemon/gdm-session-settings.c 2009-07-20 10:10:15.000000000 +0200 -@@ -149,8 +149,7 @@ gdm_session_settings_set_layout_name (Gd - { - g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings)); - -- if (settings->priv->layout_name == NULL || -- strcmp (settings->priv->layout_name, layout_name) != 0) { -+ if (g_strcmp0 (settings->priv->layout_name, layout_name) != 0) { - settings->priv->layout_name = g_strdup (layout_name); - g_object_notify (G_OBJECT (settings), "layout-name"); - } |