From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28541 invoked from network); 15 Dec 1998 04:33:42 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 15 Dec 1998 04:33:42 -0000 Received: (from list@localhost) by math.gatech.edu (8.9.1/8.9.1) id XAA27700; Mon, 14 Dec 1998 23:32:20 -0500 (EST) Resent-Date: Mon, 14 Dec 1998 23:32:20 -0500 (EST) From: "Bart Schaefer" Message-Id: <981214203118.ZM32726@candle.brasslantern.com> Date: Mon, 14 Dec 1998 20:31:18 -0800 X-Mailer: Z-Mail (4.0b.820 20aug96) To: zsh-workers@math.gatech.edu Subject: PATCH: 3.1.5-pws-3: Namedir behavior of PWD is still strange MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Resent-Message-ID: <"7OwCt.0.lm6.KPUTs"@math> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/4791 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu This is with 3.1.5-pws-3, run as zsh -f: zagzig% echo ~PWD /usr/local/src/zsh/zsh-3.1.5-work/Src zagzig% dirs ~PWD zagzig% pushd work build /usr/local/src/zsh/zsh-3.1.5-build/Src ~PWD (Whups, the dirtable entry for PWD didn't change when PWD did. Should be "~PWD /usr/local/src/zsh/zsh-3.1.5-work/Src" if anything.) I'm beginning to question my own prior conclusion, and to believe that PWD and OLDPWD should simply *never* be named directories, whether or not such naming was explicitly requested. Why would anyone ever *intend* to cause the following? zagzig% dirs ~PWD ~OLDPWD The following patch causes the dirtable to be kept up to date once an entry is in it, even for PWD. However, we should discuss again what is the most desirable behavior. Maybe the right thing is to permit PWD and OLDPWD to be named directories, but never use them when displaying abbreviated forms? Index: Src/utils.c =================================================================== --- utils.c 1998/12/11 12:09:51 1.7 +++ utils.c 1998/12/15 04:02:28 @@ -510,16 +510,13 @@ if ((flags & ND_USERNAME) && nameddirtab->getnode2(nameddirtab, s)) return; - /* Never hash PWD unless it was explicitly requested */ - if (!always && !strcmp(s, "PWD")) - return; - /* Normal parameter assignments generate calls to this function, * * with always==0. Unless the AUTO_NAME_DIRS option is set, we * * don't let such assignments actually create directory names. * * Instead, a reference to the parameter as a directory name can * - * cause the actual creation of the hash table entry. */ - if (!always && unset(AUTONAMEDIRS) && + * cause the actual creation of the hash table entry. Never hash * + * PWD unless it was explicitly requested (or already hashed). */ + if (!always && (unset(AUTONAMEDIRS) || !strcmp(s, "PWD")) && !nameddirtab->getnode2(nameddirtab, s)) return; -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com