diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-02-07 11:29:30 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-02-07 11:29:30 +0000 |
commit | 30176eaf635a61d77114f5e834ed0684ea7dac05 (patch) | |
tree | 344141169d7c46c58a5c74bca2b81d17862fd0ac /Src/init.c | |
parent | 90b6199e17c437408192966a3ff8266db9a4b1c2 (diff) | |
download | zsh-30176eaf635a61d77114f5e834ed0684ea7dac05.tar.gz zsh-30176eaf635a61d77114f5e834ed0684ea7dac05.tar.xz zsh-30176eaf635a61d77114f5e834ed0684ea7dac05.zip |
22198: do always set HOME in native emulation
Diffstat (limited to 'Src/init.c')
-rw-r--r-- | Src/init.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/Src/init.c b/Src/init.c index adb6eb84a..ac04a90e2 100644 --- a/Src/init.c +++ b/Src/init.c @@ -798,19 +798,28 @@ setupvals(void) /* Get password entry and set info for `USERNAME' */ #ifdef HAVE_GETPWUID if ((pswd = getpwuid(cached_uid))) { + if (emulation == EMULATE_ZSH) + home = metafy(pswd->pw_dir, -1, META_DUP); cached_username = ztrdup(pswd->pw_name); - } else + } + else #endif /* HAVE_GETPWUID */ - { + { + if (emulation == EMULATE_ZSH) + home = ztrdup("/"); cached_username = ztrdup(""); } /* * Try a cheap test to see if we can initialize `PWD' from `HOME'. - * HOME must come from the environment; we're not allowed to - * set it locally. + * In non-native emulations HOME must come from the environment; + * we're not allowed to set it locally. */ - if ((ptr = getenv("HOME")) && ispwd(ptr)) + if (emulation == EMULATE_ZSH) + ptr = home; + else + ptr = getenv("HOME"); + if (ptr && ispwd(ptr)) pwd = ztrdup(ptr); else if ((ptr = zgetenv("PWD")) && (strlen(ptr) < PATH_MAX) && (ptr = metafy(ptr, -1, META_STATIC), ispwd(ptr))) |