Browse Source

Plan 9 from Bell Labs 2007-10-17

David du Colombier 16 years ago
parent
commit
dd6ac23d2d
5 changed files with 40 additions and 17 deletions
  1. 2 2
      dist/replica/_plan9.db
  2. 2 2
      dist/replica/plan9.db
  3. 2 0
      dist/replica/plan9.log
  4. 2 2
      sys/man/1/spell
  5. 32 11
      sys/src/9/port/devmouse.c

+ 2 - 2
dist/replica/_plan9.db

@@ -7457,7 +7457,7 @@ sys/man/1/seq - 664 sys sys 1063855680 1131
 sys/man/1/size - 664 sys sys 944959674 393
 sys/man/1/size - 664 sys sys 944959674 393
 sys/man/1/sleep - 664 sys sys 1167774352 420
 sys/man/1/sleep - 664 sys sys 1167774352 420
 sys/man/1/sort - 664 sys sys 1113743328 4719
 sys/man/1/sort - 664 sys sys 1113743328 4719
-sys/man/1/spell - 664 sys sys 1113743329 1876
+sys/man/1/spell - 664 sys sys 1192579418 1898
 sys/man/1/spin - 664 sys sys 1186525444 6685
 sys/man/1/spin - 664 sys sys 1186525444 6685
 sys/man/1/split - 664 sys sys 1038183072 1171
 sys/man/1/split - 664 sys sys 1038183072 1171
 sys/man/1/src - 664 sys sys 954266293 1138
 sys/man/1/src - 664 sys sys 954266293 1138
@@ -8210,7 +8210,7 @@ sys/src/9/port/devkprof.c - 664 sys sys 1014931173 3111
 sys/src/9/port/devloopback.c - 664 sys sys 1138458368 14579
 sys/src/9/port/devloopback.c - 664 sys sys 1138458368 14579
 sys/src/9/port/devmnt.c - 664 sys sys 1134659798 20918
 sys/src/9/port/devmnt.c - 664 sys sys 1134659798 20918
 sys/src/9/port/devmntstats.c - 664 sys sys 1014931173 4039
 sys/src/9/port/devmntstats.c - 664 sys sys 1014931173 4039
-sys/src/9/port/devmouse.c - 664 sys sys 1130848303 13517
+sys/src/9/port/devmouse.c - 664 sys sys 1192564555 13904
 sys/src/9/port/devpipe.c - 664 sys sys 1077055016 5825
 sys/src/9/port/devpipe.c - 664 sys sys 1077055016 5825
 sys/src/9/port/devpnp.c - 664 sys sys 1088560907 13624
 sys/src/9/port/devpnp.c - 664 sys sys 1088560907 13624
 sys/src/9/port/devproc.c - 664 sys sys 1168304324 28543
 sys/src/9/port/devproc.c - 664 sys sys 1168304324 28543

+ 2 - 2
dist/replica/plan9.db

@@ -7457,7 +7457,7 @@ sys/man/1/seq - 664 sys sys 1063855680 1131
 sys/man/1/size - 664 sys sys 944959674 393
 sys/man/1/size - 664 sys sys 944959674 393
 sys/man/1/sleep - 664 sys sys 1167774352 420
 sys/man/1/sleep - 664 sys sys 1167774352 420
 sys/man/1/sort - 664 sys sys 1113743328 4719
 sys/man/1/sort - 664 sys sys 1113743328 4719
-sys/man/1/spell - 664 sys sys 1113743329 1876
+sys/man/1/spell - 664 sys sys 1192579418 1898
 sys/man/1/spin - 664 sys sys 1186525444 6685
 sys/man/1/spin - 664 sys sys 1186525444 6685
 sys/man/1/split - 664 sys sys 1038183072 1171
 sys/man/1/split - 664 sys sys 1038183072 1171
 sys/man/1/src - 664 sys sys 954266293 1138
 sys/man/1/src - 664 sys sys 954266293 1138
@@ -8210,7 +8210,7 @@ sys/src/9/port/devkprof.c - 664 sys sys 1014931173 3111
 sys/src/9/port/devloopback.c - 664 sys sys 1138458368 14579
 sys/src/9/port/devloopback.c - 664 sys sys 1138458368 14579
 sys/src/9/port/devmnt.c - 664 sys sys 1134659798 20918
 sys/src/9/port/devmnt.c - 664 sys sys 1134659798 20918
 sys/src/9/port/devmntstats.c - 664 sys sys 1014931173 4039
 sys/src/9/port/devmntstats.c - 664 sys sys 1014931173 4039
-sys/src/9/port/devmouse.c - 664 sys sys 1130848303 13517
+sys/src/9/port/devmouse.c - 664 sys sys 1192564555 13904
 sys/src/9/port/devpipe.c - 664 sys sys 1077055016 5825
 sys/src/9/port/devpipe.c - 664 sys sys 1077055016 5825
 sys/src/9/port/devpnp.c - 664 sys sys 1088560907 13624
 sys/src/9/port/devpnp.c - 664 sys sys 1088560907 13624
 sys/src/9/port/devproc.c - 664 sys sys 1168304324 28543
 sys/src/9/port/devproc.c - 664 sys sys 1168304324 28543

+ 2 - 0
dist/replica/plan9.log

@@ -53074,3 +53074,5 @@
 1192156204 0 c sys/man/4/ftpfs - 664 sys sys 1192155958 4895
 1192156204 0 c sys/man/4/ftpfs - 664 sys sys 1192155958 4895
 1192305605 0 c rc/bin/patch/diff - 775 sys sys 1192305220 561
 1192305605 0 c rc/bin/patch/diff - 775 sys sys 1192305220 561
 1192305605 1 c sys/games/lib/fortunes - 664 sys sys 1192305216 267301
 1192305605 1 c sys/games/lib/fortunes - 664 sys sys 1192305216 267301
+1192564804 0 c sys/src/9/port/devmouse.c - 664 sys sys 1192564555 13904
+1192579205 0 c sys/man/1/spell - 664 sys sys 1192579418 1898

+ 2 - 2
sys/man/1/spell

@@ -12,7 +12,7 @@ spell, sprog \- find spelling errors
 ]
 ]
 \&...
 \&...
 .PP
 .PP
-.B sprog
+.B aux/sprog
 [
 [
 .I options
 .I options
 ]
 ]
@@ -43,7 +43,7 @@ Print all words not literally in the spelling list, with
 derivations.
 derivations.
 .TP
 .TP
 .B -x
 .B -x
-Print, marked with
+Print on standard error, marked with
 .LR = ,
 .LR = ,
 every stem as it is looked up in the spelling list,
 every stem as it is looked up in the spelling list,
 along with its affix classes.
 along with its affix classes.

+ 32 - 11
sys/src/9/port/devmouse.c

@@ -78,6 +78,7 @@ Cursor		curs;
 
 
 void	Cursortocursor(Cursor*);
 void	Cursortocursor(Cursor*);
 int	mousechanged(void*);
 int	mousechanged(void*);
+
 static void mouseclock(void);
 static void mouseclock(void);
 static void xkbdmouse(int);
 static void xkbdmouse(int);
 
 
@@ -102,7 +103,10 @@ static uchar buttonmap[8] = {
 };
 };
 static int mouseswap;
 static int mouseswap;
 static int scrollswap;
 static int scrollswap;
-extern	Memimage*	gscreen;
+static ulong mousetime;
+
+extern Memimage* gscreen;
+extern ulong kerndate;
 
 
 static void
 static void
 mousereset(void)
 mousereset(void)
@@ -123,6 +127,17 @@ mousefromkbd(int buttons)
 	mousetrack(0, 0, 0, TK2MS(MACHP(0)->ticks));
 	mousetrack(0, 0, 0, TK2MS(MACHP(0)->ticks));
 }
 }
 
 
+static int
+mousedevgen(Chan *c, char *name, Dirtab *tab, int ntab, int i, Dir *dp)
+{
+	int rc;
+
+	rc = devgen(c, name, tab, ntab, i, dp);
+	if(rc != -1)
+		dp->atime = mousetime;
+	return rc;
+}
+
 static void
 static void
 mouseinit(void)
 mouseinit(void)
 {
 {
@@ -133,6 +148,7 @@ mouseinit(void)
 	Cursortocursor(&arrow);
 	Cursortocursor(&arrow);
 	cursoron(1);
 	cursoron(1);
 	kbdmouse = mousefromkbd;
 	kbdmouse = mousefromkbd;
+	mousetime = seconds();
 }
 }
 
 
 static Chan*
 static Chan*
@@ -148,6 +164,10 @@ mousewalk(Chan *c, Chan *nc, char **name, int nname)
 {
 {
 	Walkqid *wq;
 	Walkqid *wq;
 
 
+	/*
+	 * We use devgen() and not mousedevgen() here
+	 * see "Ugly problem" in dev.c/devwalk()
+	 */
 	wq = devwalk(c, nc, name, nname, mousedir, nelem(mousedir), devgen);
 	wq = devwalk(c, nc, name, nname, mousedir, nelem(mousedir), devgen);
 	if(wq != nil && wq->clone != c && wq->clone != nil && (wq->clone->qid.type&QTDIR)==0)
 	if(wq != nil && wq->clone != c && wq->clone != nil && (wq->clone->qid.type&QTDIR)==0)
 		incref(&mouse);
 		incref(&mouse);
@@ -157,7 +177,7 @@ mousewalk(Chan *c, Chan *nc, char **name, int nname)
 static int
 static int
 mousestat(Chan *c, uchar *db, int n)
 mousestat(Chan *c, uchar *db, int n)
 {
 {
-	return devstat(c, db, n, mousedir, nelem(mousedir), devgen);
+	return devstat(c, db, n, mousedir, nelem(mousedir), mousedevgen);
 }
 }
 
 
 static Chan*
 static Chan*
@@ -243,7 +263,7 @@ mouseread(Chan *c, void *va, long n, vlong off)
 	p = va;
 	p = va;
 	switch((ulong)c->qid.path){
 	switch((ulong)c->qid.path){
 	case Qdir:
 	case Qdir:
-		return devdirread(c, va, n, mousedir, nelem(mousedir), devgen);
+		return devdirread(c, va, n, mousedir, nelem(mousedir), mousedevgen);
 
 
 	case Qcursor:
 	case Qcursor:
 		if(offset != 0)
 		if(offset != 0)
@@ -264,9 +284,10 @@ mouseread(Chan *c, void *va, long n, vlong off)
 			sleep(&mouse.r, mousechanged, 0);
 			sleep(&mouse.r, mousechanged, 0);
 
 
 		mouse.qfull = 0;
 		mouse.qfull = 0;
+		mousetime = seconds();
 
 
 		/*
 		/*
-		 * No lock of the indicies is necessary here, because ri is only
+		 * No lock of the indices is necessary here, because ri is only
 		 * updated by us, and there is only one mouse reader
 		 * updated by us, and there is only one mouse reader
 		 * at a time.  I suppose that more than one process
 		 * at a time.  I suppose that more than one process
 		 * could try to read the fd at one time, but such behavior
 		 * could try to read the fd at one time, but such behavior
@@ -280,7 +301,7 @@ mouseread(Chan *c, void *va, long n, vlong off)
 		} else {
 		} else {
 			while(!canlock(&cursor))
 			while(!canlock(&cursor))
 				tsleep(&up->sleep, return0, 0, TK2MS(1));
 				tsleep(&up->sleep, return0, 0, TK2MS(1));
-	
+
 			m = mouse.Mousestate;
 			m = mouse.Mousestate;
 			unlock(&cursor);
 			unlock(&cursor);
 		}
 		}
@@ -444,7 +465,7 @@ mousewrite(Chan *c, void *va, long n, vlong)
 			msec = TK2MS(MACHP(0)->ticks);
 			msec = TK2MS(MACHP(0)->ticks);
 		mousetrack(pt.x, pt.y, b, msec);
 		mousetrack(pt.x, pt.y, b, msec);
 		return n;
 		return n;
-		
+
 	case Qmouse:
 	case Qmouse:
 		if(n > sizeof buf-1)
 		if(n > sizeof buf-1)
 			n = sizeof buf -1;
 			n = sizeof buf -1;
@@ -620,7 +641,7 @@ m3mouseputc(Queue*, int c)
 	int dx, dy, newbuttons;
 	int dx, dy, newbuttons;
 	static ulong lasttick;
 	static ulong lasttick;
 	ulong m;
 	ulong m;
-	
+
 	/* Resynchronize in stream with timing. */
 	/* Resynchronize in stream with timing. */
 	m = MACHP(0)->ticks;
 	m = MACHP(0)->ticks;
 	if(TK2SEC(m - lasttick) > 2)
 	if(TK2SEC(m - lasttick) > 2)
@@ -674,7 +695,7 @@ m5mouseputc(Queue*, int c)
 	static int nb;
 	static int nb;
 	static ulong lasttick;
 	static ulong lasttick;
 	ulong m;
 	ulong m;
-	
+
 	/* Resynchronize in stream with timing. */
 	/* Resynchronize in stream with timing. */
 	m = MACHP(0)->ticks;
 	m = MACHP(0)->ticks;
 	if(TK2SEC(m - lasttick) > 2)
 	if(TK2SEC(m - lasttick) > 2)
@@ -686,7 +707,7 @@ m5mouseputc(Queue*, int c)
 		schar dx,dy,newbuttons;
 		schar dx,dy,newbuttons;
 		dx = msg[1] | (msg[0] & 0x3) << 6;
 		dx = msg[1] | (msg[0] & 0x3) << 6;
 		dy = msg[2] | (msg[0] & 0xc) << 4;
 		dy = msg[2] | (msg[0] & 0xc) << 4;
-		newbuttons = 
+		newbuttons =
 			(msg[0] & 0x10) >> (mouseshifted ? 3 : 2)
 			(msg[0] & 0x10) >> (mouseshifted ? 3 : 2)
 			| (msg[0] & 0x20) >> 5
 			| (msg[0] & 0x20) >> 5
 			| ( msg[3] == 0x10 ? 0x02 :
 			| ( msg[3] == 0x10 ? 0x02 :
@@ -712,7 +733,7 @@ mouseputc(Queue*, int c)
 	int dx, dy, newbuttons;
 	int dx, dy, newbuttons;
 	static ulong lasttick;
 	static ulong lasttick;
 	ulong m;
 	ulong m;
-	
+
 	/* Resynchronize in stream with timing. */
 	/* Resynchronize in stream with timing. */
 	m = MACHP(0)->ticks;
 	m = MACHP(0)->ticks;
 	if(TK2SEC(m - lasttick) > 2)
 	if(TK2SEC(m - lasttick) > 2)
@@ -737,7 +758,7 @@ mouseputc(Queue*, int c)
 int
 int
 mousechanged(void*)
 mousechanged(void*)
 {
 {
-	return mouse.lastcounter != mouse.counter || 
+	return mouse.lastcounter != mouse.counter ||
 		mouse.lastresize != mouse.resize;
 		mouse.lastresize != mouse.resize;
 }
 }