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

📄 1.form.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include <stdio.h>#include "1.defs.h"#include "def.h"extern int linechar, errflag, debug;extern int (*input)(), (*unput)();uptolow(c)		/*translates upper to lower case */int c;	{	if ('A' <= c && c <= 'Z')		return(c+'a'-'A');	else		return(c);	}rdfree(func)int (*func)();	{	int c;	while ( (c = (*input)()) != '\n')		{		(*func)(c);		}	}rdstand(func)int (*func)();	{	int c;	while ( (c=(*input)()) != '\n')		{		(*func)(c);		}	}labfree(func)			/* labels in freeform input */int (*func)();	{	int c;	int temp[6];	int j;	for (j = 0; j < 5; ++j)		{		while ( (c = (*input)()) == ' ' || c == '\t' );		if (c == '\n')			{			if (j != 0)				{				temp[j] = '\0';				error("label without code - ignored:","","");				}			}		if (c < '0' || c > '9')			{			(*unput)(c);			break;			}		else			{			temp[j] = c;			(*func)(c);			}		}	for ( ; j < 5; ++j)		(*func)(' ');	}labstand(func)			/* labels in standard form input */int (*func)();	{	int c;	int j;	for (j = 0; j < 5; ++j)		{		c = (*input)();		if (c == '\n')			{			error("line shorter than 5 characters","","");			errflag = 1;			(*unput)('\n');			}		if (c == '\t' || c == '\n')			{			for ( ;j<5; ++j)				(*func)(' ');			return;			}		(*func)(c);		}	(*input)();			/* throw away continuation char */	}contfree()			/* identify continuation lines in free-form input */	{	return(nonblchar(_diglet,0));	/* any non-alpha non-digit */	}nonblchar(class,yesno)int class,yesno;	{#define CARDSIZE	121	int temp[CARDSIZE];	int j;	for (j=0; (temp[j]=(*input)()) == ' ' || temp[j] == '\t'; ++j)		if (j>=CARDSIZE-1)			{			temp[CARDSIZE-1] = '\0';			 error ("line unexpectedly long","","");			break;			}	if (temp[j]!=EOF && classmatch(temp[j],class)==yesno)		return(1);	else		{		for ( ; j >= 0; --j)			(*unput)(temp[j]);		return(0);		}	}contstand()			/* continuation lines in standard form input */	{	int temp[6];	int i;	for (i = 0; i < 6; ++i)		{		temp[i] = (*input)();		if (temp[i] == '\t' || temp[i] == '\n' || temp[i] == '\0' || temp[i] == EOF)			{			for ( ;i >= 0; --i)				(*unput)(temp[i]);			return(0);			}		}	if (temp[5] != '0' && temp[5] != ' ')		return(1);	else		{		for ( i = 5 ; i >= 0; --i)			(*unput)(temp[i]);		return(0);		}	}comstand(posafter)			/* standard form comments */int posafter;	{	int c;	c = (*input)();	if (!posafter)		(*unput)(c);	if (c == 'c' || c == '*' || c== '#')		return(1);	else		return(0);	}comfree(posafter)int posafter;	{	return(comstand(posafter));	}int (*rline[])()		= {rdfree,rdstand};int (*comment[])()		= {comfree,comstand};int (*getlabel[])()		= {labfree, labstand};int (*chkcont[])()		= {contfree,contstand};blankline()	{	if ( nonblchar(_nl,1) )		/* first non-blank is nl */		{		(*unput) ('\n');		return(1);		}	else return(0);	}#define maxunbp	80char unbuf[maxunbp+1];int unbp;empseek(linebeg)unsigned int linebeg;	{	unbp = 0;	if (fseek(infd,(long)(linebeg+rtnbeg),0) == -1)		faterr("in disk seek","","");	}inchar()	{	if (unbp > 0)		return( unbuf[--unbp] );	else		{		return( uptolow(getc(infd)) );		}	}unchar(c)int c;	{	if (unbp >= maxunbp)		faterr("dec.rat: unbuf size exceeded","","");	if(c!=EOF)unbuf[unbp++] = c;	}

⌨️ 快捷键说明

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