From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16528 invoked from network); 28 Aug 1999 17:14:33 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 28 Aug 1999 17:14:33 -0000 Received: (qmail 10513 invoked by alias); 28 Aug 1999 17:14:17 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 2531 Received: (qmail 10505 invoked from network); 28 Aug 1999 17:14:16 -0000 Message-ID: <19990828131405.A14252@vmunix.com> Date: Sat, 28 Aug 1999 13:14:05 -0400 From: Gabor To: Bart Schaefer , zsh-users@sunsite.auc.dk Subject: Re: PATCH: ksharrays and assoc array assignments (was Re: Files modified after a given date) References: <199908230809.KAA02317@beta.informatik.hu-berlin.de> <19990827175122.A2818@vmunix.com> <990827224347.ZM28594@candle.brasslantern.com> <19990827194419.A7511@vmunix.com> <990828050003.ZM30545@candle.brasslantern.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.93.1i In-Reply-To: <990828050003.ZM30545@candle.brasslantern.com>; from Bart Schaefer on Sat, Aug 28, 1999 at 05:00:03AM +0000 X-Operating-System: FreeBSD 2.2.7-STABLE i386 Thanks. It works. === zsh-3.1.6 $ Src/zsh === zsh-3.1.6 $ stat -H foo . === zsh-3.1.6 $ print ${(kv)foo[@]} blksize 8192 nlink 11 size 1024 rdev 211381 mode 16877 mtime 935722586 inode 47762 blocks 2 device 196614 atime 935860476 uid 1000 link ctime 935722586 gid 7 === zsh-3.1.6 $ On Sat, Aug 28, 1999 at 05:00:03AM +0000, Bart Schaefer wrote: # On Aug 27, 7:44pm, Gabor wrote: # } Subject: Re: Files modified after a given date # } # } On Fri, Aug 27, 1999 at 10:43:47PM +0000, Bart Schaefer wrote: # } # On Aug 27, 5:51pm, Gabor wrote: # } # > Subject: Re: Files modified after a given date # } # > === gabor $ builtin stat -H foo .zshrc # } # > zsh: attempt to set slice of associative array # } # # } Well, I figured it out. I believe this to be a bug, though you # } decide. I always set ksharrays since I like 0 based indexing and use # } ksh for scripting at work. With ksharrays unset, it works. # # Aha. Yes, that's a bug. You can see it more easily with # # zsh% setopt ksharrays # zsh% : ${(AA)=foo:=a b c d} # zsh: attempt to set slice of associative array # # Here'a patch. # # Index: Src/params.c # =================================================================== # @@ -1697,9 +1697,14 @@ # v = NULL; # } # } # - if (!v) # - if (!(v = getvalue(&t, 1))) # - return NULL; # + if (!v) { # + int k = opts[KSHARRAYS]; /* Remember the value of KSHARRAYS */ # + opts[KSHARRAYS] = 0; /* and clear it to avoid special- */ # + v = getvalue(&t, 1); /* case of $array --> ${array[0]}. */ # + opts[KSHARRAYS] = k; /* OK because we can't assign to a */ # + if (!v) /* slice of an association anyway, */ # + return NULL; /* so ANY subscript will be wrong. */ # + } # setarrvalue(v, val); # return v->pm; # } # # -- # Bart Schaefer Brass Lantern Enterprises # http://www.well.com/user/barts http://www.brasslantern.com