diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/init.c | 3 | ||||
-rw-r--r-- | Src/params.c | 8 | ||||
-rw-r--r-- | Src/prompt.c | 7 |
3 files changed, 11 insertions, 7 deletions
diff --git a/Src/init.c b/Src/init.c index 5f0c98ca0..ddb6a4d65 100644 --- a/Src/init.c +++ b/Src/init.c @@ -595,9 +595,6 @@ setupvals(void) gettimeofday(&shtimer, &dummy_tz); /* init $SECONDS */ srand((unsigned int)(shtimer.tv_sec + shtimer.tv_usec)); /* seed $RANDOM */ - hostnam = (char *) zalloc(256); - gethostname(hostnam, 256); - /* Set default path */ path = (char **) zalloc(sizeof(*path) * 5); path[0] = ztrdup("/bin"); diff --git a/Src/params.c b/Src/params.c index 972922856..4f519d476 100644 --- a/Src/params.c +++ b/Src/params.c @@ -56,7 +56,6 @@ char **path, /* $path */ /**/ char *argzero, /* $0 */ *home, /* $HOME */ - *hostnam, /* $HOST */ *nullcmd, /* $NULLCMD */ *oldpwd, /* $OLDPWD */ *zoptarg, /* $OPTARG */ @@ -458,7 +457,7 @@ createparamtable(void) Param ip, pm; char **new_environ, **envp, **envp2, **sigptr, **t; char **old_environ = environ; - char buf[50], *str, *iname; + char buf[50], *str, *iname, *hostnam; int num_env, oae = opts[ALLEXPORT]; #ifdef HAVE_UNAME struct utsname unamebuf; @@ -494,7 +493,12 @@ createparamtable(void) setsparam("TMPPREFIX", ztrdup(DEFAULT_TMPPREFIX)); setsparam("TIMEFMT", ztrdup(DEFAULT_TIMEFMT)); setsparam("WATCHFMT", ztrdup(default_watchfmt)); + + hostnam = (char *)zalloc(256); + gethostname(hostnam, 256); setsparam("HOST", ztrdup(hostnam)); + zfree(hostnam, 256); + setsparam("LOGNAME", ztrdup((str = getlogin()) && *str ? str : cached_username)); /* Copy the environment variables we are inheriting to dynamic * diff --git a/Src/prompt.c b/Src/prompt.c index 7bd4ed0f1..cca6da21f 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -201,7 +201,7 @@ promptexpand(char *s, int ns, char *rs, char *Rs) static int putpromptchar(int doprint, int endchar) { - char *ss, *tmbuf = NULL; + char *ss, *tmbuf = NULL, *hostnam; int t0, arg, test, sep; struct tm *tm; time_t timet; @@ -372,11 +372,14 @@ putpromptchar(int doprint, int endchar) bp += strlen(bp); break; case 'M': - stradd(hostnam); + if ((hostnam = getsparam("HOST"))) + stradd(hostnam); break; case 'm': if (!arg) arg++; + if (!(hostnam = getsparam("HOST"))) + break; if (arg < 0) { for (ss = hostnam + strlen(hostnam); ss > hostnam; ss--) if (ss[-1] == '.' && !++arg) |