Include looks in #9/acid now.

Acid works harder at not falling over.
This commit is contained in:
rsc 2004-04-21 05:34:37 +00:00
parent eaf56db5bc
commit a8c15b08ca
3 changed files with 26 additions and 6 deletions

View file

@ -76,6 +76,7 @@ struct IOstack
IOstack *prev;
};
IOstack *lexio;
uint nlexio;
void
setacidfile(void)
@ -100,6 +101,9 @@ pushfile(char *file)
Biobuf *b;
IOstack *io;
if(nlexio > 64)
error("too many includes");
if(file)
b = Bopen(file, OREAD);
else{
@ -122,6 +126,7 @@ pushfile(char *file)
io->fin = b;
io->prev = lexio;
lexio = io;
nlexio++;
setacidfile();
}
@ -156,6 +161,7 @@ pushstr(Node *s)
io->ip = io->text;
io->fin = 0;
io->prev = lexio;
nlexio++;
lexio = io;
setacidfile();
}
@ -190,6 +196,7 @@ popio(void)
s = lexio;
lexio = s->prev;
free(s);
nlexio--;
setacidfile();
return 1;
}
@ -197,18 +204,17 @@ popio(void)
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");