Browse Source

Plan 9 from Bell Labs 2003-12-06

David du Colombier 20 years ago
parent
commit
44a70299f1

+ 4 - 3
dist/replica/plan9.db

@@ -5996,6 +5996,7 @@ sys/src/ape/lib/ap/mips/vlrt.c - 664 sys sys 1014921989 9001
 sys/src/ape/lib/ap/mkfile - 664 sys sys 1014921988 244
 sys/src/ape/lib/ap/plan9 - 20000000775 sys sys 1014921986 0
 sys/src/ape/lib/ap/plan9/9errstr.c - 664 sys sys 1070330880 31
+sys/src/ape/lib/ap/plan9/9iounit.c - 664 sys sys 1070660696 981
 sys/src/ape/lib/ap/plan9/9mallocz.c - 664 sys sys 1070330880 148
 sys/src/ape/lib/ap/plan9/9read.c - 664 sys sys 1014921986 169
 sys/src/ape/lib/ap/plan9/9readn.c - 664 sys sys 1070330880 221
@@ -6064,7 +6065,7 @@ sys/src/ape/lib/ap/plan9/link.c - 664 sys sys 1014921984 168
 sys/src/ape/lib/ap/plan9/lseek.c - 664 sys sys 1038237526 358
 sys/src/ape/lib/ap/plan9/malloc.c - 664 sys sys 1014921985 1957
 sys/src/ape/lib/ap/plan9/mkdir.c - 664 sys sys 1014921984 353
-sys/src/ape/lib/ap/plan9/mkfile - 664 sys sys 1070330880 1357
+sys/src/ape/lib/ap/plan9/mkfile - 664 sys sys 1070660696 1370
 sys/src/ape/lib/ap/plan9/nan.c - 664 sys sys 1014921985 614
 sys/src/ape/lib/ap/plan9/open.c - 664 sys sys 1048644335 1088
 sys/src/ape/lib/ap/plan9/opendir.c - 664 sys sys 1014921984 1881
@@ -6260,7 +6261,7 @@ sys/src/ape/lib/bsd/strncasecmp.c - 664 sys sys 1051635385 385
 sys/src/ape/lib/bsd/writev.c - 664 sys sys 1014921995 908
 sys/src/ape/lib/draw - 20000000775 sys sys 1070327097 0
 sys/src/ape/lib/draw/colors.c - 664 sys sys 1070327097 3607
-sys/src/ape/lib/draw/libc.h - 664 sys sys 1070327097 3476
+sys/src/ape/lib/draw/libc.h - 664 sys sys 1070660715 3456
 sys/src/ape/lib/draw/mkfile - 664 sys sys 1070327097 1176
 sys/src/ape/lib/fmt - 20000000775 sys sys 1070327381 0
 sys/src/ape/lib/fmt/charstod.c - 664 sys sys 1070327066 1995
@@ -11772,7 +11773,7 @@ sys/src/libdraw/getrect.c - 664 sys sys 1014927875 3046
 sys/src/libdraw/getsubfont.c - 664 sys sys 1014927875 757
 sys/src/libdraw/icossin.c - 664 sys sys 944961724 2117
 sys/src/libdraw/icossin2.c - 664 sys sys 944961724 4587
-sys/src/libdraw/init.c - 664 sys sys 1018288156 9046
+sys/src/libdraw/init.c - 664 sys sys 1070660683 9077
 sys/src/libdraw/keyboard.c - 664 sys sys 1030970091 1703
 sys/src/libdraw/line.c - 664 sys sys 1040442973 731
 sys/src/libdraw/loadimage.c - 664 sys sys 1014927876 983

+ 4 - 0
dist/replica/plan9.log

@@ -12950,3 +12950,7 @@
 1070519472 1 a 386/lib/ape/libfmt.a - 664 sys sys 1070519112 148600
 1070519472 2 a 386/lib/ape/libutf.a - 664 sys sys 1070519112 81400
 1070519472 3 c 386/lib/libdraw.a - 664 sys sys 1070519127 372960
+1070660725 0 a sys/src/ape/lib/ap/plan9/9iounit.c - 664 sys sys 1070660696 981
+1070660725 1 c sys/src/ape/lib/ap/plan9/mkfile - 664 sys sys 1070660696 1370
+1070660725 2 c sys/src/ape/lib/draw/libc.h - 664 sys sys 1070660715 3456
+1070660725 3 c sys/src/libdraw/init.c - 664 sys sys 1070660683 9077

+ 65 - 0
sys/src/ape/lib/ap/plan9/9iounit.c

@@ -0,0 +1,65 @@
+#include "lib.h"
+#include <string.h>
+#include <stdlib.h>
+#include <fmt.h>
+#include "sys9.h"
+#include "dir.h"
+
+/*
+ * Format:
+  3 r  M    4 (0000000000457def 11 00)   8192      512 /rc/lib/rcmain
+ */
+
+static int
+getfields(char *str, char **args, int max, int mflag)
+{
+	char r;
+	int nr, intok, narg;
+
+	if(max <= 0)
+		return 0;
+
+	narg = 0;
+	args[narg] = str;
+	if(!mflag)
+		narg++;
+	intok = 0;
+	for(;;) {
+		r = *str++;
+		if(r == 0)
+			break;
+		if(r == ' ' || r == '\t'){
+			if(narg >= max)
+				break;
+			*str = 0;
+			intok = 0;
+			args[narg] = str + nr;
+			if(!mflag)
+				narg++;
+		} else {
+			if(!intok && mflag)
+				narg++;
+			intok = 1;
+		}
+	}
+	return narg;
+}
+int
+_IOUNIT(int fd)
+{
+	int i, cfd;
+	char buf[128], *args[10];
+
+	snprint(buf, sizeof buf, "#d/%dctl", fd);
+	cfd = _OPEN(buf, OREAD);
+	if(cfd < 0)
+		return 0;
+	i = _READ(cfd, buf, sizeof buf-1);
+	_CLOSE(cfd);
+	if(i <= 0)
+		return 0;
+	buf[i] = '\0';
+	if(getfields(buf, args, 10, 1) != 10)
+		return 0;
+	return atoi(args[7]);
+}

+ 1 - 0
sys/src/ape/lib/ap/plan9/mkfile

@@ -11,6 +11,7 @@ OFILES=\
 	_getpw.$O\
 	_nap.$O\
 	9mallocz.$O\
+	9iounit.$O\
 	9read.$O\
 	9readn.$O\
 	9wait.$O\

+ 2 - 3
sys/src/ape/lib/draw/libc.h

@@ -100,6 +100,7 @@ extern	int	_WSTAT(const char*, unsigned char*, int);
 extern 	void *_MALLOCZ(int, int);
 extern	int	_WERRSTR(char*, ...);
 extern	long	_READN(int, void*, long);
+extern	int	_IOUNIT(int);
 
 #define dirstat _dirstat
 #define dirfstat _dirfstat
@@ -124,12 +125,10 @@ extern	long	_READN(int, void*, long);
 #define pread _PREAD
 #define readn _READN
 #define mallocz _MALLOCZ
+#define iounit	_IOUNIT
 
 /* assume being called as in event.c */
 #define postnote(x, pid, msg) kill(pid, SIGTERM)
 #define atnotify(x, y) signal(SIGTERM, ekill)
 
-/* assume being called as in init.c */
-#define iounit(x) (32*1024)
-
 #define ERRMAX 128

+ 4 - 4
sys/src/libdraw/init.c

@@ -5,7 +5,7 @@
 Display	*display;
 Font	*font;
 Image	*screen;
-int	_drawdebug;
+int	_drawdebug = 0;
 
 static char deffontname[] = "*default*";
 Screen	*_screen;
@@ -400,15 +400,15 @@ static
 int
 doflush(Display *d)
 {
-	int n;
+	int n, nn;
 
 	n = d->bufp-d->buf;
 	if(n <= 0)
 		return 1;
 
-	if(write(d->fd, d->buf, n) != n){
+	if((nn=write(d->fd, d->buf, n)) != n){
 		if(_drawdebug)
-			fprint(2, "flushimage fail: d=%p: %r\n", d); /**/
+			fprint(2, "flushimage fail: d=%p: n=%d nn=%d %r\n", d, n, nn); /**/
 		d->bufp = d->buf;	/* might as well; chance of continuing */
 		return -1;
 	}