zsh-workers
 help / color / mirror / code / Atom feed
From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: zsh-workers@sunsite.auc.dk
Subject: Re: assoc array assignment problem.
Date: Thu, 30 Sep 1999 16:58:07 +0000	[thread overview]
Message-ID: <990930165807.ZM25240@candle.brasslantern.com> (raw)
In-Reply-To: <9909281304.AA18217@ibmth.df.unipi.it>

On Sep 28,  3:04pm, Peter Stephenson wrote:
} Subject: Re: assoc array assignment problem.
}
} I discovered another problem.
} 
} foo=
} assoc[$foo]=rod
} print ${(kv)assoc}
}  rod $foo bar

The fact that you get a leading space there even when there are no quotes
around the expansion should be telling us something.  If the key were
the empty string, print would drop it and you'd get "rod $foo bar" with
no leading space.  The key for the "rod" value in the $assoc hash table
is "\233" (meta-escape).

Now, the "\233" is coming from singsub(&s) where s = "$foo" at line 863
in getarg().  So perhaps the following will take care of it; I've tried
a few tests and didn't find anything that it breaks, but maybe someone
else will discover a reason this needs to be more complicated.

Index: Src/params.c
===================================================================
@@ -869,6 +869,7 @@
 		ht = newparamtable(17, v->pm->nam);
 		v->pm->sets.hfn(v->pm, ht);
 	    }
+	    untokenize(s);
 	    if (!(v->pm = (Param) ht->getnode(ht, s))) {
 		HashTable tht = paramtab;
 		paramtab = ht;


-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


      reply	other threads:[~1999-09-30 17:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-09-21  1:37 Tanaka Akira
1999-09-21  4:59 ` Bart Schaefer
1999-09-28 12:15   ` Peter Stephenson
1999-09-28 13:04     ` Peter Stephenson
1999-09-30 16:58       ` Bart Schaefer [this message]

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=990930165807.ZM25240@candle.brasslantern.com \
    --to=schaefer@candle.brasslantern.com \
    --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).