Commit e00b99c8 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

(init_environment): Perform the processing of environment variables on a copy

of default variables and their values, not on the original.
parent 689840b9
2006-05-19 Eli Zaretskii <eliz@gnu.org>
* w32.c (init_environment): Perform the processing of environment
variables on a copy of default variables and their values, not on
the original.
2006-05-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 2006-05-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
   
* frame.c (x_set_border_width): Remove #ifndef MAC_OS. * frame.c (x_set_border_width): Remove #ifndef MAC_OS.
......
...@@ -950,11 +950,11 @@ init_environment (char ** argv) ...@@ -950,11 +950,11 @@ init_environment (char ** argv)
struct stat ignored; struct stat ignored;
char default_home[MAX_PATH]; char default_home[MAX_PATH];
static struct env_entry static const struct env_entry
{ {
char * name; char * name;
char * def_value; char * def_value;
} env_vars[] = } dflt_envvars[] =
{ {
{"HOME", "C:/"}, {"HOME", "C:/"},
{"PRELOAD_WINSOCK", NULL}, {"PRELOAD_WINSOCK", NULL},
...@@ -971,6 +971,17 @@ init_environment (char ** argv) ...@@ -971,6 +971,17 @@ init_environment (char ** argv)
{"LANG", NULL}, {"LANG", NULL},
}; };
#define N_ENV_VARS sizeof(dflt_envvars)/sizeof(dflt_envvars[0])
/* We need to copy dflt_envvars[] and work on the copy because we
don't want the dumped Emacs to inherit the values of
environment variables we saw during dumping (which could be on
a different system). The defaults above must be left intact. */
struct env_entry env_vars[N_ENV_VARS];
for (i = 0; i < N_ENV_VARS; i++)
env_vars[i] = dflt_envvars[i];
/* For backwards compatibility, check if a .emacs file exists in C:/ /* For backwards compatibility, check if a .emacs file exists in C:/
If not, then we can try to default to the appdata directory under the If not, then we can try to default to the appdata directory under the
user's profile, which is more likely to be writable. */ user's profile, which is more likely to be writable. */
...@@ -1005,7 +1016,7 @@ init_environment (char ** argv) ...@@ -1005,7 +1016,7 @@ init_environment (char ** argv)
LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP, LOCALE_SABBREVLANGNAME | LOCALE_USE_CP_ACP,
locale_name, sizeof (locale_name))) locale_name, sizeof (locale_name)))
{ {
for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++) for (i = 0; i < N_ENV_VARS; i++)
{ {
if (strcmp (env_vars[i].name, "LANG") == 0) if (strcmp (env_vars[i].name, "LANG") == 0)
{ {
...@@ -1069,7 +1080,7 @@ init_environment (char ** argv) ...@@ -1069,7 +1080,7 @@ init_environment (char ** argv)
} }
} }
for (i = 0; i < (sizeof (env_vars) / sizeof (env_vars[0])); i++) for (i = 0; i < N_ENV_VARS; i++)
{ {
if (!getenv (env_vars[i].name)) if (!getenv (env_vars[i].name))
{ {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment