FILE * fincludegets(char *buf, int size, FILE *fp) { char name[MAXPATHLEN]; FILE *nfp=NULL; char *p; int ch; if (fp == NULL) return(NULL); if (fgets(buf, size, fp) == NULL) { *buf = '\0'; fclose(fp); fp = popfp(); return (fp); } if ((p = strchr(buf, '\n')) != NULL) *p = '\0'; else { /* Flush this line */ while ((ch = fgetc(fp)) != '\n' && ch != EOF); if (ch == EOF) { *buf = '\0'; fclose(fp); fp = popfp(); return(fp); } } switch (tokenscpp(buf, name)) { case T_INCLUDE: *buf = '\0'; if ((nfp = fopen(name, "r")) != NULL) { pushfp(fp); fp = nfp; } break; case T_DEFINE: addsym(name); break; case T_IFNDEF: if (findsym(name)) { fclose(fp); fp = popfp(); *buf = '\0'; } break; case T_ENDIF: *buf = '\0'; break; default: break; } return (fp); }
static void fincstp(Ureg*, int, void*, Internal*, Internal*) { popfp(); }