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

📄 termcap.form

📁 操作系统SunOS 4.1.3版本的源码
💻 FORM
字号:
#ifndef lintstatic	char sccsid[] = "@(#)termcap.form 1.1 92/07/30 SMI"; /* from S5R3 1.3 */#endif/* * Simulation of termcap using terminfo. */#include "curses.ext"/* * These are declared so people won't get undefineds if they use * old documentation.  We don't do anything with them. */char *UP;char *BC;char PC;short ospeed;/* ARGSUSED */inttgetent(bp, name)char *bp, *name;{	int rv;	if (setupterm(name, 1, &rv) >= 0)		/* Leave things as they were (for compatibility) */		reset_shell_mode();	return rv;}/* Make a 2 letter code into an integer we can switch on easily */#define two(s1, s2) (s1 + 256*s2)#define twostr(str) two(*str, str[1])staticchar *stripdelays(inbuf, outbuf, size)register char *inbuf, *outbuf;register int size;{	char *saveoutbuf = outbuf;		if (inbuf == NULL)		return 0;	else		while (size && *inbuf)			if (*inbuf == '$' && *(inbuf+1) == '<')				while (*inbuf && *inbuf++ != '>')					;			else {				size--;				*outbuf++ = *inbuf++;			}	return saveoutbuf;}inttgetflag(id)char *id;{	register int rv;	register char *p;	char stripped[16];	switch (twostr(id)) {	BOOLS	/* Special cases that do not have exact terminfo equivalents */	case two('b','s'):		/* bs: true if ^H moves the cursor left */		p = stripdelays(cursor_left, stripped, 16);		rv = p && *p==8 && p[1] == 0;		break;	case two('p','t'):		/* pt: true if terminal has ^I tabs every 8 spaces */		p = stripdelays(tab, stripped, 16);		rv = p && *p==9 && p[1] == 0;		break;	case two('n','c'):		/* cr: true if ^M doesn't return the cursor */		p = stripdelays(carriage_return, stripped, 16);		rv = ! (p && *p==13 && p[1] == 0);		break;	case two('n','s'):		/* ns: true if no way to scroll the terminal */		rv = scroll_forward == NULL;		break;	default: rv = 0;	}	return rv;}inttgetnum(id)char *id;{	int rv;	switch (twostr(id)) {	NUMS	default: rv = -1;	}	return rv;}/* * Return the string capability for capability "id".  We also copy * it into *area for upward compatibility with a few programs that * actually expect it to be copied, at a slight cost in speed. */char *tgetstr(id, area)char *id, **area;{	register char *rv, *p, *p2;	register int two_id = twostr(id);	char stripped[16], morestripped[16];	switch (two_id) {	STRS		case two('b','c'):			/* bc: char the moves cursor left */			p = stripdelays(cursor_left, stripped, 16);			if (p && strcmp(p, "\b") == 0)				rv = NULL;			else				rv = cursor_left;			break;		case two('n','l'):			/* nl: string that does both index and cursor_down */			p = stripdelays(cursor_down, stripped, 16);			p2 = stripdelays(scroll_forward, morestripped, 16);			if (p && p2 && strcmp(p, p2) == 0)				rv = cursor_down;			else				rv = NULL;			break;		}	if (rv && area && *area) {		extern char *strcpy();		strcpy(*area, rv);		*area += strlen(rv) + 1;	}	return rv;}

⌨️ 快捷键说明

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