Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: pushd
- X-seq: zsh-workers 2245
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: Zefram <zefram@xxxxxxxxxxxxxxxxx>
- Subject: Re: pushd
- Date: Wed, 16 Oct 1996 10:36:50 -0700
- Cc: hzoli@xxxxxxxxxx, zsh-workers@xxxxxxxxxxxxxxx
- In-reply-to: Zefram <zefram@xxxxxxxxxxxxxxxxx>        "Re: pushd" (Oct 16,  9:42am)
- References: <2900.199610160842@xxxxxxxxxxxxxxxxxxxxxxx>
- Reply-to: schaefer@xxxxxxx
On Oct 16,  9:42am, Zefram wrote:
} Subject: Re: pushd
}
} >+    {"pushdcycle",	 	0,    0,    OPT_ALL},
} 
} I think this should have OPT_EMULATE too.
Probably right, unless what you're trying to emulate is zsh 2.x. :-)
(Baroque idea:  Have `emulate' take a version number and set the options
to behave like that version of zsh.  No, I'm not serious.)
There are two remaining pushd oddities:
(1) pushd with no args on an empty dirstack acts like pushdtohome, even
    when pushdtohome is not set.
Perhaps the code in my patch:
        if (func == BIN_POPD && !nextnode(firstnode(dirstack))) {
            zwarnnam(nam, "directory stack empty", NULL, 0);
            return NULL;
        }
Should instead read:
        if ((func == BIN_POPD || (func == BIN_PUSHD && unset(PUSHDTOHOME))) &&
            !nextnode(firstnode(dirstack))) {
            zwarnnam(nam, "directory stack empty", NULL, 0);
            return NULL;
        }
(2) pushd to a dirstack element that names a nonexistent directory has
    inconsistent behavior, and can put the current directory into the
    stack multiple times:
zagzig% dirs
/usr/src/local/zsh/zsh-3.0.1-test3 /tmp/remthis /tmp
zagzig% rmdir /tmp/remthis
zagzig% pushd +1
pushd: no such file or directory: /tmp/remthis
zagzig% dirs
/usr/src/local/zsh/zsh-3.0.1-test3 /tmp/remthis /tmp
zagzig% pushd
pushd: no such file or directory: /tmp/remthis
zagzig% dirs
/usr/src/local/zsh/zsh-3.0.1-test3 /usr/src/local/zsh/zsh-3.0.1-test3 /tmp
At the moment I've reached the limit of my comprehension of how all of
this works.  Too many functions seem to be freeing nodes from the stack
-- most notably, bin_cd() frees the top node if cd_get_dest() fails, but
I don't understand why.  I'm beginning to worry that even the patches I
sent yesterday don't work as they should (or rather, that they work only
because both zsfree() and getlinknode() ignore null pointers).
-- 
Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern
New male in /home/schaefer:
>N  2 Justin William Schaefer  Sat May 11 03:43  53/4040  "Happy Birthday"
Messages sorted by:
Reverse Date,
Date,
Thread,
Author