Include looks in #9/acid now.
Acid works harder at not falling over.
diff --git a/src/cmd/acid/builtin.c b/src/cmd/acid/builtin.c
index 290b3c6..787e2e5 100644
--- a/src/cmd/acid/builtin.c
+++ b/src/cmd/acid/builtin.c
@@ -478,6 +478,8 @@
 void
 include(Node *r, Node *args)
 {
+	char *file, *libfile;
+	static char buf[1024];
 	Node res;
 	int isave;
 
@@ -488,7 +490,19 @@
 		error("include(string): arg type");
 
 	Bflush(bout);
-	pushfile(res.store.u.string->string);
+
+	libfile = nil;
+	file = res.store.u.string->string;
+	if(access(file, AREAD) < 0 && file[0] != '/'){
+		snprint(buf, sizeof buf, "#9/acid/%s", file);
+		libfile = unsharp(buf);
+		if(access(libfile, AREAD) >= 0){
+			strecpy(buf, buf+sizeof buf, libfile);
+			file = buf;
+		}
+		free(libfile);
+	}
+	pushfile(file);
 
 	isave = interactive;
 	interactive = 0;
diff --git a/src/cmd/acid/lex.c b/src/cmd/acid/lex.c
index bbfb47b..d978407 100644
--- a/src/cmd/acid/lex.c
+++ b/src/cmd/acid/lex.c
@@ -76,6 +76,7 @@
 	IOstack	*prev;
 };
 IOstack *lexio;
+uint nlexio;
 
 void
 setacidfile(void)
@@ -100,6 +101,9 @@
 	Biobuf *b;
 	IOstack *io;
 
+	if(nlexio > 64)
+		error("too many includes");
+
 	if(file)
 		b = Bopen(file, OREAD);
 	else{
@@ -122,6 +126,7 @@
 	io->fin = b;
 	io->prev = lexio;
 	lexio = io;
+	nlexio++;
 	setacidfile();
 }
 
@@ -156,6 +161,7 @@
 	io->ip = io->text;
 	io->fin = 0;
 	io->prev = lexio;
+	nlexio++;
 	lexio = io;
 	setacidfile();
 }
@@ -190,6 +196,7 @@
 	s = lexio;
 	lexio = s->prev;
 	free(s);
+	nlexio--;
 	setacidfile();
 	return 1;
 }
@@ -197,18 +204,17 @@
 int
 Zfmt(Fmt *f)
 {
-	int i;
-	char buf[1024];
+	char buf[1024], *p;
 	IOstack *e;
 
 	e = lexio;
 	if(e) {
-		i = sprint(buf, "%s:%d", e->name, line);
+		p = seprint(buf, buf+sizeof buf, "%s:%d", e->name, line);
 		while(e->prev) {
 			e = e->prev;
 			if(initialising && e->prev == 0)
 				break;
-			i += sprint(buf+i, " [%s:%d]", e->name, e->line);
+			p = seprint(p, buf+sizeof buf, " [%s:%d]", e->name, e->line);
 		}
 	} else
 		sprint(buf, "no file:0");
diff --git a/src/cmd/acid/util.c b/src/cmd/acid/util.c
index a40416c..355fd5b 100644
--- a/src/cmd/acid/util.c
+++ b/src/cmd/acid/util.c
@@ -36,7 +36,7 @@
 		}
 	}
 	if(renamed && !quiet)
-		print("\t%s=%s %c/%Z\n", s->name, buf, s->type, s->loc);
+		print("\t%s=%s %c/%L\n", s->name, buf, s->type, s->loc);
 	if(l == 0)
 		l = enter(buf, Tid);
 	return l;