From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17850 invoked from network); 6 May 2001 18:09:50 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 6 May 2001 18:09:50 -0000 Received: (qmail 25841 invoked by alias); 6 May 2001 18:09:44 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 14234 Received: (qmail 25818 invoked from network); 6 May 2001 18:09:43 -0000 From: "Bart Schaefer" Message-Id: <1010506180903.ZM21668@candle.brasslantern.com> Date: Sun, 6 May 2001 18:09:03 +0000 X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.dk Subject: PATCH: Allow a value of '\:' in _values MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii The code was checking for backslashes, but counting them as characters for purposes of the "no multi-letter values" error. It should ignore exactly one backslash. Also, an error of "no multi-letter values" was silly for the empty value. diff -u zsh-forge/current/Src/Zle/computil.c zsh-4.0/Src/Zle/computil.c --- zsh-forge/current/Src/Zle/computil.c Thu May 3 07:30:57 2001 +++ zsh-4.0/Src/Zle/computil.c Sun May 6 10:13:23 2001 @@ -2119,6 +2119,7 @@ ret->lastt = time(0); for (valp = &(ret->vals); *args; args++) { + int bs = 0; p = dupstring(*args); xnum = 0; @@ -2166,9 +2167,9 @@ for (name = p; *p && *p != ':' && *p != '['; p++) if (*p == '\\' && p[1]) - p++; + p++, bs = 1; - if (hassep && !sep && name + 1 != p) { + if (hassep && !sep && name + bs + 1 < p) { freecvdef(ret); zwarnnam(nam, "no multi-letter values with empty separator allowed", NULL, 0); return NULL; -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net