Print this page
cpp: just use fwrite() for writing

*** 205,218 **** static char *macnam; /* name of macro requiring actuals */ static int maclvl; /* # calls since last decrease in nesting level */ static char *macforw; /* ptr which must be exceeded to decrease nesting lvl */ static int macdam; /* offset to macforw due to buffer shifting */ - #if tgp - int tgpscan; /* flag for dump(); */ - #endif - static int inctop[MAXINC]; static char *fnames[MAXINC]; static char *dirnams[MAXINC]; /* actual directory of #include files */ static int fins[MAXINC]; static int lineno[MAXINC]; --- 205,214 ----
*** 364,411 **** * are available for use. */ static void dump() { - /* - * write part of buffer which lies between outp and inp . - * this should be a direct call to 'write', but the system slows to a crawl - * if it has to do an unaligned copy. thus we buffer. this silly loop - * is 15% of the total time, thus even the 'putc' macro is too slow. - */ register char *p1; - #if tgp - register char *p2; - #endif - register FILE *f; if ((p1=outp)==inp || flslvl!=0) return; ! #if tgp ! #define MAXOUT 80 ! if (!tgpscan) { ! /* scan again to insure <= MAXOUT chars between linefeeds */ ! register char c,*pblank; char savc,stopc,brk; ! tgpscan=1; brk=stopc=pblank=0; p2=inp; savc= *p2; *p2='\0'; ! while (c= *p1++) { ! if (c=='\\') c= *p1++; ! if (stopc==c) stopc=0; ! else if (c=='"' || c=='\'') stopc=c; ! if (p1-outp>MAXOUT && pblank!=0) { ! *pblank++='\n'; ! inp=pblank; ! dump(); ! brk=1; ! pblank=0; ! } ! if (c==' ' && stopc==0) pblank=p1-1; ! } ! if (brk) sayline(NOINCLUDE); ! *p2=savc; inp=p2; p1=outp; tgpscan=0; ! } ! #endif ! f=fout; ! while (p1<inp) ! putc(*p1++,f); outp=p1; } static char * refill(p) register char *p; { --- 360,372 ---- * are available for use. */ static void dump() { register char *p1; if ((p1=outp)==inp || flslvl!=0) return; ! fwrite(p1, inp - p1, 1, fout); outp=p1; } static char * refill(p) register char *p; {
*** 1009,1026 **** } else if (np==udfloc) {/* undefine */ if (flslvl==0) { ++flslvl; p=skipbl(p); slookup(inp,p,DROP); --flslvl; } } else if (np==ifloc) {/* if */ - #if tgp - pperror(" IF not implemented, true assumed", 0); - if (flslvl==0) ++trulvl; else ++flslvl; - #else newp=p; if (flslvl==0 && yyparse()) ++trulvl; else ++flslvl; p=newp; - #endif } else if (np == idtloc) { /* ident */ if (pflag == 0) while (*inp != '\n') /* pass text */ p = cotoken(p); } else if (np == pragmaloc) { /* pragma */ --- 970,982 ----