aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-03-30 22:06:32 +0000
committerChristopher Faylor <me@cgf.cx>2005-03-30 22:06:32 +0000
commit4e6c0729d116484c1c24c993e7d855b4963dbadd (patch)
treedd4d205bd0181004c2610ceb4ae2668e3a13ad61
parent6829b6e914394d8e49b41929ae5cba138aebeed8 (diff)
downloadnewlib-4e6c0729d116484c1c24c993e7d855b4963dbadd.zip
newlib-4e6c0729d116484c1c24c993e7d855b4963dbadd.tar.gz
newlib-4e6c0729d116484c1c24c993e7d855b4963dbadd.tar.bz2
* environ.cc (spenvs): Re-force SYSTEMROOT to always be included in
environment. (build_env): Ditto.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/environ.cc5
2 files changed, 9 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 3252a1f..68802ef 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,11 @@
2005-03-30 Christopher Faylor <cgf@timesys.com>
+ * environ.cc (spenvs): Re-force SYSTEMROOT to always be included in
+ environment.
+ (build_env): Ditto.
+
+2005-03-30 Christopher Faylor <cgf@timesys.com>
+
* environ.cc (spenv::retrieve): Revert most of previous change.
(build_env): Ditto. Rework to track environment variables which need
to always be in the windows environment in a separate array.
diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc
index 18bc4ab..e7b17c3 100644
--- a/winsup/cygwin/environ.cc
+++ b/winsup/cygwin/environ.cc
@@ -878,7 +878,7 @@ static NO_COPY spenv spenvs[] =
{NL ("LOGONSERVER="), false, false, &cygheap_user::env_logsrv},
{NL ("PATH="), false, true, NULL},
{NL ("SYSTEMDRIVE="), false, false, NULL},
- {NL ("SYSTEMROOT="), true, false, &cygheap_user::env_systemroot},
+ {NL ("SYSTEMROOT="), true, true, &cygheap_user::env_systemroot},
{NL ("USERDOMAIN="), false, false, &cygheap_user::env_domain},
{NL ("USERNAME="), false, false, &cygheap_user::env_name},
{NL ("USERPROFILE="), false, false, &cygheap_user::env_userprofile}
@@ -984,8 +984,9 @@ build_env (const char * const *envp, char *&envblock, int &envc,
if (!saw_spenv[i] && (spenvs[i].add_always || cygheap->user.issetuid ()))
{
*dstp = spenvs[i].retrieve (no_envblock);
- if (*dstp && !no_envblock && *dstp != env_dontadd)
+ if (*dstp && (!no_envblock || spenvs[i].force) && *dstp != env_dontadd)
{
+ *pass_dstp = *dstp;
tl += strlen (*dstp) + 1;
dstp++;
}