From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2799 invoked from network); 26 Sep 1999 15:06:43 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 26 Sep 1999 15:06:43 -0000 Received: (qmail 4854 invoked by alias); 26 Sep 1999 15:06:32 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8050 Received: (qmail 4847 invoked from network); 26 Sep 1999 15:06:32 -0000 Message-Id: <9909261431.AA27874@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk Subject: Re: "cat -v" in zsh (and a minor bug) In-Reply-To: ""Bart Schaefer""'s message of "Sat, 25 Sep 1999 18:48:31 DFT." <990925184831.ZM30850@candle.brasslantern.com> Date: Sun, 26 Sep 1999 16:31:02 +0200 From: Peter Stephenson "Bart Schaefer" wrote: > The bug is demonstrated by: > > a='å' # That's meta-a, or 228 decimal > (( #a == #\å )) || echo oops Seems to be 229, here. Here's a function that allows you to enter a numeric argument to get a character with a given number, sort of like quoted insert. Have I missed something simpler (i.e. can you really not process a character code in decimal)? # Insert the ASCII character given by the numeric argument (0 -- 255) typeset -i 16 x x=${NUMERIC:-0} if (( x < 0 || x > 255 )); then return 1 else eval LBUFFER=\$LBUFFER\$\'\\x${x##???}\' fi > The problem is that #a is unsigned but #\a is signed, so for values above > 127 decimal the #\a form returns a negative number. (except when it isn't, of course). The problem looks like it's in getkeystring(), which converts a char to an int by direct casting instead of taking the usual care with STOUC(). I can't imagine getkeystring() has to be different from the rest of the shell in this respect. --- Src/utils.c.stouc Sun Sep 26 15:32:08 1999 +++ Src/utils.c Sun Sep 26 16:20:07 1999 @@ -3407,7 +3407,7 @@ t++; } if (fromwhere == 6 && t != tmp) { - *misc = (int) tmp[0]; + *misc = STOUC(tmp[0]); return s + 1; } } -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy