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

📄 t7.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* t7.c: control to write table entries */# include "t.h"# define realsplit ((ct=='a'||ct=='n') && table[ldata][c].rcol)voidrunout(void){	int	i;	if (boxflg || allflg || dboxflg) 		need();	if (ctrflg) {		Bprint(&tabout, ".nr #I \\n(.i\n");		Bprint(&tabout, ".in +(\\n(.lu-\\n(TWu-\\n(.iu)/2u\n");	}	Bprint(&tabout, ".fc %c %c\n", F1, F2);	Bprint(&tabout, ".nr #T 0-1\n");	deftail();	for (i = 0; i < nlin; i++)		putline(i, i);	if (leftover)		yetmore();	Bprint(&tabout, ".fc\n");	Bprint(&tabout, ".nr T. 1\n");	Bprint(&tabout, ".T# 1\n");	if (ctrflg)		Bprint(&tabout, ".in \\n(#Iu\n");}voidruntabs(int lform, int ldata){	int	c, ct, vforml, lf;	Bprint(&tabout, ".ta ");	for (c = 0; c < ncol; c++) {		vforml = lform;		for (lf = prev(lform); lf >= 0 && vspen(table[lf][c].col); lf = prev(lf))			vforml = lf;		if (fspan(vforml, c))			continue;		switch (ct = ctype(vforml, c)) {		case 'n':		case 'a':			if (table[ldata][c].rcol)				if (lused[c]) /*Zero field width*/					Bprint(&tabout, "\\n(%2su ", reg(c, CMID));		case 'c':		case 'l':		case 'r':			if (realsplit ? rused[c] : (used[c] + lused[c]))				Bprint(&tabout, "\\n(%2su ", reg(c, CRIGHT));			continue;		case 's':			if (lspan(lform, c))				Bprint(&tabout, "\\n(%2su ", reg(c, CRIGHT));			continue;		}	}	Bprint(&tabout, "\n");}intifline(char *s){	if (!point(s)) 		return(0);	if (s[0] == '\\') 		s++;	if (s[1] ) 		return(0);	if (s[0] == '_') 		return('-');	if (s[0] == '=') 		return('=');	return(0);}voidneed(void){	int	texlin, horlin, i;	for (texlin = horlin = i = 0; i < nlin; i++) {		if (fullbot[i] != 0)			horlin++;		else if (instead[i] != 0)			continue;		else			texlin++;	}	Bprint(&tabout, ".ne %dv+%dp\n", texlin, 2 * horlin);}voiddeftail(void){	int	i, c, lf, lwid;	for (i = 0; i < MAXHEAD; i++)		if (linestop[i])			Bprint(&tabout, ".nr #%c 0-1\n", linestop[i] + 'a' - 1);	Bprint(&tabout, ".nr #a 0-1\n");	Bprint(&tabout, ".eo\n");	Bprint(&tabout, ".de T#\n");	Bprint(&tabout, ".nr 35 1m\n");	Bprint(&tabout, ".ds #d .d\n");	Bprint(&tabout, ".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n");	Bprint(&tabout, ".mk ##\n");	Bprint(&tabout, ".nr ## -1v\n");	Bprint(&tabout, ".ls 1\n");	for (i = 0; i < MAXHEAD; i++)		if (linestop[i])			Bprint(&tabout, ".if \\n(#T>=0 .nr #%c \\n(#T\n",			     linestop[i] + 'a' - 1);	if (boxflg || allflg || dboxflg) /* bottom of table line */		if (fullbot[nlin-1] == 0) {			if (!pr1403)				Bprint(&tabout, ".if \\n(T. .vs \\n(.vu-\\n(.sp\n");			Bprint(&tabout, ".if \\n(T. ");			drawline(nlin, 0, ncol, dboxflg ? '=' : '-', 1, 0);			Bprint(&tabout, "\n.if \\n(T. .vs\n");			/* T. is really an argument to a macro but because of 		   eqn we don't dare pass it as an argument and reference by $1 */		}	for (c = 0; c < ncol; c++) {		if ((lf = left(nlin - 1, c, &lwid)) >= 0) {			Bprint(&tabout, ".if \\n(#%c>=0 .sp -1\n", linestop[lf] + 'a' - 1);			Bprint(&tabout, ".if \\n(#%c>=0 ", linestop[lf] + 'a' - 1);			tohcol(c);			drawvert(lf, nlin - 1, c, lwid);			Bprint(&tabout, "\\h'|\\n(TWu'\n");		}	}	if (boxflg || allflg || dboxflg) /* right hand line */ {		Bprint(&tabout, ".if \\n(#a>=0 .sp -1\n");		Bprint(&tabout, ".if \\n(#a>=0 \\h'|\\n(TWu'");		drawvert (0, nlin - 1, ncol, dboxflg ? 2 : 1);		Bprint(&tabout, "\n");	}	Bprint(&tabout, ".ls\n");	Bprint(&tabout, "..\n");	Bprint(&tabout, ".ec\n");}

⌨️ 快捷键说明

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