From: Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
To: zsh-workers@sunsite.auc.dk
Subject: Re: Strange behavior creating functions
Date: Mon, 31 Jan 2000 10:49:17 +0100 (MET) [thread overview]
Message-ID: <200001310949.KAA29090@beta.informatik.hu-berlin.de> (raw)
In-Reply-To: "Bart Schaefer"'s message of Sun, 30 Jan 2000 20:17:06 +0000
Bart Schaefer wrote:
> I wanted to create a function with a unique name, so I tried this:
>
> function foo$$ () { echo $0 }
>
> This works as expected in 3.0.7, creating a function named foo31679 (or
> whatever the PID is). Same for 3.1.6-dev-14.
>
> However, in 3.1.6-dev-16 (the first "foo" is an autoloaded function I use
> for testing):
>
> zagzig[60] functions -m foo\*
> foo () {
> # undefined
> builtin autoload -X
> }
> foo () {
> echo $0
> }
> zagzig[61] zmodload parameter; print -l ${functions[(I)foo*]}
> foo
> foo$$
> zagzig[62] foo$$
> zsh: command not found: foo29406
> zagzig[63] 'foo$$'
> zsh: command not found: foo$$
Urgh. Names in function definitions should be expanded.
Bye
Sven
diff -ru ../z.old/Src/exec.c Src/exec.c
--- ../z.old/Src/exec.c Mon Jan 31 09:10:16 2000
+++ Src/exec.c Mon Jan 31 10:46:05 2000
@@ -2917,25 +2917,24 @@
{
Shfunc shf;
char *s;
- int signum, nprg, npats, num, len, plen, i;
- Wordcode beg = state->pc, end, names;
+ int signum, nprg, npats, len, plen, i;
+ Wordcode beg = state->pc, end;
Eprog prog;
Patprog *pp;
+ LinkList names;
end = beg + WC_FUNCDEF_SKIP(state->pc[-1]);
- num = state->pc[0];
- names = state->pc + 1;
- nprg = state->pc[1 + num] - 4;
- npats = state->pc[2 + num];
-
- state->pc += num + 3;
+ names = ecgetlist(state, *state->pc++, 1);
+ nprg = *state->pc++ - 4;
+ npats = *state->pc++;
plen = (end - state->pc) * sizeof(wordcode);
len = plen + (npats * sizeof(Patprog));
+ execsubst(names);
+
PERMALLOC {
- while (num--) {
- s = ecrawstr(state->prog, names++);
+ while ((s = (char *) ugetnode(names))) {
prog = (Eprog) zalloc(sizeof(*prog));
prog->heap = 0;
prog->len = len;
--
Sven Wischnowsky wischnow@informatik.hu-berlin.de
next reply other threads:[~2000-01-31 9:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-01-31 9:49 Sven Wischnowsky [this message]
2000-01-31 11:39 ` Bart Schaefer
-- strict thread matches above, loose matches on Subject: below --
2000-01-30 20:17 Bart Schaefer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200001310949.KAA29090@beta.informatik.hu-berlin.de \
--to=wischnow@informatik.hu-berlin.de \
--cc=zsh-workers@sunsite.auc.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).