git: 9front

Download patch

ref: 6031cde63d219fb7a4f552f986c395f6f384e8ef
parent: 4bce557b4b421fc64a6a5a9b8a0d056ea1f9ad7b
author: iru <devnull@localhost>
date: Wed Apr 13 20:19:51 EDT 2011

Change installer to use statusbar(8) instead of bargraph and remove the latter.

--- a/rc/bin/inst/download
+++ b/rc/bin/inst/download
@@ -33,7 +33,7 @@
 	baropt='-w 145,129,445,168'
 	if(~ $textinst 1)
 		baropt=-t
-	if(! hget -vo /n/newfs/dist/_plan9.iso.bz2 $installurl/plan9.iso.bz2 |[2] bargraph $baropt 'downloading '^plan9.iso.bz2)
+	if(! hget -vo /n/newfs/dist/_plan9.iso.bz2 $installurl/plan9.iso.bz2 |[2] aux/statusbar $baropt 'downloading '^plan9.iso.bz2)
 			exit
 	mv /n/newfs/dist/_plan9.iso.bz2 /n/newfs/dist/plan9.iso.bz2
 	if(~ $fstype fossil){
--- a/rc/bin/inst/watchfd
+++ b/rc/bin/inst/watchfd
@@ -14,4 +14,4 @@
 {
 	while(test -f /proc/$p/fd)
 		grep '^ *'^$2^' ' /proc/$p/fd >[2]/dev/null
-} | awk '{print $9 " '^$3^'"; fflush("/dev/stdout")}' | bargraph $baropt $4
+} | awk '{print $9 " '^$3^'"; fflush("/dev/stdout")}' | aux/statusbar $baropt $4
--- a/sys/lib/dist.old/cmd/bargraph.c
+++ /dev/null
@@ -1,346 +1,0 @@
-#include <u.h>
-#include <libc.h>
-#include <draw.h>
-#include <bio.h>
-#include <event.h>
-
-enum {PNCTL=3};
-
-static char* rdenv(char*);
-int newwin(char*);
-Rectangle screenrect(void);
-
-int nokill;
-int textmode;
-char *title;
-
-Image *light;
-Image *dark;
-Image *text;
-
-void
-initcolor(void)
-{
-	text = display->black;
-	light = allocimagemix(display, DPalegreen, DWhite);
-	dark = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DDarkgreen);
-}
-
-Rectangle rbar;
-Point ptext;
-vlong n, d;
-int last;
-int lastp = -1;
-int first = 1;
-
-char backup[80];
-
-void
-drawbar(void)
-{
-	int i, j;
-	int p;
-	char buf[200], bar[100], *s;
-	static char lastbar[100];
-
-	if(n > d || n < 0 || d <= 0)
-		return;
-
-	i = (Dx(rbar)*n)/d;
-	p = (n*100LL)/d;
-
-	if(textmode){
-		bar[0] = '|';
-		for(j=0; j<i; j++)
-			bar[j+1] = '#';
-		for(; j<60; j++)
-			bar[j+1] = '-';
-		bar[61] = '|';
-		bar[62] = ' ';
-		sprint(bar+63, "%3d%% ", p);
-		for(i=0; bar[i]==lastbar[i] && bar[i]; i++)
-			;
-		memset(buf, '\b', strlen(lastbar)-i);
-		strcpy(buf+strlen(lastbar)-i, bar+i);
-		if(buf[0])
-			write(1, buf, strlen(buf));
-		strcpy(lastbar, bar);
-		return;
-	}
-	
-	if(lastp == p && last == i)
-		return;
-
-	if(lastp != p){
-		sprint(buf, "%d%%", p);
-		
-		stringbg(screen, addpt(screen->r.min, Pt(Dx(rbar)-30, 4)), text, ZP, display->defaultfont, buf, light, ZP);
-		lastp = p;
-	}
-
-	if(last != i){
-		draw(screen, Rect(rbar.min.x+last, rbar.min.y, rbar.min.x+i, rbar.max.y),
-			dark, nil, ZP);
-		last = i;
-	}
-	flushimage(display, 1);
-}
-
-void
-eresized(int new)
-{
-	Point p, q;
-	Rectangle r;
-
-	if(new && getwindow(display, Refnone) < 0)
-		fprint(2,"can't reattach to window");
-
-	r = screen->r;
-	draw(screen, r, light, nil, ZP);
-	p = string(screen, addpt(r.min, Pt(4,4)), text, ZP,
-		display->defaultfont, title);
-
-	p.x = r.min.x+4;
-	p.y += display->defaultfont->height+4;
-
-	q = subpt(r.max, Pt(4,4));
-	rbar = Rpt(p, q);
-
-	ptext = Pt(r.max.x-4-stringwidth(display->defaultfont, "100%"), r.min.x+4);
-	border(screen, rbar, -2, dark, ZP);
-	last = 0;
-	lastp = -1;
-
-	drawbar();
-}
-
-void
-bar(Biobuf *b)
-{
-	char *p, *f[2];
-	Event e;
-	int k, die, parent, child;
-
-	parent = getpid();
-
-	die = 0;
-	if(textmode)
-		child = -1;
-	else
-	switch(child = rfork(RFMEM|RFPROC)) {
-	case 0:
-		sleep(1000);
-		while(!die && (k = eread(Ekeyboard|Emouse, &e))) {
-			if(nokill==0 && k == Ekeyboard && (e.kbdc == 0x7F || e.kbdc == 0x03)) { /* del, ctl-c */
-				die = 1;
-				postnote(PNPROC, parent, "interrupt");
-				_exits("interrupt");
-			}
-		}
-		_exits(0);
-	}
-
-	while(!die && (p = Brdline(b, '\n'))) {
-		p[Blinelen(b)-1] = '\0';
-		if(tokenize(p, f, 2) != 2)
-			continue;
-		n = strtoll(f[0], 0, 0);
-		d = strtoll(f[1], 0, 0);
-		drawbar();
-	}
-	postnote(PNCTL, child, "kill");
-}
-
-
-void
-usage(void)
-{
-	fprint(2, "usage: bargraph [-kt] [-w minx,miny,maxx,maxy] 'title'\n");
-	exits("usage");
-}
-
-void
-main(int argc, char **argv)
-{
-	Biobuf b;
-	char *p, *q;
-	int lfd;
-
-	p = "0,0,200,60";
-	
-	ARGBEGIN{
-	case 'w':
-		p = ARGF();
-		break;
-	case 't':
-		textmode = 1;
-		break;
-	case 'k':
-		nokill = 1;
-		break;
-	default:
-		usage();
-	}ARGEND;
-
-	if(argc != 1)
-		usage();
-
-	title = argv[0];
-
-	lfd = dup(0, -1);
-
-	while(q = strchr(p, ','))
-		*q = ' ';
-	Binit(&b, lfd, OREAD);
-	if(textmode || newwin(p) < 0){
-		textmode = 1;
-		rbar = Rect(0, 0, 60, 1);
-	}else{
-		initdraw(0, 0, "bar");
-		initcolor();
-		einit(Emouse|Ekeyboard);
-		eresized(0);
-	}
-	bar(&b);
-}
-
-
-/* all code below this line should be in the library, but is stolen from colors instead */
-static char*
-rdenv(char *name)
-{
-	char *v;
-	int fd, size;
-
-	fd = open(name, OREAD);
-	if(fd < 0)
-		return 0;
-	size = seek(fd, 0, 2);
-	v = malloc(size+1);
-	if(v == 0){
-		fprint(2, "%s: can't malloc: %r\n", argv0);
-		exits("no mem");
-	}
-	seek(fd, 0, 0);
-	read(fd, v, size);
-	v[size] = 0;
-	close(fd);
-	return v;
-}
-
-int
-newwin(char *win)
-{
-	char *srv, *mntsrv;
-	char spec[100];
-	int srvfd, cons, pid;
-
-	switch(rfork(RFFDG|RFPROC|RFNAMEG|RFENVG|RFNOTEG|RFNOWAIT)){
-	case -1:
-		fprint(2, "bargraph: can't fork: %r\n");
-		return -1;
-	case 0:
-		break;
-	default:
-		exits(0);
-	}
-
-	srv = rdenv("/env/wsys");
-	if(srv == 0){
-		mntsrv = rdenv("/mnt/term/env/wsys");
-		if(mntsrv == 0){
-			fprint(2, "bargraph: can't find $wsys\n");
-			return -1;
-		}
-		srv = malloc(strlen(mntsrv)+10);
-		sprint(srv, "/mnt/term%s", mntsrv);
-		free(mntsrv);
-		pid  = 0;			/* can't send notes to remote processes! */
-	}else
-		pid = getpid();
-	USED(pid);
-	srvfd = open(srv, ORDWR);
-	free(srv);
-	if(srvfd == -1){
-		fprint(2, "bargraph: can't open %s: %r\n", srv);
-		return -1;
-	}
-	sprint(spec, "new -r %s", win);
-	if(mount(srvfd, -1, "/mnt/wsys", 0, spec) == -1){
-		fprint(2, "bargraph: can't mount /mnt/wsys: %r (spec=%s)\n", spec);
-		return -1;
-	}
-	close(srvfd);
-	unmount("/mnt/acme", "/dev");
-	bind("/mnt/wsys", "/dev", MBEFORE);
-	cons = open("/dev/cons", OREAD);
-	if(cons==-1){
-	NoCons:
-		fprint(2, "bargraph: can't open /dev/cons: %r");
-		return -1;
-	}
-	dup(cons, 0);
-	close(cons);
-	cons = open("/dev/cons", OWRITE);
-	if(cons==-1)
-		goto NoCons;
-	dup(cons, 1);
-	dup(cons, 2);
-	close(cons);
-//	wctlfd = open("/dev/wctl", OWRITE);
-	return 0;
-}
-
-Rectangle
-screenrect(void)
-{
-	int fd;
-	char buf[12*5];
-
-	fd = open("/dev/screen", OREAD);
-	if(fd == -1)
-		fd=open("/mnt/term/dev/screen", OREAD);
-	if(fd == -1){
-		fprint(2, "%s: can't open /dev/screen: %r\n", argv0);
-		exits("window read");
-	}
-	if(read(fd, buf, sizeof buf) != sizeof buf){
-		fprint(2, "%s: can't read /dev/screen: %r\n", argv0);
-		exits("screen read");
-	}
-	close(fd);
-	return Rect(atoi(buf+12), atoi(buf+24), atoi(buf+36), atoi(buf+48));
-}
-
-int
-postnote(int group, int pid, char *note)
-{
-	char file[128];
-	int f, r;
-
-	switch(group) {
-	case PNPROC:
-		sprint(file, "/proc/%d/note", pid);
-		break;
-	case PNGROUP:
-		sprint(file, "/proc/%d/notepg", pid);
-		break;
-	case PNCTL:
-		sprint(file, "/proc/%d/ctl", pid);
-		break;
-	default:
-		return -1;
-	}
-
-	f = open(file, OWRITE);
-	if(f < 0)
-		return -1;
-
-	r = strlen(note);
-	if(write(f, note, r) != r) {
-		close(f);
-		return -1;
-	}
-	close(f);
-	return 0;
-}
--