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

📄 ni.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <stdio.h>#include "tdef.h"#include "fns.h"#include "ext.h"char	termtab[NS];	/* term type added in ptinit() */char	fontdir[NS];	/* added in casefp; not used by nroff */char	devname[20];	/* default output device */Numtab numtab[NN] = {	{ PAIR('%', 0) },	{ PAIR('n', 'l') },	{ PAIR('y', 'r') },	{ PAIR('h', 'p') },	{ PAIR('c', 't') },	{ PAIR('d', 'n') },	{ PAIR('m', 'o') },	{ PAIR('d', 'y') },	{ PAIR('d', 'w') },	{ PAIR('l', 'n') },	{ PAIR('d', 'l') },	{ PAIR('s', 't') },	{ PAIR('s', 'b') },	{ PAIR('c', '.') },	{ PAIR('$', '$') },};int	alphabet	= 256;	/* latin-1 */int	pto	= 10000;int	pfrom	= 1;int	print	= 1;char	nextf[NS]	= TMACDIR;char	mfiles[NMF][NS];int	nmfi	= 0;int	oldbits	= -1;int	init	= 1;int	fc	= IMP;	/* field character */int	eschar	= '\\';int	pl;int	po;FILE	*ptid	= stdout;int	dfact	= 1;int	dfactd	= 1;int	res	= 1;int	smnt	= 0;	/* beginning of special fonts */int	ascii	= 0;	/* ascii normally off for troff, on for nroff;  -a turns on */int	lg;int	pnlist[NPN] = { -1 };int	*pnp	= pnlist;int	npn	= 1;int	npnflg	=  1;int	dpn	=  -1;int	totout	=  1;int	ulfont	=  ULFONT;int	tabch	=  TAB;int	ldrch	=  LEADER;Contab contab[NM] = {	C(PAIR('d', 's'), caseds),	C(PAIR('a', 's'), caseas),	C(PAIR('s', 'p'), casesp),	C(PAIR('f', 't'), caseft),	C(PAIR('p', 's'), caseps),	C(PAIR('v', 's'), casevs),	C(PAIR('n', 'r'), casenr),	C(PAIR('i', 'f'), caseif),	C(PAIR('i', 'e'), caseie),	C(PAIR('e', 'l'), caseel),	C(PAIR('p', 'o'), casepo),	C(PAIR('t', 'l'), casetl),	C(PAIR('t', 'm'), casetm),	C(PAIR('f', 'm'), casefm),	C(PAIR('b', 'p'), casebp),	C(PAIR('c', 'h'), casech),	C(PAIR('p', 'n'), casepn),	C(PAIR('b', 'r'), tbreak),	C(PAIR('t', 'i'), caseti),	C(PAIR('n', 'e'), casene),	C(PAIR('n', 'f'), casenf),	C(PAIR('c', 'e'), casece),	C(PAIR('f', 'i'), casefi),	C(PAIR('i', 'n'), casein),	C(PAIR('l', 'l'), casell),	C(PAIR('n', 's'), casens),	C(PAIR('m', 'k'), casemk),	C(PAIR('r', 't'), casert),	C(PAIR('a', 'm'), caseam),	C(PAIR('d', 'e'), casede),	C(PAIR('d', 'i'), casedi),	C(PAIR('d', 'a'), caseda),	C(PAIR('w', 'h'), casewh),	C(PAIR('d', 't'), casedt),	C(PAIR('i', 't'), caseit),	C(PAIR('r', 'm'), caserm),	C(PAIR('r', 'r'), caserr),	C(PAIR('r', 'n'), casern),	C(PAIR('a', 'd'), casead),	C(PAIR('r', 's'), casers),	C(PAIR('n', 'a'), casena),	C(PAIR('p', 'l'), casepl),	C(PAIR('t', 'a'), caseta),	C(PAIR('t', 'r'), casetr),	C(PAIR('u', 'l'), caseul),	C(PAIR('c', 'u'), casecu),	C(PAIR('l', 't'), caselt),	C(PAIR('n', 'x'), casenx),	C(PAIR('s', 'o'), caseso),	C(PAIR('i', 'g'), caseig),	C(PAIR('t', 'c'), casetc),	C(PAIR('f', 'c'), casefc),	C(PAIR('e', 'c'), caseec),	C(PAIR('e', 'o'), caseeo),	C(PAIR('l', 'c'), caselc),	C(PAIR('e', 'v'), caseev),	C(PAIR('r', 'd'), caserd),	C(PAIR('a', 'b'), caseab),	C(PAIR('f', 'l'), casefl),	C(PAIR('e', 'x'), caseex),	C(PAIR('s', 's'), casess),	C(PAIR('f', 'p'), casefp),	C(PAIR('c', 's'), casecs),	C(PAIR('b', 'd'), casebd),	C(PAIR('l', 'g'), caselg),	C(PAIR('h', 'c'), casehc),	C(PAIR('h', 'y'), casehy),	C(PAIR('n', 'h'), casenh),	C(PAIR('n', 'm'), casenm),	C(PAIR('n', 'n'), casenn),	C(PAIR('s', 'v'), casesv),	C(PAIR('o', 's'), caseos),	C(PAIR('l', 's'), casels),	C(PAIR('c', 'c'), casecc),	C(PAIR('c', '2'), casec2),	C(PAIR('e', 'm'), caseem),	C(PAIR('a', 'f'), caseaf),	C(PAIR('h', 'a'), caseha),	C(PAIR('h', 'w'), casehw),	C(PAIR('m', 'c'), casemc),	C(PAIR('p', 'm'), casepm),	C(PAIR('p', 'i'), casepi),	C(PAIR('u', 'f'), caseuf),	C(PAIR('p', 'c'), casepc),	C(PAIR('h', 't'), caseht),	C(PAIR('c', 'f'), casecf),	C(PAIR('s', 'y'), casesy),	C(PAIR('l', 'f'), caself),	C(PAIR('p', 't'), casept),	C(PAIR('g', 'd'), casegd),};Tbuf _oline;/* * troff environment block */Env env[NEV] = { {	/* this sets up env[0] *//* int	ics	 */	0,	/* insertion character space, set by .mc *//* int	sps	 */	0,/* int	spacesz	 */	0,/* int	lss	 */	0,/* int	lss1	 */	0,/* int	ll	 */	0,/* int	ll1	 */	0,/* int	lt	 */	0,/* int	lt1	 */	0,/* Tchar ic	 */	0,	/* insertion character (= margin character) *//* int	icf	 */	0,	/* insertion character flag *//* Tchar chbits	 */	0,	/* size+font bits for current character *//* Tchar spbits	 */	0,/* Tchar nmbits	 */	0,	/* size+font bits for number from .nm *//* int	apts	 */	PS,	/* actual point size -- as requested by user *//* int	apts1	 */	PS,	/* need not match an existent size *//* int	pts	 */	PS,	/* hence, this is the size that really exists *//* int	pts1	 */	PS,/* int	font	 */	FT,/* int	font1	 */	FT,/* int	ls	 */	1,/* int	ls1	 */	1,/* int	ad	 */	1,/* int	nms	 */	1,	/* .nm multiplier *//* int	ndf	 */	1,	/* .nm separator *//* int	nmwid	 */	3,	/* max width of .nm numbers *//* int	fi	 */	1,/* int	cc	 */	'.',/* int	c2	 */	'\'',/* int	ohc	 */	OHC,/* int	tdelim	 */	IMP,/* int	hyf	 */	1,/* int	hyoff	 */	0,/* int	hyphalg  */	HYPHALG,/* int	un1	 */	-1,/* int	tabc	 */	0,/* int	dotc	 */	'.',/* int	adsp	 */	0,	/* add this much space to each padding point *//* int	adrem	 */	0,	/* excess space to add until it runs out *//* int	lastl	 */	0,	/* last text on current output line *//* int	nel	 */	0,	/* how much space left on current output line *//* int	admod	 */	0,	/* adjust mode *//* Tchar *wordp	 */	0,/* int	spflg	 */	0,	/* probably to indicate space after punctuation needed *//* Tchar *linep	 */	0,/* Tchar *wdend	 */	0,/* Tchar *wdstart */	0,/* int	wne	 */	0,/* int	ne	 */	0,	/* how much space taken on current output line *//* int	nc	 */	0,	/* #characters (incl blank) on output line *//* int	nb	 */	0,/* int	lnmod	 */	0,	/* line number mode, set by .nm *//* int	nwd	 */	0,	/* number of words on current output line *//* int	nn	 */	0,	/* from .nn command *//* int	ni	 */	0,	/* indent of .nm numbers, probably *//* int	ul	 */	0,/* int	cu	 */	0,/* int	ce	 */	0,/* int	in	 */	0,	/* indent and previous value *//* int	in1	 */	0,/* int	un	 */	0,	/* unindent of left margin in some way *//* int	wch	 */	0,/* int	pendt	 */	0,/* Tchar *pendw	 */	(Tchar *)0,/* int	pendnf	 */	0,/* int	spread	 */	0,/* int	it	 */	0,	/* input trap count *//* int	itmac	 */	0,} };Env	*envp	= env;	/* start off in env 0 */Numerr	numerr;Stack	*frame, *stk, *ejl;Stack	*nxf;int	pipeflg;int	hflg;	/* used in nroff only */int	eqflg;	/* used in nroff only */int	xpts;int	ppts;int	pfont;int	mpts;int	mfont;int	cs;int	ccs;int	bd;int	stdi;int	quiet;int	stop;char	ibuf[IBUFSZ];char	xbuf[IBUFSZ];char	*ibufp;char	*xbufp;char	*eibuf;char	*xeibuf;Tchar	pbbuf[NC];		/* pushback buffer for arguments, \n, etc. */Tchar	*pbp = pbbuf;		/* next free slot in pbbuf */Tchar	*lastpbp = pbbuf;	/* pbp in previous stack frame */int	nx;int	mflg;Tchar	ch = 0;int	ibf;int	ifi;int	iflg;int	rargc;char	**argp;Ushort	trtab[NTRTAB];int	lgf;int	copyf;Offset	ip;int	nlflg;int	donef;int	nflush;int	nfo;int	padc;int	raw;int	flss;int	nonumb;int	trap;int	tflg;int	ejf;int	dilev;Offset	offset;int	em;int	ds;Offset	woff;int	app;int	ndone;int	lead;int	ralss;Offset	nextb;Tchar	nrbits;int	nform;int	oldmn;int	newmn;int	macerr;Offset	apptr;int	diflg;int	evi;int	vflag;int	noscale;int	po1;int	nlist[NTRAP];int	mlist[NTRAP];int	evlist[EVLSZ];int	ev;int	tty;int	sfont	= FT;	/* appears to be "standard" font; used by .ul */int	sv;int	esc;int	widthp;int	xfont;int	setwdf;int	over;int	nhyp;Tchar	**hyp;Tchar	*olinep;int	dotT;char	*unlkp;Wcache	widcache[NWIDCACHE];Diver	d[NDI];Diver	*dip;int	c_hyphen;int	c_emdash;int	c_rule;int	c_minus;int	c_fi;int	c_fl;int	c_ff;int	c_ffi;int	c_ffl;int	c_acute;int	c_grave;int	c_under;int	c_rooten;int	c_boxrule;int	c_lefthand;int	c_dagger;int	c_isalnum;Spnames	spnames[] ={	&c_hyphen,	"hy",	&c_emdash,	"em",	&c_rule,	"ru",	&c_minus,	"\\-",	&c_fi,		"fi",	&c_fl,		"fl",	&c_ff,		"ff",	&c_ffi,		"Fi",	&c_ffl,		"Fl",	&c_acute,	"aa",	&c_grave,	"ga",	&c_under,	"ul",	&c_rooten,	"rn",	&c_boxrule,	"br",	&c_lefthand,	"lh",	&c_dagger,	"dg",	/* not in nroff?? */	&c_isalnum,	"__",	0, 0};Tchar	(*hmot)(void);Tchar	(*makem)(int i);Tchar	(*setabs)(void);Tchar	(*setch)(int c);Tchar	(*sethl)(int k);Tchar	(*setht)(void);Tchar	(*setslant)(void);Tchar	(*vmot)(void);Tchar	(*xlss)(void);int	(*findft)(int i);int	(*width)(Tchar j);void	(*mchbits)(void);void	(*ptlead)(void);void	(*ptout)(Tchar i);void	(*ptpause)(void);void	(*setfont)(int a);void	(*setps)(void);void	(*setwd)(void);

⌨️ 快捷键说明

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