From fa7b8061d9f3d7db53437472577d6c58c6fb9ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Fri, 19 Oct 2007 05:36:54 +0000 Subject: [PATCH] read environment from _PATH_ETC_ENVIRONMENT git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21988 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/su/su.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/appl/su/su.c b/appl/su/su.c index c7fd0edb9..66b3312e6 100644 --- a/appl/su/su.c +++ b/appl/su/su.c @@ -65,13 +65,7 @@ RCSID("$Id$"); #include #include -#ifndef _PATH_DEFPATH -#define _PATH_DEFPATH "/usr/bin:/bin" -#endif - -#ifndef _PATH_BSHELL -#define _PATH_BSHELL "/bin/sh" -#endif +#include "supaths.h" int kerberos_flag = 1; int csh_f_flag; @@ -541,11 +535,23 @@ main(int argc, char **argv) if(!env_flag) { if(full_login) { char *t = getenv ("TERM"); - - environ = malloc (10 * sizeof (char *)); + char **newenv = NULL; + int i, j; + + i = read_environment(_PATH_ETC_ENVIRONMENT, &newenv); + + environ = malloc ((10 + i) * sizeof (char *)); if (environ == NULL) err (1, "malloc"); environ[0] = NULL; + + for (j = 0; j < i; j++) { + char *p = strchr(newenv[j], '='); + *p++ = 0; + esetenv (newenv[j], p, 1); + } + free(newenv); + esetenv ("PATH", _PATH_DEFPATH, 1); if (t) esetenv ("TERM", t, 1);