So, I have a few suggestions. Are you open to using GNU libraries
in ZSH? If so, I was thinking how ZSH is so powerful (and easy to
use), that it can actually handle all types of data -- like all 256
characters of ASCII. So with multibyte turned off that means
binary, even if its a little slow. But here is the problem with
dealing with binary, or unusual characters through ZSH, every
operation requires using several ZSH builtin commands / variable
expansions. This makes a process that converts data into something
more usable on the input or the output very CPU heavy and
inefficient. My suggestion is to add a few options to the sysread
and syswrite builtins that come stock with ZSH in the system module:
- -d : (sysread) to make the variable created an integer type
containing the numerical value corresponding to the raw byte
value, for -s 1; and for -s 2+ (reading more than a single
byte), make it an array with each indice containing a string of
decimal digit(s), whose numerical value is generated the same
way, representing the value for each byte.
- -h : (sysread) to make a string value that is two characters
per input byte, representing the value of the byte in
hexadecimal (padded with 0 if less than 16, and obviously as
with above, a null would equal 00). This would make Zsh able to
function for whatever given needs (boot environments, less
prevalent unix-like systems) without having to supply an xxd
program, and it would be much more efficient processing when any
math is involved in the script.
|