From bc7cb1a15a67c859c8c71c4b52bb35fe9425a63d Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 23 Nov 2003 18:04:47 +0000 Subject: new utilities. the .C files compile but are renamed to avoid building automatically. --- src/cmd/ascii.c | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 src/cmd/ascii.c (limited to 'src/cmd/ascii.c') diff --git a/src/cmd/ascii.c b/src/cmd/ascii.c new file mode 100644 index 00000000..ee2cb4ca --- /dev/null +++ b/src/cmd/ascii.c @@ -0,0 +1,181 @@ +#include +#include +#include + +#define MAXBASE 36 + +void usage(void); +void put(int); +void putn(int, int); +void puttext(char *); +void putnum(char *); +int btoi(char *); +int value(int, int); +int isnum(char *); + +char *str[256]={ + "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", + "bs ", "ht ", "nl ", "vt ", "np ", "cr ", "so ", "si ", + "dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb", + "can", "em ", "sub", "esc", "fs ", "gs ", "rs ", "us ", + "sp ", " ! ", " \" ", " # ", " $ ", " % ", " & ", " ' ", + " ( ", " ) ", " * ", " + ", " , ", " - ", " . ", " / ", + " 0 ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", + " 8 ", " 9 ", " : ", " ; ", " < ", " = ", " > ", " ? ", + " @ ", " A ", " B ", " C ", " D ", " E ", " F ", " G ", + " H ", " I ", " J ", " K ", " L ", " M ", " N ", " O ", + " P ", " Q ", " R ", " S ", " T ", " U ", " V ", " W ", + " X ", " Y ", " Z ", " [ ", " \\ ", " ] ", " ^ ", " _ ", + " ` ", " a ", " b ", " c ", " d ", " e ", " f ", " g ", + " h ", " i ", " j ", " k ", " l ", " m ", " n ", " o ", + " p ", " q ", " r ", " s ", " t ", " u ", " v ", " w ", + " x ", " y ", " z ", " { ", " | ", " } ", " ~ ", "del", + "x80", "x81", "x82", "x83", "x84", "x85", "x86", "x87", + "x88", "x89", "x8a", "x8b", "x8c", "x8d", "x8e", "x8f", + "x90", "x91", "x92", "x93", "x94", "x95", "x96", "x97", + "x98", "x99", "x9a", "x9b", "x9c", "x9d", "x9e", "x9f", + "xa0", " ¡ ", " ¢ ", " £ ", " ¤ ", " ¥ ", " ¦ ", " § ", + " ¨ ", " © ", " ª ", " « ", " ¬ ", " ­ ", " ® ", " ¯ ", + " ° ", " ± ", " ² ", " ³ ", " ´ ", " µ ", " ¶ ", " · ", + " ¸ ", " ¹ ", " º ", " » ", " ¼ ", " ½ ", " ¾ ", " ¿ ", + " À ", " Á ", " Â ", " Ã ", " Ä ", " Å ", " Æ ", " Ç ", + " È ", " É ", " Ê ", " Ë ", " Ì ", " Í ", " Î ", " Ï ", + " Ð ", " Ñ ", " Ò ", " Ó ", " Ô ", " Õ ", " Ö ", " × ", + " Ø ", " Ù ", " Ú ", " Û ", " Ü ", " Ý ", " Þ ", " ß ", + " à ", " á ", " â ", " ã ", " ä ", " å ", " æ ", " ç ", + " è ", " é ", " ê ", " ë ", " ì ", " í ", " î ", " ï ", + " ð ", " ñ ", " ò ", " ó ", " ô ", " õ ", " ö ", " ÷ ", + " ø ", " ù ", " ú ", " û ", " ü ", " ý ", " þ ", " ÿ " +}; + +char Ncol[]={ + 0,0,7,5,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +}; + +int nchars=128; +int base=16; +int ncol; +int text=1; +int strip=0; +Biobuf bin; + +void +main(int argc, char **argv) +{ + int i; + + Binit(&bin, 1, OWRITE); + ARGBEGIN{ + case '8': + nchars=256; break; + case 'x': + base=16; break; + case 'o': + base=8; break; + case 'd': + base=10; break; + case 'b': + base=strtoul(EARGF(usage()), 0, 0); + if(base<2||base>MAXBASE) + usage(); + break; + case 'n': + text=0; break; + case 't': + strip=1; + /* fall through */ + case 'c': + text=2; break; + default: + usage(); + }ARGEND + + ncol=Ncol[base]; + if(argc==0){ + for(i=0;i