Browse Source

Plan 9 from Bell Labs 2005-02-01

David du Colombier 19 years ago
parent
commit
b264ee4d5c

+ 11 - 9
dist/replica/_plan9.db

@@ -20,7 +20,7 @@
 386/bin/9660srv - 775 sys sys 1104121955 103973
 386/bin/aan - 775 sys sys 1104121955 130710
 386/bin/acid - 775 sys sys 1106453224 355754
-386/bin/acme - 775 sys sys 1106799168 427251
+386/bin/acme - 775 sys sys 1107154493 428041
 386/bin/ape - 20000000775 sys sys 1016944144 0
 386/bin/ape/basename - 775 sys sys 1087442501 132681
 386/bin/ape/cc - 775 sys sys 1104121958 70291
@@ -3343,7 +3343,7 @@ sys/doc/venti/venti.pdf - 755 sys sys 1020384352 139090
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
-sys/games/lib/fortunes - 664 sys sys 1107071255 252431
+sys/games/lib/fortunes - 664 sys sys 1107160187 252674
 sys/games/lib/mahjongg - 20000000775 sys sys 1095792278 0
 sys/games/lib/mahjongg/backgrounds - 20000000775 sys sys 1095792293 0
 sys/games/lib/mahjongg/backgrounds/default.bit - 664 sys sys 1095792293 346803
@@ -4657,7 +4657,7 @@ sys/man/1/2l - 664 sys sys 1101668051 4365
 sys/man/1/INDEX - 664 sys sys 1104811679 3004
 sys/man/1/INDEX.html - 664 sys sys 1104736360 16403
 sys/man/1/acid - 664 sys sys 1101668051 9727
-sys/man/1/acme - 664 sys sys 1101996606 17593
+sys/man/1/acme - 664 sys sys 1107154713 18033
 sys/man/1/ap - 664 sys sys 1068471657 364
 sys/man/1/ar - 664 sys sys 1079397701 3153
 sys/man/1/ascii - 664 sys sys 957920005 2733
@@ -4990,7 +4990,7 @@ sys/man/4 - 20000000775 sys sys 1018581459 0
 sys/man/4/0intro - 664 sys sys 944959699 472
 sys/man/4/INDEX - 664 sys sys 1104811679 985
 sys/man/4/INDEX.html - 664 sys sys 1104736381 4926
-sys/man/4/acme - 664 sys sys 1015024813 9642
+sys/man/4/acme - 664 sys sys 1107154713 9959
 sys/man/4/archfs - 664 sys sys 960000712 533
 sys/man/4/cdfs - 664 sys sys 1026846913 3638
 sys/man/4/cfs - 664 sys sys 1015024813 1758
@@ -6797,7 +6797,7 @@ sys/src/cmd/acme/acme.c - 664 sys sys 1104430286 19613
 sys/src/cmd/acme/addr.c - 664 sys sys 1018553456 4787
 sys/src/cmd/acme/buff.c - 664 sys sys 1014926092 5573
 sys/src/cmd/acme/cols.c - 664 sys sys 1079102914 11126
-sys/src/cmd/acme/dat.h - 664 sys sys 1104874643 11144
+sys/src/cmd/acme/dat.h - 664 sys sys 1107154481 11165
 sys/src/cmd/acme/disk.c - 664 sys sys 1014926093 2151
 sys/src/cmd/acme/ecmd.c - 664 sys sys 1077376256 24294
 sys/src/cmd/acme/edit.c - 664 sys sys 1101910761 12068
@@ -6805,8 +6805,8 @@ sys/src/cmd/acme/edit.h - 664 sys sys 969500816 2466
 sys/src/cmd/acme/elog.c - 664 sys sys 1078839859 7236
 sys/src/cmd/acme/exec.c - 664 sys sys 1099329953 28183
 sys/src/cmd/acme/file.c - 664 sys sys 1044626079 5717
-sys/src/cmd/acme/fns.h - 664 sys sys 1079102913 2883
-sys/src/cmd/acme/fsys.c - 664 sys sys 1079102915 12799
+sys/src/cmd/acme/fns.h - 664 sys sys 1107154481 2916
+sys/src/cmd/acme/fsys.c - 664 sys sys 1107154482 12881
 sys/src/cmd/acme/look.c - 664 sys sys 1077376257 14213
 sys/src/cmd/acme/mkfile - 664 sys sys 1058463682 543
 sys/src/cmd/acme/regx.c - 664 sys sys 1014926094 16057
@@ -6814,9 +6814,9 @@ sys/src/cmd/acme/rows.c - 664 sys sys 1103565437 14702
 sys/src/cmd/acme/scrl.c - 664 sys sys 1014926095 3072
 sys/src/cmd/acme/text.c - 664 sys sys 1103606882 27652
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
-sys/src/cmd/acme/util.c - 664 sys sys 1100535510 7208
+sys/src/cmd/acme/util.c - 664 sys sys 1107154483 7984
 sys/src/cmd/acme/wind.c - 664 sys sys 1104874643 11201
-sys/src/cmd/acme/xfid.c - 664 sys sys 1104874643 19219
+sys/src/cmd/acme/xfid.c - 664 sys sys 1107154483 19555
 sys/src/cmd/ar.c - 664 sys sys 1046643027 23717
 sys/src/cmd/archfs.c - 664 sys sys 1014925694 3871
 sys/src/cmd/ascii.c - 664 sys sys 964457138 3989
@@ -12456,3 +12456,5 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
+386/bin/acme - 775 sys sys 1107230748 428041
+sys/src/9/port/devsrv.c - 664 sys sys 1107232208 5418

+ 10 - 10
dist/replica/plan9.db

@@ -20,7 +20,7 @@
 386/bin/9660srv - 775 sys sys 1104121955 103973
 386/bin/aan - 775 sys sys 1104121955 130710
 386/bin/acid - 775 sys sys 1106453224 355754
-386/bin/acme - 775 sys sys 1106799168 427251
+386/bin/acme - 775 sys sys 1107230748 428041
 386/bin/ape - 20000000775 sys sys 1016944144 0
 386/bin/ape/basename - 775 sys sys 1087442501 132681
 386/bin/ape/cc - 775 sys sys 1104121958 70291
@@ -3343,7 +3343,7 @@ sys/doc/venti/venti.pdf - 755 sys sys 1020384352 139090
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
-sys/games/lib/fortunes - 664 sys sys 1107071255 252431
+sys/games/lib/fortunes - 664 sys sys 1107160187 252674
 sys/games/lib/mahjongg - 20000000775 sys sys 1095792278 0
 sys/games/lib/mahjongg/backgrounds - 20000000775 sys sys 1095792293 0
 sys/games/lib/mahjongg/backgrounds/default.bit - 664 sys sys 1095792293 346803
@@ -4657,7 +4657,7 @@ sys/man/1/2l - 664 sys sys 1101668051 4365
 sys/man/1/INDEX - 664 sys sys 1104811679 3004
 sys/man/1/INDEX.html - 664 sys sys 1104736360 16403
 sys/man/1/acid - 664 sys sys 1101668051 9727
-sys/man/1/acme - 664 sys sys 1101996606 17593
+sys/man/1/acme - 664 sys sys 1107154713 18033
 sys/man/1/ap - 664 sys sys 1068471657 364
 sys/man/1/ar - 664 sys sys 1079397701 3153
 sys/man/1/ascii - 664 sys sys 957920005 2733
@@ -4990,7 +4990,7 @@ sys/man/4 - 20000000775 sys sys 1018581459 0
 sys/man/4/0intro - 664 sys sys 944959699 472
 sys/man/4/INDEX - 664 sys sys 1104811679 985
 sys/man/4/INDEX.html - 664 sys sys 1104736381 4926
-sys/man/4/acme - 664 sys sys 1015024813 9642
+sys/man/4/acme - 664 sys sys 1107154713 9959
 sys/man/4/archfs - 664 sys sys 960000712 533
 sys/man/4/cdfs - 664 sys sys 1026846913 3638
 sys/man/4/cfs - 664 sys sys 1015024813 1758
@@ -5500,7 +5500,7 @@ sys/src/9/port/devroot.c - 664 sys sys 1067722764 4254
 sys/src/9/port/devsd.c - 664 sys sys 1071245428 28564
 sys/src/9/port/devsdp.c - 664 sys sys 1057323393 44800
 sys/src/9/port/devsegment.c - 664 sys sys 1017679394 9600
-sys/src/9/port/devsrv.c - 664 sys sys 1104243965 5149
+sys/src/9/port/devsrv.c - 664 sys sys 1107232208 5418
 sys/src/9/port/devssl.c - 664 sys sys 1045063590 26100
 sys/src/9/port/devtinyfs.c - 664 sys sys 1015278339 15347
 sys/src/9/port/devtls.c - 664 sys sys 1086406907 45225
@@ -6797,7 +6797,7 @@ sys/src/cmd/acme/acme.c - 664 sys sys 1104430286 19613
 sys/src/cmd/acme/addr.c - 664 sys sys 1018553456 4787
 sys/src/cmd/acme/buff.c - 664 sys sys 1014926092 5573
 sys/src/cmd/acme/cols.c - 664 sys sys 1079102914 11126
-sys/src/cmd/acme/dat.h - 664 sys sys 1104874643 11144
+sys/src/cmd/acme/dat.h - 664 sys sys 1107154481 11165
 sys/src/cmd/acme/disk.c - 664 sys sys 1014926093 2151
 sys/src/cmd/acme/ecmd.c - 664 sys sys 1077376256 24294
 sys/src/cmd/acme/edit.c - 664 sys sys 1101910761 12068
@@ -6805,8 +6805,8 @@ sys/src/cmd/acme/edit.h - 664 sys sys 969500816 2466
 sys/src/cmd/acme/elog.c - 664 sys sys 1078839859 7236
 sys/src/cmd/acme/exec.c - 664 sys sys 1099329953 28183
 sys/src/cmd/acme/file.c - 664 sys sys 1044626079 5717
-sys/src/cmd/acme/fns.h - 664 sys sys 1079102913 2883
-sys/src/cmd/acme/fsys.c - 664 sys sys 1079102915 12799
+sys/src/cmd/acme/fns.h - 664 sys sys 1107154481 2916
+sys/src/cmd/acme/fsys.c - 664 sys sys 1107154482 12881
 sys/src/cmd/acme/look.c - 664 sys sys 1077376257 14213
 sys/src/cmd/acme/mkfile - 664 sys sys 1058463682 543
 sys/src/cmd/acme/regx.c - 664 sys sys 1014926094 16057
@@ -6814,9 +6814,9 @@ sys/src/cmd/acme/rows.c - 664 sys sys 1103565437 14702
 sys/src/cmd/acme/scrl.c - 664 sys sys 1014926095 3072
 sys/src/cmd/acme/text.c - 664 sys sys 1103606882 27652
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
-sys/src/cmd/acme/util.c - 664 sys sys 1100535510 7208
+sys/src/cmd/acme/util.c - 664 sys sys 1107154483 7984
 sys/src/cmd/acme/wind.c - 664 sys sys 1104874643 11201
-sys/src/cmd/acme/xfid.c - 664 sys sys 1104874643 19219
+sys/src/cmd/acme/xfid.c - 664 sys sys 1107154483 19555
 sys/src/cmd/ar.c - 664 sys sys 1046643027 23717
 sys/src/cmd/archfs.c - 664 sys sys 1014925694 3871
 sys/src/cmd/ascii.c - 664 sys sys 964457138 3989

+ 11 - 0
dist/replica/plan9.log

@@ -13352,3 +13352,14 @@
 1107064870 0 c sys/games/lib/fortunes - 664 sys sys 1107063227 252231
 1107070271 0 c sys/games/lib/fortunes - 664 sys sys 1107068927 252294
 1107072072 0 c sys/games/lib/fortunes - 664 sys sys 1107071255 252431
+1107154888 0 c 386/bin/acme - 775 sys sys 1107154493 428041
+1107154888 1 c sys/man/1/acme - 664 sys sys 1107154713 18033
+1107154888 2 c sys/man/4/acme - 664 sys sys 1107154713 9959
+1107154888 3 c sys/src/cmd/acme/dat.h - 664 sys sys 1107154481 11165
+1107154888 4 c sys/src/cmd/acme/fns.h - 664 sys sys 1107154481 2916
+1107154888 5 c sys/src/cmd/acme/fsys.c - 664 sys sys 1107154482 12881
+1107154888 6 c sys/src/cmd/acme/util.c - 664 sys sys 1107154483 7984
+1107154888 7 c sys/src/cmd/acme/xfid.c - 664 sys sys 1107154483 19555
+1107160289 0 c sys/games/lib/fortunes - 664 sys sys 1107160187 252674
+1107232303 0 c 386/bin/acme - 775 sys sys 1107230748 428041
+1107232303 1 c sys/src/9/port/devsrv.c - 664 sys sys 1107232208 5418

+ 1 - 0
sys/games/lib/fortunes

@@ -4049,3 +4049,4 @@ Book-burning is such an ugly phrase.  I prefer to think of it as "English lit".
 panic: bad rob
 	ulong	when;			/* may underflow in clock(); must be signed */ 
 There is no interest in a WWW browser.  This fad is clearly not going to have any staying power.  - plan.9@research.att.com, Oct 22 1994
+the representation of characters, but not the character set itself, was changed this weekend.  we believe that the representation we are using now will become the one used by unix-like systems everywhere.  - rob's news about utf-8, sep 6 1992

+ 34 - 13
sys/man/1/acme

@@ -4,6 +4,9 @@ acme, win, awd \- interactive text windows
 .SH SYNOPSIS
 .B acme
 [
+.B -ab
+]
+[
 .B -f
 .I varfont
 ]
@@ -16,9 +19,6 @@ acme, win, awd \- interactive text windows
 .I ncol
 ]
 [
-.B -b
-]
-[
 .B -l
 .I file
 |
@@ -135,7 +135,7 @@ temporarily hiding other windows in the column.
 if any of them needs attention.)
 The layout box in a window is normally white; when it is black in the center,
 it records that the file is `dirty':
-.I Acme
+.I acme
 believes it is modified from its original
 contents.
 .PP
@@ -169,6 +169,16 @@ The only exception is that the command names to the
 left of the bar in a tag are maintained automatically; changes to them are repaired
 by
 .IR acme .
+.PP
+When a window is in autoindent mode
+(see the
+.B Indent
+command below) and a newline character is typed,
+acme copies leading white space on the current line to the new line.
+The option
+.B -a
+causes each window to start in 
+autoindent mode.
 .SS "Directory context
 Each window's tag names a directory: explicitly if the window
 holds a directory; implicitly if it holds a regular file
@@ -347,6 +357,17 @@ This command is largely superseded by plumbing
 (see
 .IR plumb (6)).
 .TP
+.B Indent
+Set the autoindent mode according to the argument:
+.B on
+and
+.B off
+set the mode for the current window;
+.B ON
+and
+.B OFF
+set the mode for the current window and all future windows.
+.TP
 .B Kill
 Send a
 .B kill
@@ -354,6 +375,15 @@ note to
 .IR acme -initiated
 commands named as arguments.
 .TP
+.B Load
+Restore the state of
+.I acme
+from a file (default
+.BR $home/acme.dump )
+created by the
+.B Dump
+command.
+.TP
 .B Local
 When prefixed to a command
 run the
@@ -370,15 +400,6 @@ etc.,
 and to set environment variables such as
 .BR $objtype .
 .TP
-.B Load
-Restore the state of
-.I acme
-from a file (default
-.BR $home/acme.dump )
-created by the
-.B Dump
-command.
-.TP
 .B Look
 Search in body for occurrence of literal text indicated by the argument or,
 if none is given, by the selected text in the body.

+ 18 - 0
sys/man/4/acme

@@ -285,6 +285,17 @@ address (the end of the address has no effect)
 and sets the address to the null string at the end of the returned
 characters.
 .TP
+.B errors
+Writing to the
+.B errors
+file appends to the body of the
+.IB dir /+Errors
+window, where
+.I dir
+is the directory currently named in the tag.
+The window is created if necessary,
+but not until text is actually written.
+.TP
 .B event
 When a window's
 .B event
@@ -400,6 +411,13 @@ holds contents of the window tag.  It may be read at any byte offset.
 Text written to
 .B tag
 is always appended; the file offset is ignored.
+.TP
+.B xdata
+The
+.B xdata
+file like
+.B data
+except that reads stop at the end address.
 .SH SOURCE
 .B /sys/src/cmd/acme
 .SH SEE ALSO

+ 12 - 0
sys/src/9/port/devsrv.c

@@ -200,9 +200,21 @@ srvremove(Chan *c)
 	if(sp == 0)
 		error(Enonexist);
 
+	/*
+	 * Only eve can remove system services.
+	 * No one can remove #s/boot.
+	 */
+	if(strcmp(sp->owner, eve) == 0 && !iseve())
+		error(Eperm);
 	if(strcmp(sp->name, "boot") == 0)
 		error(Eperm);
 
+	/*
+	 * No removing personal services.
+	 */
+	if((sp->perm&7) != 7 && strcmp(sp->owner, up->user) && !iseve())
+		error(Eperm);
+
 	*l = sp->link;
 	qunlock(&srvlk);
 	poperror();

+ 2 - 0
sys/src/cmd/acme/dat.h

@@ -15,10 +15,12 @@ enum
 	QWctl,
 	QWdata,
 	QWeditout,
+	QWerrors,
 	QWevent,
 	QWrdsel,
 	QWwrsel,
 	QWtag,
+	QWxdata,
 	QMAX,
 };
 

+ 1 - 0
sys/src/cmd/acme/fns.h

@@ -24,6 +24,7 @@ void	allwindows(void(*)(Window*, void*), void*);
 uint loadfile(int, uint, int*, int(*)(void*, uint, Rune*, int), void*);
 
 Window*	errorwin(Mntdir*, int);
+Window*	errorwinforwin(Window*);
 Runestr cleanrname(Runestr);
 void	run(Window*, char*, Rune*, int, int, char*, char*, int);
 void fsysclose(void);

+ 2 - 0
sys/src/cmd/acme/fsys.c

@@ -81,10 +81,12 @@ Dirtab dirtabw[]=
 	{ "ctl",		QTFILE,		QWctl,		0600 },
 	{ "data",		QTFILE,		QWdata,		0600 },
 	{ "editout",	QTFILE,		QWeditout,	0200 },
+	{ "errors",		QTFILE,		QWerrors,		0200 },
 	{ "event",		QTFILE,		QWevent,		0600 },
 	{ "rdsel",		QTFILE,		QWrdsel,		0400 },
 	{ "wrsel",		QTFILE,		QWwrsel,		0200 },
 	{ "tag",		QTAPPEND,	QWtag,		0600|DMAPPEND },
+	{ "xdata",		QTFILE,		QWxdata,		0600 },
 	{ nil, }
 };
 

+ 43 - 0
sys/src/cmd/acme/util.c

@@ -109,6 +109,49 @@ errorwin(Mntdir *md, int owner)
 	return w;
 }
 
+/*
+ * Incoming window should be locked. 
+ * It will be unlocked and returned window
+ * will be locked in its place.
+ */
+Window*
+errorwinforwin(Window *w)
+{
+	int i, n, nincl, owner;
+	Rune **incl;
+	Runestr dir;
+	Text *t;
+
+	t = &w->body;
+	dir = dirname(t, nil, 0);
+	if(dir.nr==1 && dir.r[0]=='.'){	/* sigh */
+		free(dir.r);
+		dir.r = nil;
+		dir.nr = 0;
+	}
+	incl = nil;
+	nincl = w->nincl;
+	if(nincl > 0){
+		incl = emalloc(nincl*sizeof(Rune*));
+		for(i=0; i<nincl; i++){
+			n = runestrlen(w->incl[i]);
+			incl[i] = runemalloc(n+1);
+			runemove(incl[i], w->incl[i], n);
+		}
+	}
+	owner = w->owner;
+	winunlock(w);
+	for(;;){
+		w = errorwin1(dir.r, dir.nr, incl, nincl);
+		winlock(w, owner);
+		if(w->col != nil)
+			break;
+		/* window deleted too fast */
+		winunlock(w);
+	}
+	return w;
+}
+
 typedef struct Warning Warning;
 
 struct Warning{

+ 17 - 1
sys/src/cmd/acme/xfid.c

@@ -109,6 +109,7 @@ xfidopen(Xfid *x)
 			}
 			break;
 		case QWdata:
+		case QWxdata:
 			w->nopen[q]++;
 			break;
 		case QWevent:
@@ -213,12 +214,13 @@ xfidclose(Xfid *x)
 			}
 			break;
 		case QWdata:
+		case QWxdata:
 			w->nomark = FALSE;
 			/* fall through */
 		case QWaddr:
 		case QWevent:	/* BUG: do we need to shut down Xfid? */
 			if(--w->nopen[q] == 0){
-				if(q == QWdata)
+				if(q == QWdata || q == QWxdata)
 					w->nomark = FALSE;
 				if(q==QWevent && !w->isdir && w->col!=nil){
 					w->filemenu = TRUE;
@@ -330,6 +332,15 @@ xfidread(Xfid *x)
 		w->addr.q1 = w->addr.q0;
 		break;
 
+	case QWxdata:
+		/* BUG: what should happen if q1 > q0? */
+		if(w->addr.q0 > w->body.file->nc){
+			respond(x, &fc, Eaddr);
+			break;
+		}
+		w->addr.q0 += xfidruneread(x, &w->body, w->addr.q0, w->addr.q1);
+		break;
+
 	case QWtag:
 		xfidutfread(x, &w->tag, w->tag.file->nc, QWtag);
 		break;
@@ -432,6 +443,11 @@ xfidwrite(Xfid *x)
 		respond(x, &fc, nil);
 		break;
 
+	case QWerrors:
+		w = errorwinforwin(w);
+		t = &w->body;
+		goto BodyTag;
+
 	case QWbody:
 	case QWwrsel:
 		t = &w->body;