From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gatech.edu (gatech.edu [130.207.244.244]) by werple.mira.net.au (8.6.12/8.6.9) with SMTP id CAA14730 for ; Sat, 10 Jun 1995 02:50:24 +1000 Received: from math (math.skiles.gatech.edu) by gatech.edu with SMTP id AA09240 (5.65c/Gatech-10.0-IDA for ); Fri, 9 Jun 1995 12:49:07 -0400 Received: by math (5.x/SMI-SVR4) id AA27399; Fri, 9 Jun 1995 12:47:07 -0400 Resent-Date: Fri, 9 Jun 1995 18:45:30 +0100 (MET DST) Old-Return-Path: From: hzoli@cs.elte.hu (Zoltan Hidvegi) Message-Id: <9506091645.AA04655@turan.elte.hu> Subject: Re: logname in zsh-2.6b9 To: hzoli@cs.elte.hu (Zoltan Hidvegi) Date: Fri, 9 Jun 1995 18:45:30 +0100 (MET DST) In-Reply-To: <9506091625.AA03604@turan.elte.hu> from "Zoltan Hidvegi" at Jun 9, 95 06:25:15 pm X-Mailer: ELM [version 2.4 PL21] Content-Type: text Sender: hzoli@cs.elte.hu Resent-Message-Id: <"B6q0S.0.zh6.Ai7sl"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/94 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu I've just noticed that I forgot the patch to globals.h. Sorry for that. Here is the whole patch again with patch to globals.h. I also had a patch to the manual which I also sent earlier and include now. This patch is necessary because the present manual is wrong. This patch to the manual is necessary even without the source code patch. I hope I did not forget anything this time (I maintain about twohundred patches with RCS which are mostly bugfixes to zsh :-)) Zoltan *** Src/params.c.orig Fri Jun 9 18:11:23 1995 --- Src/params.c Fri Jun 9 18:09:33 1995 *************** *** 85,98 **** IPDEF2("LANG", strgetfn, langsetfn, 0), #endif - #define IPDEF3(A) {NULL,A,NULL,IFN(nullsetfn),IFN(strconstgetfn),0,PMFLAG_r|\ - PMFLAG_SPECIAL,NULL,NULL,NULL,NULL,0} - IPDEF3("HOSTTYPE"), - IPDEF3("OSTYPE"), - IPDEF3("MACHTYPE"), - IPDEF3("VENDOR"), - IPDEF3("ZSH_VERSION"), - #define IPDEF4(A,B) {NULL,A,NULL,IFN(nullsetfn),IFN(intvargetfn),10,\ PMFLAG_r|PMFLAG_i|PMFLAG_SPECIAL,(void *)B,NULL,NULL,NULL,0} IPDEF4("!", &lastpid), --- 85,90 ---- *************** *** 121,130 **** #define IPDEF6(A,B) {NULL,A,NULL,IFN(nullsetfn),IFN(strvargetfn),0,\ PMFLAG_r|PMFLAG_SPECIAL,(void *)B,NULL,NULL,NULL,0} - IPDEF6("LOGNAME", &logname), IPDEF6("PWD", &pwd), IPDEF6("TTY", &ttystrname), - IPDEF6("USERNAME", &username), #define IPDEF7(A,B) {NULL,A,NULL,IFN(strvarsetfn),IFN(strvargetfn),0,\ PMFLAG_SPECIAL,(void *)B,NULL,NULL,NULL,0} --- 113,120 ---- *************** *** 196,207 **** addhnode(ztrdup(ip->nam), ip, paramtab, (FFunc) 0); argvparam = (Param) gethnode("argv", paramtab); ! ((struct iparam *)gethnode("HOSTTYPE", paramtab))->data = (void *) ztrdup(HOSTTYPE); ! ((struct iparam *)gethnode("OSTYPE", paramtab))->data = (void *) ztrdup(OSTYPE); ! ((struct iparam *)gethnode("MACHTYPE", paramtab))->data = (void *) ztrdup(MACHTYPE); ! ((struct iparam *)gethnode("VENDOR", paramtab))->data = (void *) ztrdup(VENDOR); ! ((struct iparam *)gethnode("ZSH_VERSION",paramtab))->data = (void *) ztrdup(ZSH_VERSION); ! noerrs = 1; for (envp = environ, ct = 2; *envp; envp++, ct++); envp = environ; --- 186,192 ---- addhnode(ztrdup(ip->nam), ip, paramtab, (FFunc) 0); argvparam = (Param) gethnode("argv", paramtab); ! setsparam("LOGNAME", ztrdup(username)); noerrs = 1; for (envp = environ, ct = 2; *envp; envp++, ct++); envp = environ; *************** *** 242,254 **** pm = (struct param *)gethnode("LOGNAME", paramtab); if (!(pm->flags & PMFLAG_x)) { pm->flags |= PMFLAG_x; ! pm->env = addenv("LOGNAME", logname); } pm = (struct param *)gethnode("SHLVL", paramtab); if (!(pm->flags & PMFLAG_x)) pm->flags |= PMFLAG_x; sprintf(buf, "%d", (int)++shlvl); pm->env = addenv("SHLVL", buf); noerrs = 0; } --- 227,245 ---- pm = (struct param *)gethnode("LOGNAME", paramtab); if (!(pm->flags & PMFLAG_x)) { pm->flags |= PMFLAG_x; ! pm->env = addenv("LOGNAME", pm->u.str); } pm = (struct param *)gethnode("SHLVL", paramtab); if (!(pm->flags & PMFLAG_x)) pm->flags |= PMFLAG_x; sprintf(buf, "%d", (int)++shlvl); pm->env = addenv("SHLVL", buf); + setsparam("HOSTTYPE", ztrdup(HOSTTYPE)); + setsparam("OSTYPE", ztrdup(OSTYPE)); + setsparam("MACHTYPE", ztrdup(MACHTYPE)); + setsparam("VENDOR", ztrdup(VENDOR)); + setsparam("ZSH_VERSION", ztrdup(ZSH_VERSION)); + setsparam("USERNAME", ztrdup(username)); noerrs = 0; } *** Src/init.c.orig Fri Jun 9 18:08:43 1995 --- Src/init.c Fri Jun 9 18:09:47 1995 *************** *** 519,531 **** else home = ztrdup("/"); ! if (!(logname = getlogin())) { if (pswd) ! logname = ztrdup(pswd->pw_name); else ! logname = ztrdup(""); } - username = ztrdup(logname); /* Try a cheap test to see if we can * * initialize $PWD from $HOME */ --- 519,530 ---- else home = ztrdup("/"); ! if (!(username = getlogin())) { if (pswd) ! username = ztrdup(pswd->pw_name); else ! username = ztrdup(""); } /* Try a cheap test to see if we can * * initialize $PWD from $HOME */ rcsdiff -qc -kk -r1.6 -r1.7 Src/globals.h *** Src/globals.h --- Src/globals.h 1995/06/02 16:37:56 *************** *** 294,301 **** EXTERN char *hsubr; ! EXTERN char *logname; /* $LOGNAME */ ! EXTERN char *username; /* $USERNAME */ EXTERN long lastval; /* $? */ EXTERN long baud; /* $BAUD */ EXTERN long columns; /* $COLUMNS */ --- 294,303 ---- EXTERN char *hsubr; ! /* the username corresponding to the real userid at startup */ ! ! EXTERN char *username; ! EXTERN long lastval; /* $? */ EXTERN long baud; /* $BAUD */ EXTERN long columns; /* $COLUMNS */ rcsdiff -qc -kk -r1.6 -r1.7 zshparam.1 *** Doc/zshparam.1 --- Doc/zshparam.1 1995/06/02 18:12:39 *************** *** 183,190 **** being executed. .TP .B LOGNAME ! The username corresponding to the user id of the shell process. ! (The same as USERNAME). .TP .B MACHTYPE The machine type (microprocessor class or machine model), --- 183,192 ---- being executed. .TP .B LOGNAME ! If the corresponding variable is not set in the environment of the ! shell, it is initialized to the username corresponding to the real ! user id of the shell process on startup. This parameter is exported ! by default but this can be disabled using the \fBtypeset\fP builtin. .TP .B MACHTYPE The machine type (microprocessor class or machine model), *************** *** 238,245 **** The user id of the shell process. .TP .B USERNAME ! The username corresponding to the user id of the shell process. ! (The same as LOGNAME). .TP .B VENDOR The vendor, as determined at compile time. --- 240,247 ---- The user id of the shell process. .TP .B USERNAME ! The username corresponding to the real user id of the shell process. ! It is only intialised on startup. .TP .B VENDOR The vendor, as determined at compile time.