zsh-workers
 help / color / mirror / code / Atom feed
* Re: "cat -v" in zsh (and a minor bug)
       [not found] <990925184831.ZM30850@candle.brasslantern.com>
@ 1999-09-26 14:31 ` Peter Stephenson
  1999-09-26 20:15   ` Bart Schaefer
  0 siblings, 1 reply; 2+ messages in thread
From: Peter Stephenson @ 1999-09-26 14:31 UTC (permalink / raw)
  To: zsh-workers

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1404 bytes --]

"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 <pws@ibmth.df.unipi.it>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: "cat -v" in zsh (and a minor bug)
  1999-09-26 14:31 ` "cat -v" in zsh (and a minor bug) Peter Stephenson
@ 1999-09-26 20:15   ` Bart Schaefer
  0 siblings, 0 replies; 2+ messages in thread
From: Bart Schaefer @ 1999-09-26 20:15 UTC (permalink / raw)
  To: zsh-workers

On Sep 26,  4:31pm, Peter Stephenson wrote:
} Subject: Re: "cat -v" in zsh (and a minor bug)
}
} "Bart Schaefer" wrote:
} > The bug is demonstrated by:
} > 
} > a='å'				# That's meta-a, or 228 decimal
} > (( #a == #\å )) || echo oops
} 
} Seems to be 229, here.

Typo.

} 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)?

Right, you can't process a character code in decimal.  You could do it in
octal rather than hex, but that doesn't help much.

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1999-09-26 20:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <990925184831.ZM30850@candle.brasslantern.com>
1999-09-26 14:31 ` "cat -v" in zsh (and a minor bug) Peter Stephenson
1999-09-26 20:15   ` Bart Schaefer

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).