From be36ff68854c86247fdc769c0eaa89eb284b5ca7 Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 29 Apr 2004 17:13:24 +0000 Subject: add -W to specify window size. various other little fixes. --- src/cmd/9term/9term.c | 5 +- src/cmd/acidtypes/type.c | 2 +- src/cmd/acme/acme.c | 7 +- src/cmd/auxstats/Linux.c | 15 ++- src/cmd/draw/gview.c | 5 +- src/cmd/draw/img.c | 7 +- src/cmd/draw/stats.c | 5 +- src/cmd/draw/tweak.c | 16 +++- src/cmd/jpg/bmp.c | 13 ++- src/cmd/jpg/gif.c | 14 ++- src/cmd/jpg/ico.c | 5 +- src/cmd/jpg/jpg.c | 13 ++- src/cmd/jpg/png.c | 13 ++- src/cmd/jpg/ppm.c | 13 ++- src/cmd/jpg/yuv.c | 13 ++- src/cmd/mc.c | 245 ----------------------------------------------- src/cmd/plot/plot.c | 3 +- src/cmd/sam/sam.c | 8 +- src/cmd/samterm/plan9.c | 9 +- src/cmd/vac/vtdump.c | 2 + 20 files changed, 136 insertions(+), 277 deletions(-) delete mode 100644 src/cmd/mc.c (limited to 'src/cmd') diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c index feef6b68..3dafb385 100644 --- a/src/cmd/9term/9term.c +++ b/src/cmd/9term/9term.c @@ -186,7 +186,7 @@ Cursor whitearrow = { void usage(void) { - fprint(2, "usage: 9term [-ars] [cmd ...]\n"); + fprint(2, "usage: 9term [-ars] [-W winsize] [cmd ...]\n"); threadexitsall("usage"); } @@ -215,6 +215,9 @@ threadmain(int argc, char *argv[]) case 'w': /* started from "rio" window manager */ use9wm = 1; break; + case 'W': + winsize = EARGF(usage()); + break; }ARGEND if(font) diff --git a/src/cmd/acidtypes/type.c b/src/cmd/acidtypes/type.c index c9e8431e..5449077a 100644 --- a/src/cmd/acidtypes/type.c +++ b/src/cmd/acidtypes/type.c @@ -463,7 +463,7 @@ ttt=ttt->sub; name, nameof(tt, 0)); Bprint(b, "\tindent_%s(addr+%lud, indent+\" \");\n", nameof(tt, 1), t->val[j]); - Bprint(b, "\tprint(indent, \"\t}\\n\");\n"); + Bprint(b, "\tprint(indent, \"}\\n\");\n"); break; } } diff --git a/src/cmd/acme/acme.c b/src/cmd/acme/acme.c index 7c563380..8d0413fa 100644 --- a/src/cmd/acme/acme.c +++ b/src/cmd/acme/acme.c @@ -96,9 +96,14 @@ threadmain(int argc, char *argv[]) if(loadfile == nil) goto Usage; break; + case 'W': + winsize = ARGF(); + if(winsize == nil) + goto Usage; + break; default: Usage: - fprint(2, "usage: acme -a -c ncol -f fontname -F fixedwidthfontname -l loadfile\n"); + fprint(2, "usage: acme -a -c ncol -f fontname -F fixedwidthfontname -l loadfile -W winsize\n"); exits("usage"); }ARGEND diff --git a/src/cmd/auxstats/Linux.c b/src/cmd/auxstats/Linux.c index d4c2a29c..afd88407 100644 --- a/src/cmd/auxstats/Linux.c +++ b/src/cmd/auxstats/Linux.c @@ -109,21 +109,20 @@ xnet(int first) totinb = 0; totoub = 0; for(i=0; ir),Dy(image->r))); + einit(Emouse|Ekeyboard); eresized(0); for(;;){ diff --git a/src/cmd/draw/stats.c b/src/cmd/draw/stats.c index f49f541c..8a43fb09 100644 --- a/src/cmd/draw/stats.c +++ b/src/cmd/draw/stats.c @@ -332,7 +332,7 @@ update1(Graph *g, long v, ulong vmax) void usage(void) { - fprint(2, "usage: stats [-O] [-S scale] [-LY] [-%s] [machine...]\n", argchars); + fprint(2, "usage: stats [-O] [-S scale] [-LY] [-W winsize] [-%s] [machine...]\n", argchars); exits("usage"); } @@ -710,6 +710,9 @@ threadmain(int argc, char *argv[]) case 'O': oldsystem = 1; break; + case 'W': + winsize = EARGF(usage()); + break; default: if(nargs>=sizeof args || strchr(argchars, ARGC())==nil) usage(); diff --git a/src/cmd/draw/tweak.c b/src/cmd/draw/tweak.c index c7e12878..82a22ee1 100644 --- a/src/cmd/draw/tweak.c +++ b/src/cmd/draw/tweak.c @@ -171,6 +171,13 @@ void buttons(int); void drawall(void); void tclose1(Thing*); +void +usage(void) +{ + fprint(2, "usage: tweak [-W winsize] file...\n"); + exits("usage"); +} + void main(int argc, char *argv[]) { @@ -178,6 +185,13 @@ main(int argc, char *argv[]) Event e; Thing *t; + ARGBEGIN{ + case 'W': + winsize = EARGF(usage()); + break; + default: + usage(); + }ARGEND mag = Mag; if(initdraw(error, 0, "tweak") < 0){ fprint(2, "tweak: initdraw failed: %r\n"); @@ -191,7 +205,7 @@ main(int argc, char *argv[]) } einit(Emouse|Ekeyboard); eresized(0); - i = 1; + i = 0; setjmp(err); for(; i -#include -#include -#include -#include -#include - -#define WIDTH 80 -#define TAB 4 -#define WORD_ALLOC_QUANTA 1024 -#define ALLOC_QUANTA 4096 - -int linewidth=WIDTH; -int colonflag=0; -int tabflag=0; /* -t flag turned off forever */ -Rune *cbuf, *cbufp; -Rune **word; -int maxwidth=0; -int nalloc=ALLOC_QUANTA; -int nwalloc=WORD_ALLOC_QUANTA; -int nchars=0; -int nwords=0; -Biobuf bin; -Biobuf bout; - -void getwidth(void), readbuf(int), error(char *); -void scanwords(void), columnate(void), morechars(void); - -void -main(int argc, char *argv[]) -{ - int i; - int lineset; - int ifd; - - lineset = 0; - Binit(&bout, 1, OWRITE); - while(argc > 1 && argv[1][0] == '-'){ - --argc; argv++; - switch(argv[0][1]){ - case '\0': - colonflag = 1; - break; - case 't': - tabflag = 0; - break; - default: - linewidth = atoi(&argv[0][1]); - if(linewidth <= 1) - linewidth = WIDTH; - lineset = 1; - break; - } - } - if(lineset == 0) - getwidth(); - cbuf = cbufp = malloc(ALLOC_QUANTA*(sizeof *cbuf)); - word = malloc(WORD_ALLOC_QUANTA*(sizeof *word)); - if(word == 0 || cbuf == 0) - error("out of memory"); - if(argc == 1) - readbuf(0); - else{ - for(i = 1; i < argc; i++){ - if((ifd = open(*++argv, OREAD)) == -1) - fprint(2, "mc: can't open %s (%r)\n", *argv); - else{ - readbuf(ifd); - Bflush(&bin); - close(ifd); - } - } - } - columnate(); - exits(0); -} -void -error(char *s) -{ - fprint(2, "mc: %s\n", s); - exits(s); -} -void -readbuf(int fd) -{ - int lastwascolon = 0; - long c; - int linesiz = 0; - - Binit(&bin, fd, OREAD); - do{ - if(nchars++ >= nalloc) - morechars(); - *cbufp++ = c = Bgetrune(&bin); - linesiz++; - if(c == '\t') { - cbufp[-1] = L' '; - while(linesiz%TAB != 0) { - if(nchars++ >= nalloc) - morechars(); - *cbufp++ = L' '; - linesiz++; - } - } - if(colonflag && c == ':') - lastwascolon++; - else if(lastwascolon){ - if(c == '\n'){ - --nchars; /* skip newline */ - *cbufp = L'\0'; - while(nchars > 0 && cbuf[--nchars] != '\n') - ; - if(nchars) - nchars++; - columnate(); - if (nchars) - Bputc(&bout, '\n'); - Bprint(&bout, "%S", cbuf+nchars); - nchars = 0; - cbufp = cbuf; - } - lastwascolon = 0; - } - if(c == '\n') - linesiz = 0; - }while(c >= 0); -} -void -scanwords(void) -{ - Rune *p, *q; - int i; - - nwords=0; - maxwidth=0; - for(p = q = cbuf, i = 0; i < nchars; i++){ - if(*p++ == L'\n'){ - if(nwords >= nwalloc){ - nwalloc += WORD_ALLOC_QUANTA; - if((word = realloc(word, nwalloc*sizeof(*word)))==0) - error("out of memory"); - } - word[nwords++] = q; - p[-1] = L'\0'; - if(p-q > maxwidth) - maxwidth = p-q; - q = p; - } - } -} - -void -columnate(void) -{ - int i, j; - int words_per_line; - int nlines; - int col; - int endcol; - - - scanwords(); - if(nwords==0) - return; - words_per_line = linewidth/maxwidth; - if(words_per_line <= 0) - words_per_line = 1; - nlines=(nwords+words_per_line-1)/words_per_line; - for(i = 0; i < nlines; i++){ - col = endcol = 0; - for(j = i; j < nwords; j += nlines){ - endcol += maxwidth; - Bprint(&bout, "%S", word[j]); - col += word[j+1]-word[j]-1; - if(j+nlines < nwords){ - if(tabflag) { - int tabcol = (col|(TAB-1))+1; - while(tabcol <= endcol){ - Bputc(&bout, '\t'); - col = tabcol; - tabcol += TAB; - } - } - while(col < endcol){ - Bputc(&bout, ' '); - col++; - } - } - } - Bputc(&bout, '\n'); - } -} - -void -morechars(void) -{ - nalloc += ALLOC_QUANTA; - if((cbuf = realloc(cbuf, nalloc*sizeof(*cbuf))) == 0) - error("out of memory"); - cbufp = cbuf+nchars-1; -} - -/* - * These routines discover the width of the display. - * It takes some work. If we do the easy calls to the - * draw library, the screen flashes due to repainting - * when mc exits. - */ - -int -windowrect(struct winsize *ws) -{ - int tty; - - if((tty = open("/dev/tty", OWRITE)) < 0) - tty = 1; - - if(ioctl(tty, TIOCGWINSZ, ws) < 0){ - if(tty != 1) - close(tty); - return -1; - } - if(tty != 1) - close(tty); - return 0; -} - -void -getwidth(void) -{ - struct winsize ws; - - if(windowrect(&ws) < 0) - return; - linewidth = ws.ws_col; -} diff --git a/src/cmd/plot/plot.c b/src/cmd/plot/plot.c index 04e5cf54..1360f686 100644 --- a/src/cmd/plot/plot.c +++ b/src/cmd/plot/plot.c @@ -149,6 +149,7 @@ main(int arc, char *arv[]){ fd = dup(0, -1); /* because openpl will close 0! */ dflag=0; oflag=""; + winsize = "512x512"; for(i=1;i!=arc;i++) if(arv[i][0]=='-') switch(arv[i][1]){ case 'd': dflag=1; break; case 'o': oflag=arv[i]+2; break; @@ -168,7 +169,6 @@ main(int arc, char *arv[]){ case 'D': break; case 'd': break; case 'o': break; - case 'W': break; case 's': break; case 'e': erase(); break; case 'C': closepl(); break; @@ -177,6 +177,7 @@ main(int arc, char *arv[]){ case 'f': cfill(ap+1); break; case 'p': pen(ap+1); break; case 'g': grade(atof(ap+1)); break; + case 'W': winsize = ap+1; break; } } else if ((bp = Bopen(arv[1], OREAD)) == 0) { diff --git a/src/cmd/sam/sam.c b/src/cmd/sam/sam.c index 078d9439..5a009bb0 100644 --- a/src/cmd/sam/sam.c +++ b/src/cmd/sam/sam.c @@ -29,6 +29,8 @@ File *lastfile; Disk *disk; long seq; +char *winsize; + Rune baddir[] = { '<', 'b', 'a', 'd', 'd', 'i', 'r', '>', '\n'}; void usage(void); @@ -82,6 +84,10 @@ main(int argc, char *argv[]) argc--; break; + case 'W': + --argc, argv++; + break; + default: dprint("sam: unknown flag %c\n", argv[0][1]); exits("usage"); @@ -101,7 +107,7 @@ main(int argc, char *argv[]) if(home == 0) home = "/"; if(!dflag) - startup(machine, Rflag, arg, ap); + startup(machine, Rflag, arg, argv); notify(notifyf); getcurwd(); if(argc>1){ diff --git a/src/cmd/samterm/plan9.c b/src/cmd/samterm/plan9.c index feb89573..4d58c609 100644 --- a/src/cmd/samterm/plan9.c +++ b/src/cmd/samterm/plan9.c @@ -28,10 +28,15 @@ static char *exname; void getscreen(int argc, char **argv) { + int i; char *t; - USED(argc); - USED(argv); + /* not exactly right */ + for(i=0; i