From d79edf98b8d3dd8c1cbf9ad1be7728e13ed7a364 Mon Sep 17 00:00:00 2001 From: Jacob Moody Date: Tue, 21 Mar 2023 21:24:16 +0000 Subject: cpp: #pragma once support --- sys/src/cmd/cpp/include.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'sys/src/cmd/cpp/include.c') diff --git a/sys/src/cmd/cpp/include.c b/sys/src/cmd/cpp/include.c index a4e716482..347916981 100644 --- a/sys/src/cmd/cpp/include.c +++ b/sys/src/cmd/cpp/include.c @@ -6,12 +6,16 @@ Includelist includelist[NINCLUDE]; char *objname; +Qid incblocked[NONCE]; +int nblocked = 0; + void doinclude(Tokenrow *trp) { char fname[256], iname[256], *p; Includelist *ip; int angled, len, fd, i; + Dir *d; trp->tp += 1; if (trp->tp>=trp->lp) @@ -87,6 +91,15 @@ doinclude(Tokenrow *trp) write(1,"\n",1); } if (fd >= 0) { + d = dirfstat(fd); + if (d == nil) + error(FATAL, "Out of memory from dirfstat"); + for (i=0; iqid.path && incblocked[i].type == d->qid.type) { + free(d); + return; + } + free(d); if (++incdepth > 20) error(FATAL, "#include too deeply nested"); setsource((char*)newstring((uchar*)iname, strlen(iname), 0), fd, NULL); -- cgit v1.2.3