Commit 303fd178 authored by Jiri (George) Lebl's avatar Jiri (George) Lebl Committed by George Lebl

Use vicious-extensions module rather then local routines

Mon Jul 09 00:14:02 2001  George Lebl <jirka@5z.com>

	* Makefile.am, autogen.sh, configure.in, daemon/Makefile.am,
	  daemon/auth.c, daemon/gdm.c, daemon/gdm.h, daemon/misc.c,
	  daemon/server.c, daemon/slave.c, daemon/verify-crypt.c,
	  daemon/verify-pam.c, daemon/verify-shadow.c, daemon/xdmcp.c,
	  gui/Makefile.am, gui/gdmchooser.c, gui/gdmconfig.c, gui/gdmlogin.c,
	  gui/gdmphotosetup.c, gui/misc.[ch], po/POTFILES.in:  Use
	  vicious-extensions module rather then local routines

	* gui/icon-entry-hack.[ch]: remove, in vicious-extensions now
parent 8a9beb8e
Mon Jul 09 00:14:02 2001 George Lebl <jirka@5z.com>
* Makefile.am, autogen.sh, configure.in, daemon/Makefile.am,
daemon/auth.c, daemon/gdm.c, daemon/gdm.h, daemon/misc.c,
daemon/server.c, daemon/slave.c, daemon/verify-crypt.c,
daemon/verify-pam.c, daemon/verify-shadow.c, daemon/xdmcp.c,
gui/Makefile.am, gui/gdmchooser.c, gui/gdmconfig.c, gui/gdmlogin.c,
gui/gdmphotosetup.c, gui/misc.[ch], po/POTFILES.in: Use
vicious-extensions module rather then local routines
* gui/icon-entry-hack.[ch]: remove, in vicious-extensions now
Sun Jul 08 16:38:02 2001 George Lebl <jirka@5z.com>
* Release 2.2.3.1
......
SUBDIRS = config macros pixmaps intl daemon gui docs omf-install po
SUBDIRS = config macros pixmaps intl vicious-extensions \
daemon gui docs omf-install po
EXTRA_DIST = \
ChangeLog \
......
......@@ -6,6 +6,12 @@ test -z "$srcdir" && srcdir=.
PKG_NAME="GDM"
if test ! -d $srcdir/vicious-extensions; then
echo -n "**Error**: vicious-extensions not found, please do a clean "
echo "checkout or do: cvs -z3 get vicious-extensions"
exit 1
fi
(test -f $srcdir/configure.in \
&& test -d $srcdir/daemon \
&& test -f $srcdir/daemon/gdm.h) || {
......
......@@ -13,6 +13,9 @@ AM_ACLOCAL_INCLUDE(macros)
GDK_PIXBUF_REQUIRED=0.7.0
# vicious-extensions stuff
AC_CHECK_FUNCS([setenv unsetenv clearenv])
# find the actual value for $prefix that we'll end up with
REAL_PREFIX=
if test "x$prefix" = "xNONE"; then
......@@ -111,8 +114,6 @@ ALL_LINGUAS="az ca cs da de el es et fi fr ga gl hu it ja ko lt ms nl nn no pl p
dnl AM_GNOME_GETTEXT
AM_GNU_GETTEXT
AC_CHECK_FUNCS([setenv unsetenv clearenv])
# TCP Wrappers for XDMCP access control
if test x$with_tcp_wrappers = xno ; then
echo "TCP wrappers disabled"
......@@ -388,6 +389,7 @@ docs/gdmconfig/C/Makefile
omf-install/Makefile
po/Makefile.in
intl/Makefile
vicious-extensions/Makefile
config/gdm.conf
config/Gnome
config/gnomerc
......
......@@ -5,9 +5,13 @@ CFLAGS += -g -Wall \
DEFS += -DGDM_CONFIG_FILE=\"@sysconfdir@/gdm/gdm.conf\"
INCLUDES = -I. -I.. -I$(includedir) \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DLOCALEDIR=\"$(datadir)/locale\" \
INCLUDES = \
-I. \
-I.. \
-I$(includedir) \
-I$(top_srcdir)/vicious-extensions \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DLOCALEDIR=\"$(datadir)/locale\" \
$(GNOME_INCLUDEDIR)
bin_PROGRAMS = gdm
......@@ -42,5 +46,15 @@ gdm_SOURCES = \
EXTRA_gdm_SOURCES = verify-pam.c verify-crypt.c verify-shadow.c
gdm_LDADD = $(GNOME_LIBDIR) $(GNOME_LIBS) $(GNOMEUI_LIBS) $(GTK_LIBS) $(XDMCP_LIBS) -lXau -lX11 $(INTLLIBS)
gdm_LDADD = \
$(GNOME_LIBDIR) \
$(GNOME_LIBS) \
$(GNOMEUI_LIBS) \
$(GTK_LIBS) \
$(XDMCP_LIBS) \
-lXau \
-lX11 \
$(INTLLIBS) \
-L$(top_builddir)/vicious-extensions \
-lvicious
......@@ -26,6 +26,8 @@
#include <netinet/in.h>
#include <X11/Xauth.h>
#include <vicious.h>
#include "gdm.h"
#include "cookie.h"
#include "misc.h"
......@@ -211,7 +213,7 @@ gdm_auth_secure_display (GdmDisplay *d)
}
fclose (af);
gdm_setenv ("XAUTHORITY", d->authfile);
ve_setenv ("XAUTHORITY", d->authfile, TRUE);
gdm_debug ("gdm_auth_secure_display: Setting up access for %s - %d entries",
d->name, g_slist_length (d->auths));
......
......@@ -32,6 +32,8 @@
#include <errno.h>
#include <syslog.h>
#include <vicious.h>
#include "gdm.h"
#include "misc.h"
#include "slave.h"
......@@ -241,7 +243,7 @@ gdm_config_parse (void)
#endif
if ( ! GdmAutomaticLoginEnable ||
gdm_string_empty (GdmAutomaticLogin)) {
ve_string_empty (GdmAutomaticLogin)) {
g_free (GdmAutomaticLogin);
GdmAutomaticLogin = NULL;
}
......@@ -254,7 +256,7 @@ gdm_config_parse (void)
}
if ( ! GdmTimedLoginEnable ||
gdm_string_empty (GdmTimedLogin)) {
ve_string_empty (GdmTimedLogin)) {
g_free (GdmTimedLogin);
GdmTimedLogin = NULL;
}
......@@ -276,17 +278,17 @@ gdm_config_parse (void)
}
/* Prerequisites */
if (gdm_string_empty (GdmGreeter)) {
if (ve_string_empty (GdmGreeter)) {
gdm_error (_("gdm_config_parse: No greeter specified."));
}
if (gdm_string_empty (GdmServAuthDir))
if (ve_string_empty (GdmServAuthDir))
gdm_fail (_("gdm_config_parse: No authdir specified."));
if (gdm_string_empty (GdmLogDir))
if (ve_string_empty (GdmLogDir))
GdmLogDir = GdmServAuthDir;
if (gdm_string_empty (GdmSessDir))
if (ve_string_empty (GdmSessDir))
gdm_error (_("gdm_config_parse: No sessions directory specified."));
......@@ -364,9 +366,9 @@ gdm_config_parse (void)
/* Check that the greeter can be executed */
bin = gdm_first_word (GdmGreeter);
bin = ve_first_word (GdmGreeter);
if ( ! gdm_string_empty (bin) &&
if ( ! ve_string_empty (bin) &&
access (bin, X_OK) != 0) {
gdm_error (_("%s: Greeter not found or can't be executed by the gdm user"), "gdm_config_parse");
}
......@@ -375,10 +377,10 @@ gdm_config_parse (void)
/* Check that chooser can be executed */
bin = gdm_first_word (GdmChooser);
bin = ve_first_word (GdmChooser);
if (GdmIndirect &&
! gdm_string_empty (bin) &&
! ve_string_empty (bin) &&
access (bin, X_OK) != 0) {
gdm_error (_("%s: Chooser not found or it can't be executed by the gdm user"), "gdm_config_parse");
}
......@@ -506,10 +508,10 @@ deal_with_x_crashes (GdmDisplay *d)
char *msg;
if ( ! d->failsafe_xserver &&
! gdm_string_empty (GdmFailsafeXServer)) {
char *bin = gdm_first_word (GdmFailsafeXServer);
! ve_string_empty (GdmFailsafeXServer)) {
char *bin = ve_first_word (GdmFailsafeXServer);
/* Yay we have a failsafe */
if ( ! gdm_string_empty (bin) &&
if ( ! ve_string_empty (bin) &&
access (bin, X_OK) == 0) {
gdm_info (_("deal_with_x_crashes: Trying failsafe X "
"server %s"), GdmFailsafeXServer);
......@@ -523,8 +525,8 @@ deal_with_x_crashes (GdmDisplay *d)
}
/* Eeek X keeps crashing, let's try the XKeepsCrashing script */
if ( ! gdm_string_empty (GdmXKeepsCrashing) &&
! gdm_string_empty (GdmXKeepsCrashingConfigurators) &&
if ( ! ve_string_empty (GdmXKeepsCrashing) &&
! ve_string_empty (GdmXKeepsCrashingConfigurators) &&
access (GdmXKeepsCrashing, X_OK|R_OK) == 0) {
char tempname[256];
int tempfd;
......@@ -532,7 +534,7 @@ deal_with_x_crashes (GdmDisplay *d)
char **configurators;
int i;
configurators = gdm_split (GdmXKeepsCrashingConfigurators);
configurators = ve_split (GdmXKeepsCrashingConfigurators);
for (i = 0; configurators[i] != NULL; i++) {
if (access (configurators[i], X_OK) == 0)
break;
......@@ -661,10 +663,10 @@ bin_executable (const char *command)
{
char **argv;
if (gdm_string_empty (command))
if (ve_string_empty (command))
return FALSE;
argv = gdm_split (command);
argv = ve_split (command);
if (argv != NULL &&
argv[0] != NULL &&
access (argv[0], X_OK) == 0) {
......@@ -805,7 +807,7 @@ gdm_cleanup_children (void)
final_cleanup ();
argv = gdm_split (GdmReboot);
argv = ve_split (GdmReboot);
execv (argv[0], argv);
gdm_error (_("gdm_child_action: Reboot failed: %s"), strerror (errno));
......@@ -816,7 +818,7 @@ gdm_cleanup_children (void)
final_cleanup ();
argv = gdm_split (GdmHalt);
argv = ve_split (GdmHalt);
execv (argv[0], argv);
gdm_error (_("gdm_child_action: Halt failed: %s"), strerror (errno));
......@@ -827,7 +829,7 @@ gdm_cleanup_children (void)
final_cleanup ();
argv = gdm_split (GdmSuspend);
argv = ve_split (GdmSuspend);
execv (argv[0], argv);
gdm_error (_("gdm_child_action: Suspend failed: %s"), strerror (errno));
......
......@@ -298,9 +298,6 @@ void gdm_quit (void);
void gdm_fifo_close (void);
#define gdm_string_empty(x) ((x)==NULL||(x)[0]=='\0')
#define gdm_sure_string(x) ((x)!=NULL?(x):"")
#endif /* GDM_H */
/* EOF */
......@@ -20,6 +20,8 @@
#include <gnome.h>
#include <syslog.h>
#include <vicious.h>
#include "gdm.h"
#include "misc.h"
......@@ -148,122 +150,8 @@ gdm_debug (const gchar *format, ...)
g_free (s);
}
/**
* gdm_setenv:
* @var: Variable to set/unset
* @value: Value to assign to the variable, NULL for unsetting
*
* Wrapper around putenv() because POSIX/SUS is incredibly stupid.
*
* char *foo; char *bar;
* putenv (foo); putenv (bar); free (foo);
*
* is legal, while
*
* char *foo;
* putenv (foo); free (foo);
*
* isn't.
*
* Afterall, providing the programmer with a nice, consistent
* interface is what the standard C Library is all about. - Duh!
*
* Note from George:
* You cannot free the last env as it could have been something else
* and could still be in the env! We just have to leak, there is no
* recourse.
* -George
*/
#ifndef HAVE_SETENV
gint
gdm_setenv (const gchar *var, const gchar *value)
{
#if 0
static gchar *lastenv = NULL; /* Holds last successful assignment pointer */
#endif
gchar *envstr; /* Temporary environment string */
gint result; /* Return value from the putenv() call */
/* `var' is a prerequisite */
if (!var)
return -1;
/* `value' is a prerequisite */
if (!value)
return -1;
envstr = g_strconcat (var, "=", value, NULL);
/* If string space allocation failed then abort */
if (!envstr)
return -1;
/* Stuff the resulting string into the environment */
result = putenv (envstr);
#if 0
/* If putenv() succeeded and lastenv is set, free the old pointer */
if (result == 0 && lastenv)
g_free (lastenv);
/* Save the current string pointer for the next gdm_setenv call */
lastenv = envstr;
#endif
return result;
}
#endif
#ifndef HAVE_UNSETENV
gint
gdm_unsetenv (const gchar *var)
{
#if 0
static gchar *lastenv = NULL; /* Holds last successful assignment pointer */
#endif
gchar *envstr; /* Temporary environment string */
gint result; /* Return value from the putenv() call */
/* `var' is a prerequisite */
if (!var)
return -1;
envstr = g_strdup (var);
/* If string space allocation failed then abort */
if (!envstr)
return -1;
/* Stuff the resulting string into the environment */
result = putenv (envstr);
#if 0
/* If putenv() succeeded and lastenv is set, free the old pointer */
if (result == 0 && lastenv)
g_free (lastenv);
/* Save the current string pointer for the next gdm_setenv call */
lastenv = envstr;
#endif
return result;
}
#endif
void
gdm_clearenv (void)
{
#ifdef HAVE_CLEARENV
clearenv ();
#else
environ[0] = NULL;
#endif
}
/* clear environment, but keep the i18n ones,
* note that this leak memory so only use before exec */
* note that this leaks memory so only use before exec */
void
gdm_clearenv_no_lang (void)
{
......@@ -278,7 +166,7 @@ gdm_clearenv_no_lang (void)
envs = g_list_prepend (envs, g_strdup (env));
}
gdm_clearenv ();
ve_clearenv ();
for (li = envs; li != NULL; li = li->next) {
putenv (li->data);
......@@ -287,90 +175,4 @@ gdm_clearenv_no_lang (void)
g_list_free (envs);
}
/* Do strcasecmp but ignore locale */
int
gdm_strcasecmp_no_locale (const char *s1, const char *s2)
{
int i;
/* Error, but don't make them equal then */
g_return_val_if_fail (s1 != NULL, G_MAXINT);
g_return_val_if_fail (s2 != NULL, G_MININT);
for (i = 0; s1[i] != '\0' && s2[i] != '\0'; i++) {
char a = s1[i];
char b = s2[i];
if (a >= 'A' && a <= 'Z')
a -= 'A' - 'a';
if (b >= 'A' && b <= 'Z')
b -= 'A' - 'a';
if (a < b)
return -1;
else if (a > b)
return 1;
}
/* find out which string is smaller */
if (s2[i] != '\0')
return -1; /* s1 is smaller */
else if (s1[i] != '\0')
return 1; /* s2 is smaller */
else
return 0; /* equal */
}
char **
gdm_split (const char *s)
{
int argc;
char **temp_argv;
char **ret;
int i;
if (s == NULL)
return NULL;
if (poptParseArgvString (s, &argc, &temp_argv) != 0) {
return g_strsplit (s, " ", -1);
}
ret = g_new (char *, argc+1);
for (i = 0; i < argc; i++) {
ret[i] = g_strdup (temp_argv[i]);
}
ret[i] = NULL;
free (temp_argv);
return ret;
}
char *
gdm_first_word (const char *s)
{
int argc;
char **temp_argv;
char *ret;
if (s == NULL)
return NULL;
if (poptParseArgvString (s, &argc, &temp_argv) != 0) {
char *p;
ret = g_strdup (s);
p = strchr (ret, ' ');
if (p != NULL)
*p = '\0';
return ret;
}
ret = g_strdup (temp_argv[0]);
free (temp_argv);
return ret;
}
/* EOF */
......@@ -31,6 +31,8 @@
#include <errno.h>
#include <X11/Xlib.h>
#include <vicious.h>
#include "gdm.h"
#include "server.h"
#include "misc.h"
......@@ -233,7 +235,7 @@ gdm_server_start (GdmDisplay *disp)
/* Create new cookie */
if ( ! gdm_auth_secure_display (d))
return FALSE;
gdm_setenv ("DISPLAY", d->name);
ve_setenv ("DISPLAY", d->name, TRUE);
/* Catch USR1 from X server */
usr1.sa_handler = gdm_server_usr1_handler;
......@@ -365,7 +367,7 @@ gdm_server_spawn (GdmDisplay *d)
int len, i;
if (d == NULL ||
gdm_string_empty (d->command)) {
ve_string_empty (d->command)) {
return;
}
......@@ -442,7 +444,7 @@ gdm_server_spawn (GdmDisplay *d)
sigaddset (&mask, SIGTERM);
sigprocmask (SIG_UNBLOCK, &mask, NULL);
argv = gdm_split (d->command);
argv = ve_split (d->command);
for (len = 0; argv != NULL && argv[len] != NULL; len++)
;
......
......@@ -44,6 +44,8 @@
#include <errno.h>
#include <syslog.h>
#include <vicious.h>
#include "gdm.h"
#include "slave.h"
#include "misc.h"
......@@ -331,13 +333,13 @@ gdm_slave_run (GdmDisplay *display)
d = display;
if ( ! gdm_string_empty (GdmAutomaticLogin) &&
if ( ! ve_string_empty (GdmAutomaticLogin) &&
ParsedAutomaticLogin == NULL) {
ParsedAutomaticLogin = gdm_parse_enriched_login (GdmAutomaticLogin,
display);
}
if ( ! gdm_string_empty (GdmTimedLogin) &&
if ( ! ve_string_empty (GdmTimedLogin) &&
ParsedTimedLogin == NULL) {
ParsedTimedLogin = gdm_parse_enriched_login (GdmTimedLogin,
display);
......@@ -357,8 +359,8 @@ gdm_slave_run (GdmDisplay *display)
gdm_send_pid (GDM_SOP_XPID, d->servpid);
}
gdm_setenv ("XAUTHORITY", d->authfile);
gdm_setenv ("DISPLAY", d->name);
ve_setenv ("XAUTHORITY", d->authfile, TRUE);
ve_setenv ("DISPLAY", d->name, TRUE);
/* X error handlers to avoid the default one (i.e. exit (1)) */
XSetErrorHandler (gdm_slave_xerror_handler);
......@@ -425,7 +427,7 @@ gdm_slave_run (GdmDisplay *display)
gdm_slave_chooser (); /* Run the chooser */
} else if ((d->type == TYPE_LOCAL || GdmAllowRemoteAutoLogin) &&
gdm_first_login &&
! gdm_string_empty (ParsedAutomaticLogin) &&
! ve_string_empty (ParsedAutomaticLogin) &&
strcmp (ParsedAutomaticLogin, "root") != 0) {
gdm_first_login = FALSE;
......@@ -574,15 +576,15 @@ run_config (GdmDisplay *display, struct passwd *pwent)
/* setup environment */
gdm_clearenv_no_lang ();
gdm_setenv ("XAUTHORITY", display->authfile);
gdm_setenv ("DISPLAY", display->name);
gdm_setenv ("LOGNAME", "root");
gdm_setenv ("USER", "root");
gdm_setenv ("USERNAME", "root");
gdm_setenv ("HOME", pwent->pw_dir);
gdm_setenv ("SHELL", pwent->pw_shell);
gdm_setenv ("PATH", GdmRootPath);
gdm_setenv ("RUNNING_UNDER_GDM", "true");
ve_setenv ("XAUTHORITY", display->authfile, TRUE);
ve_setenv ("DISPLAY", display->name, TRUE);
ve_setenv ("LOGNAME", "root", TRUE);
ve_setenv ("USER", "root", TRUE);
ve_setenv ("USERNAME", "root", TRUE);
ve_setenv ("HOME", pwent->pw_dir, TRUE);
ve_setenv ("SHELL", pwent->pw_shell, TRUE);
ve_setenv ("PATH", GdmRootPath, TRUE);
ve_setenv ("RUNNING_UNDER_GDM", "true", TRUE);
for (i = 0; i < sysconf (_SC_OPEN_MAX); i++)
close(i);
......@@ -594,7 +596,7 @@ run_config (GdmDisplay *display, struct passwd *pwent)
open("/dev/null", O_RDWR); /* open stderr - fd 2 */
/* exec the configurator */
argv = gdm_split (GdmConfigurator);
argv = ve_split (GdmConfigurator);
if (argv != NULL &&
argv[0] != NULL &&
access (argv[0], X_OK) == 0)
......@@ -608,7 +610,7 @@ run_config (GdmDisplay *display, struct passwd *pwent)
"I will attempt to start it from the\n"
"default location."));
argv = gdm_split
argv = ve_split
(EXPANDED_GDMCONFIGDIR
"/gdmconfig --disable-sound --disable-crash-dialog");
if (access (argv[0], X_OK) == 0)
......@@ -651,7 +653,7 @@ gdm_slave_wait_for_login (void)
d->name,
d->type == TYPE_LOCAL);
gdm_debug ("gdm_slave_wait_for_login: end verify for '%s'",
gdm_sure_string (login));
ve_sure_string (login));
/* Complex, make sure to always handle the do_configurator
* and do_timed_login after any call to gdm_verify_user */
......@@ -761,7 +763,7 @@ gdm_slave_wait_for_login (void)
}
gdm_debug ("gdm_slave_wait_for_login: got_login for '%s'",
gdm_sure_string (login));
ve_sure_string (login));
}
/* If path starts with a "trusted" directory, don't sanity check things */
......@@ -801,7 +803,7 @@ run_pictures (void)
for (;;) {
response = gdm_slave_greeter_ctl (GDM_NEEDPIC, "");
if (gdm_string_empty (response)) {
if (ve_string_empty (response)) {
g_free (response);
return;
}
......@@ -1013,45 +1015,45 @@ gdm_slave_greeter (void)
gdm_child_exit (DISPLAY_ABORT, _("gdm_slave_greeter: Couldn't set userid to %d"), GdmUserId);
gdm_clearenv_no_lang ();
gdm_setenv ("XAUTHORITY", d->authfile);
gdm_setenv ("DISPLAY", d->name);
ve_setenv ("XAUTHORITY", d->authfile, TRUE);
ve_setenv ("DISPLAY", d->name, TRUE);
gdm_setenv ("LOGNAME", GdmUser);
gdm_setenv ("USER", GdmUser);
gdm_setenv ("USERNAME", GdmUser);
ve_setenv ("LOGNAME", GdmUser, TRUE);
ve_setenv ("USER", GdmUser, TRUE);
ve_setenv ("USERNAME", GdmUser, TRUE);
gdm_setenv ("GDM_VERSION", VERSION);
ve_setenv ("GDM_VERSION", VERSION, TRUE);
pwent = getpwnam (GdmUser);
if (pwent != NULL) {
/* Note that usually this doesn't exist */
if (g_file_exists (pwent->pw_dir))
gdm_setenv ("HOME", pwent->pw_dir);
ve_setenv ("HOME", pwent->pw_dir, TRUE);
else
gdm_setenv ("HOME", "/"); /* Hack */
gdm_setenv ("SHELL", pwent->pw_shell);
ve_setenv ("HOME", "/", TRUE); /* Hack */
ve_setenv ("SHELL", pwent->pw_shell, TRUE);
} else {
gdm_setenv ("HOME", "/"); /* Hack */
gdm_setenv ("SHELL", "/bin/sh");
ve_setenv ("HOME", "/", TRUE); /* Hack */
ve_setenv ("SHELL", "/bin/sh", TRUE);
}
gdm_setenv ("PATH", GdmDefaultPath);
gdm_setenv ("RUNNING_UNDER_GDM", "true");
ve_setenv ("PATH", GdmDefaultPath, TRUE);
ve_setenv ("RUNNING_UNDER_GDM", "true", TRUE);
/* Note that this is just informative, the slave will not listen to
* the greeter even if it does something it shouldn't on a non-local
* display so it's not a security risk */
if (d->type == TYPE_LOCAL) {
gdm_setenv ("GDM_IS_LOCAL", "yes");
ve_setenv ("GDM_IS_LOCAL", "yes", TRUE);
} else {
gdm_unsetenv ("GDM_IS_LOCAL");
ve_unsetenv ("GDM_IS_LOCAL");
}
/* this is again informal only, if the greeter does time out it will
* not actually login a user if it's not enabled for this display */
if (d->timed_login_ok) {
gdm_setenv ("GDM_TIMED_LOGIN_OK", ParsedTimedLogin);
ve_setenv ("GDM_TIMED_LOGIN_OK", ParsedTimedLogin, TRUE);
} else {
gdm_unsetenv ("GDM_TIMED_LOGIN_OK");
ve_unsetenv ("GDM_TIMED_LOGIN_OK");
}
if(gdm_emergency_server) {
......@@ -1065,7 +1067,7 @@ gdm_slave_greeter (void)
"log in and fix the configuration.\n"
"Note that automatic and timed logins\n"
"are disabled now."));
gdm_unsetenv ("GDM_TIMED_LOGIN_OK");
ve_unsetenv ("GDM_TIMED_LOGIN_OK");
}
if (d->failsafe_xserver) {
......@@ -1078,17 +1080,17 @@ gdm_slave_greeter (void)
"configure the X server."));
}
argv = gdm_split (GdmGreeter);
argv = ve_split (GdmGreeter);
execv (argv[0], argv);
gdm_error (_("gdm_slave_greeter: Cannot start greeter trying default: %s"),
EXPANDED_BINDIR
"/gdmlogin --disable-sound --disable-crash-dialog");
gdm_setenv ("GDM_WHACKED_GREETER_CONFIG", "true");
ve_setenv ("GDM_WHACKED_GREETER_CONFIG", "true", TRUE);
argv = gdm_split (EXPANDED_BINDIR
"/gdmlogin --disable-sound --disable-crash-dialog");
argv = ve_split (EXPANDED_BINDIR
"/gdmlogin --disable-sound --disable-crash-dialog");
execv (argv[0], argv);
gdm_error_box (d,
......@@ -1299,31 +1301,31 @@ gdm_slave_chooser (void)
gdm_child_exit (DISPLAY_ABORT, _("gdm_slave_chooser: Couldn't set userid to %d"), GdmUserId);
gdm_clearenv_no_lang ();
gdm_setenv ("XAUTHORITY", d->authfile);
gdm_setenv ("DISPLAY", d->name);
ve_setenv ("XAUTHORITY", d->authfile, TRUE);
ve_setenv ("DISPLAY", d->name, TRUE);