⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icfile.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#include "defs"struct { char chars[ 10 ]; };crii()	/* create names for intermediate files */{#ifdef unixsprintf(icfile->filename, "eflc.%d", getpid());sprintf(idfile->filename, "efld.%d", getpid());sprintf(iefile->filename, "efle.%d", getpid());#endif#ifdef gcossprintf(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 unixif(p)	{	fclose(p->fileptr);	unlink(p->filename);	}#endif#ifdef gcosif(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 unixif( (p->fileptr = fopen(p->filename, "w")) == NULL)	fatal("cannot open intermediate file");#endif#ifdef gcosif( (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 unixfclose(p->fileptr);#endif#ifdef gcosfclose(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 unixif( (p->fileptr = fopen(p->filename, "r")) == NULL)	fatal("cannot open intermediate file");#endif#ifdef gcosif( (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<sizeof(int); ++i)		word.chars[i] = *p++;	putii(&word, 1);	}n -= (n/sizeof(int))*sizeof(int);if(n > 0)	{	for(i=0 ; i<n ; ++i)		word.chars[i] = *p++;	putii(&word,1);	}}ptr getsii(n)int n;{static int incomm[100];int m;register int *q, *qm;char *p;m = (n + sizeof(int)-1 ) / sizeof(int);q = incomm;qm = q + m;while(q < qm)	getii(q++, 1);p = incomm;p[n] = '\0';return(incomm);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -