From 30176eaf635a61d77114f5e834ed0684ea7dac05 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 7 Feb 2006 11:29:30 +0000 Subject: 22198: do always set HOME in native emulation --- Src/init.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'Src/init.c') 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))) -- cgit v1.2.3