[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
unicode.b
- To: inferno@interstice.com
- Subject: unicode.b
- From: erik quanstrom <quanstro@Infomkt.ibm.com>
i rewrote the plan9/unix command unicode to run
under inferno. it understands only the -n option.
erik
#
#
implement Unicode;
include "sys.m";
sys: Sys;
include "draw.m";
Context: import Draw;
include "lib.m";
str: String;
Unicode: module {
init: fn(c: ref Context, v: list of string);
};
whine(l: list of string){
for(;len l; l = tl l){
sys->fprint(sys->fildes(2), "%s\n", hd l);
}
exit;
}
printList(i,j: int){
a: int;
if (j<i){
a=i;
i=j;
j=a;
}
for(a=i;a<=j;a++){
sys->print("%c", a);
}
}
printFancyList(i,j: int){
a: int;
if(j<i){
a=i;
i=j;
j=a;
}
for (a=i;a<=j;a++){
sys->print("%4.4x %c", a, a);
if (a%8){
# WmShell broken sys->print("\t");
sys->print(" ");
}else{
sys->print("\n");
}
}
a--;
if (a%8){
sys->print("\n");
}
}
#mostly stolen from sh
revList(arg: list of string): list of string{
ret: list of string;
for(;nil != arg; arg=tl arg){
ret = hd arg :: ret;
}
return ret;
}
munchArgs(v: list of string): (int, list of string){
w: list of string;
dashn: int;
if (0 == len v){
sys->fprint(sys->fildes(2), "unicode: munchArgs called with 0 arguments\n");
}
dashn = 0;
for(v=tl v; len v; v=tl v){
case hd v{
"-n" =>
dashn = 1;
* =>
w = hd v :: w;
}
}
return (dashn,revList(w));
}
init(c: ref Context, v: list of string){
i,j: int;
rem: string;
dashn: int;
sys = load Sys Sys->PATH;
if (nil == sys){
sys->fprint(sys->fildes(2), "unicode: %r\n");
return;
}
str = load String String->PATH;
if (nil == str){
sys->fprint(sys->fildes(2), "unicode: %r\n");
return;
}
if (nil == v){
return;
}
(dashn, v) = munchArgs(v);
if (nil == v){
return;
}
for(; v != nil; v = tl v){
(i,rem) = str->toint(hd v,16);
if (nil != rem && '-' == rem[0]){
rem=rem[1:];
(j,rem) = str->toint(rem,16);
}else{
j=i;
}
if(nil != rem){
whine(list of {"string->toint() looses"});
}
if(dashn){
printFancyList(i,j);
}else{
printList(i,j);
}
}
}
- Prev by Date: Re: sam on inferno beta.2
- Next by Date: Prize came today
- Prev by thread: wmlib.b needs slight change for new regime
- Next by thread: Prize came today
- Index(es):