#include "defs" struct { char chars[ 10 ]; }; crii() /* create names for intermediate files */ { #ifdef unix sprintf(icfile->filename, "eflc.%d", getpid()); sprintf(idfile->filename, "efld.%d", getpid()); sprintf(iefile->filename, "efle.%d", getpid()); #endif #ifdef gcos sprintf(icfile->filename, "code.efl"); sprintf(idfile->filename, "data.efl"); sprintf(iefile->filename, "equv.efl"); #endif } rmiis() { rmii(icfile); rmii(idfile); rmii(iefile); } rmii(p) /* discard the intermediate file */ struct fileblock *p; { #ifdef unix if(p) { fclose(p->fileptr); unlink(p->filename); } #endif #ifdef gcos if(p) fclose(p->fileptr, "d"); #endif } opiis() { opii(icfile); opii(idfile); opii(iefile); } opii(p) /* open the intermediate file for writing */ struct fileblock *p; { #ifdef unix if( (p->fileptr = fopen(p->filename, "w")) == NULL) fatal("cannot open intermediate file"); #endif #ifdef gcos if( (p->fileptr = fopen(p->filename, "wi")) == NULL) fatal("cannot open intermediate file"); #endif } swii(p) struct fileblock *p; { iifilep = p; } putii(w,n) int *w, n; { if( fwrite(w,sizeof(int),n, iifilep->fileptr) != n) fatal("write error"); } getii(w, n) int *w, n; { if( fread(w,sizeof(int), n, iifilep->fileptr) != n) fatal("read error"); } cliis() { clii(icfile); clii(idfile); clii(iefile); } clii(p) /* close the intermediate file */ struct fileblock *p; { #ifdef unix fclose(p->fileptr); #endif #ifdef gcos fclose(p->fileptr, "rl"); #endif } rewii(p) /* close and rewind the intermediate file for reading */ struct fileblock *p; { swii(p); putic(ICEOF,0); clii(p); #ifdef unix if( (p->fileptr = fopen(p->filename, "r")) == NULL) fatal("cannot open intermediate file"); #endif #ifdef gcos if( (p->fileptr = fopen(p->filename, "ri")) == NULL) fatal("cannot open intermediate file"); #endif } putic(c,p) int c; int p; { int w[2]; prevbg = (c==ICINDENT); w[0] = c; w[1] = p; putii(w,2); } getic(p) int *p; { int w[2]; getii(w,2); *p = w[1]; return( w[0] ); } putsii(l, p) int l; char *p; { int word; register int i, m, n; n = strlen(p); putic(l, n); m = (n/sizeof(int)) ; while(m-- > 0) { for(i=0 ; i 0) { for(i=0 ; i