亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xxtermcap.c

?? minix操作系統最新版本(3.1.1)的源代碼
?? C
字號:
/* *	termcap.c	1.1	20/7/87		agc	Joypace Ltd * *	Copyright Joypace Ltd, London, UK, 1987. All rights reserved. *	This file may be freely distributed provided that this notice *	remains attached. * *	A public domain implementation of the termcap(3) routines. * *	Made fully functional by Ceriel J.H. Jacobs. * * BUGS: *	- does not check termcap entry sizes *	- not fully tested */#define CAPABLEN	2#define ISSPACE(c)	((c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n')#define ISDIGIT(x)	((x) >= '0' && (x) <= '9')short	ospeed = 0;		/* output speed */char	PC = 0;			/* padding character */char	*BC = 0;		/* back cursor movement */char	*UP = 0;		/* up cursor movement */static char	*capab = 0;		/* the capability itself */static int	check_for_tc();static int	match_name();#define NULL	0/* Some things from C-library, needed here because the C-library is not   loaded with Modula-2 programs*/static char *strcat(s1, s2)register char *s1, *s2;{  /* Append s2 to the end of s1. */  char *original = s1;  /* Find the end of s1. */  while (*s1 != 0) s1++;  /* Now copy s2 to the end of s1. */  while (*s1++ = *s2++) /* nothing */ ;  return(original);}static char *strcpy(s1, s2)register char *s1, *s2;{/* Copy s2 to s1. */  char *original = s1;  while (*s1++ = *s2++) /* nothing */;  return(original);}static intstrlen(s)char *s;{/* Return length of s. */  char *original = s;  while (*s != 0) s++;  return(s - original);}static intstrcmp(s1, s2)register char *s1, *s2;{/* Compare 2 strings. */  for(;;) {	if (*s1 != *s2) {		if (!*s1) return -1;		if (!*s2) return 1;		return(*s1 - *s2);	}	if (*s1++ == 0) return(0);	s2++;  }}static intstrncmp(s1, s2, n)	register char *s1, *s2;	int n;{/* Compare two strings, but at most n characters. */  while (n-- > 0) {	if (*s1 != *s2) {		if (!*s1) return -1;		if (!*s2) return 1;		return(*s1 - *s2);	}	if (*s1++ == 0) break;	s2++;  }  return 0;}static char *getenv(name)register char *name;{  extern char ***_penviron;  register char **v = *_penviron, *p, *q;  if (v == 0 || name == 0) return 0;  while ((p = *v++) != 0) {	q = name;	while (*q && *q++ == *p++) /* nothing */ ;	if (*q || *p != '=') continue;	return(p+1);  }  return(0);}static char *fgets(buf, count, fd)	char *buf;{	static char bf[1024];	static int cnt = 0;	static char *pbf = &bf[0];	register char *c = buf;	while (--count) {		if (pbf >= &bf[cnt]) {			if ((cnt = read(fd, bf, 1024)) <= 0) {				if (c == buf) return (char *) NULL;				*c = 0;				return buf;			}			pbf = &bf[0];		}		*c = *pbf++;		if (*c++ == '\n') {			*c = 0;			return buf;		}	}	*c = 0;	return buf;}/* *	tgetent - get the termcap entry for terminal name, and put it *	in bp (which must be an array of 1024 chars). Returns 1 if *	termcap entry found, 0 if not found, and -1 if file not found. */inttgetent(bp, name)char	*bp;char	*name;{	int	fp;	char	*file;	char	*cp;	short	len = strlen(name);	char	buf[1024];	capab = bp;	if ((file = getenv("TERMCAP")) != (char *) NULL) {		if (*file != '/' &&		    (cp = getenv("TERM")) != NULL && strcmp(name, cp) == 0) {			(void) strcpy(bp, file);			return(1);		}		else file = "/etc/termcap";	} else		file = "/etc/termcap";	if ((fp = open(file, 0)) < 0) {		capab = 0;		return(-1); 	}	while (fgets(buf, 1024, fp) != NULL) {		if (buf[0] == '#') continue;		while (*(cp = &buf[strlen(buf) - 2]) == '\\')			if (fgets(cp, 1024, fp) == NULL)				return (0);		if (match_name(buf, name)) {			strcpy(bp, buf);			close(fp);			if(check_for_tc() == 0) {				capab = 0;				return 0;			}			return 1;		}	}	capab = 0;	close(fp);	return(0);}/* *	Compare the terminal name with each termcap entry name; Return 1 if a *	match is found. */static intmatch_name(buf, name)	char	*buf;	char	*name;{	register char	*tp = buf;	register char	*np;	for (;;) {		for (np = name; *np && *tp == *np; np++, tp++) { }		if (*np == 0 && (*tp == '|' || *tp == ':' || *tp == 0))			return(1);		while (*tp != 0 && *tp != '|' && *tp != ':') tp++;		if (*tp++ != '|') return (0);	}}/* *	Handle tc= definitions recursively. */static intcheck_for_tc(){	static int	count = 0;	char		*savcapab = capab;	char		buf[1024];	char		terminalname[128];	register char	*p = capab + strlen(capab) - 2, *q;	while (*p != ':')		if (--p < capab)			return(0);	/* no : in termcap entry */	if (p[1] != 't' || p[2] != 'c')		return(1);	if (count > 16) {		return(0);	/* recursion in tc= definitions */	}	count++;	strcpy(terminalname, &p[4]);	q = terminalname;	while (*q && *q != ':') q++;	*q = 0;	if (tgetent(buf, terminalname) != 1) {		--count;		return(0);	}	--count;	for (q = buf; *q && *q != ':'; q++) { }	strcpy(p, q);	capab = savcapab;	return(1);}/* *	tgetnum - get the numeric terminal capability corresponding *	to id. Returns the value, -1 if invalid. */inttgetnum(id)char	*id;{	char	*cp;	int	ret;	if ((cp = capab) == NULL || id == NULL || *cp == 0)		return(-1);	while (*++cp && *cp != ':')		;	while (*cp) {		cp++;		while (ISSPACE(*cp))			cp++;		if (strncmp(cp, id, CAPABLEN) == 0) {			while (*cp && *cp != ':' && *cp != '#')				cp++;			if (*cp != '#')				return(-1);			for (ret = 0, cp++ ; *cp && ISDIGIT(*cp) ; cp++)				ret = ret * 10 + *cp - '0';			return(ret);		}		while (*cp && *cp != ':')			cp++;	}	return(-1);}/* *	tgetflag - get the boolean flag corresponding to id. Returns -1 *	if invalid, 0 if the flag is not in termcap entry, or 1 if it is *	present. */inttgetflag(id)char	*id;{	char	*cp;	if ((cp = capab) == NULL || id == NULL || *cp == 0)		return(-1);	while (*++cp && *cp != ':')		;	while (*cp) {		cp++;		while (ISSPACE(*cp))			cp++;		if (strncmp(cp, id, CAPABLEN) == 0)			return(1);		while (*cp && *cp != ':')			cp++;	}	return(0);}/* *	tgetstr - get the string capability corresponding to id and place *	it in area (advancing area at same time). Expand escape sequences *	etc. Returns the string, or NULL if it can't do it. */char *tgetstr(id, area)char	*id;char	**area;{	char	*cp;	char	*ret;	int	i;	if ((cp = capab) == NULL || id == NULL || *cp == 0)		return(NULL);	while (*++cp != ':')		;	while (*cp) {		cp++;		while (ISSPACE(*cp))			cp++;		if (strncmp(cp, id, CAPABLEN) == 0) {			while (*cp && *cp != ':' && *cp != '=')				cp++;			if (*cp != '=')				return(NULL);			for (ret = *area, cp++; *cp && *cp != ':' ; (*area)++, cp++)				switch(*cp) {				case '^' :					**area = *++cp - 'A' + 1;					break;				case '\\' :					switch(*++cp) {					case 'E' :						**area = '\033';						break;					case 'n' :						**area = '\n';						break;					case 'r' :						**area = '\r';						break;					case 't' :						**area = '\t';						break;					case 'b' :						**area = '\b';						break;					case 'f' :						**area = '\f';						break;					case '0' :					case '1' :					case '2' :					case '3' :						for (i=0 ; *cp && ISDIGIT(*cp) ; cp++)							i = i * 8 + *cp - '0';						**area = i;						cp--;						break;					case '^' :					case '\\' :						**area = *cp;						break;					}					break;				default :					**area = *cp;				}			*(*area)++ = '\0';			return(ret);		}		while (*cp && *cp != ':')			cp++;	}	return(NULL);}/* *	tgoto - given the cursor motion string cm, make up the string *	for the cursor to go to (destcol, destline), and return the string. *	Returns "OOPS" if something's gone wrong, or the string otherwise. */char *tgoto(cm, destcol, destline)char	*cm;int	destcol;int	destline;{	register char	*rp;	static char	ret[32];	char		added[16];	int		*dp = &destline;	int 		numval;	int		swapped = 0;	added[0] = 0;	for (rp = ret ; *cm ; cm++) {		if (*cm == '%') {			switch(*++cm) {			case '>' :				if (dp == NULL)					return("OOPS");				cm++;				if (*dp > *cm++) {					*dp += *cm;				}				break;			case '+' :			case '.' :				if (dp == NULL)					return("OOPS");				if (*cm == '+') *dp = *dp + *++cm;				for (;;) {				    switch(*dp) {				    case 0:				    case 04:				    case '\t':				    case '\n':					/* filter these out */					if (dp == &destcol || swapped || UP) {						strcat(added, dp == &destcol || swapped ?							(BC ? BC : "\b") :							UP);						(*dp)++;						continue;					}				    }				    break;				}				*rp++ = *dp;				dp = (dp == &destline) ? &destcol : NULL;				break;			case 'r' : {				int tmp = destline;				destline = destcol;				destcol = tmp;				swapped = 1 - swapped;				break;			}			case 'n' :				destcol ^= 0140;				destline ^= 0140;				break;			case '%' :				*rp++ = '%';				break;			case 'i' :				destcol++;				destline++;				break;			case 'B' :				if (dp == NULL)					return("OOPS");				*dp = 16 * (*dp / 10) + *dp % 10;				break;			case 'D' :				if (dp == NULL)					return("OOPS");				*dp = *dp - 2 * (*dp % 16);				break;			case 'd' :			case '2' :			case '3' :				if (dp == NULL)					return("OOPS");				numval = *dp;				dp = (dp == &destline) ? &destcol : NULL;				if (numval >= 100) {					*rp++ = '0' + numval / 100;				}				else if (*cm == '3') {					*rp++ = ' ';				}				if (numval >= 10) {					*rp++ = '0' + ((numval%100)/10);				}				else if (*cm == '3' || *cm == '2') {					*rp++ = ' ';				}				*rp++ = '0' + (numval%10);				break;			default :				return("OOPS");			}		}		else *rp++ = *cm;	}	*rp = '\0';	strcpy(rp, added);	return(ret);}static int tens_of_ms_p_char[] = {	/* index as returned by gtty */					/* assume 10 bits per char */	0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5, 2};/* *	tputs - put the string cp out onto the terminal, using the function *	outc. Also handle padding. */inttputs(cp, affcnt, outc)register char	*cp;int		affcnt;int		(*outc)();{	int delay = 0;	if (cp == NULL)		return(1);	while (ISDIGIT(*cp)) {		delay = delay * 10 + (*cp++ - '0');	}	delay *= 10;	if (*cp == '.') {		cp++;		if (ISDIGIT(*cp)) {			delay += *cp++ - '0';		}		while (ISDIGIT(*cp)) cp++;	}	if (*cp == '*') {		delay *= affcnt;		cp++;	}	while (*cp)		(*outc)(*cp++);	if (delay != 0 &&	    ospeed > 0 &&	    ospeed < (sizeof tens_of_ms_p_char / sizeof tens_of_ms_p_char[0])) {		delay = (delay + tens_of_ms_p_char[ospeed] - 1) / 				  tens_of_ms_p_char[ospeed];		while (delay--) (*outc)(PC);	}	return(1);}/* *	That's all, folks... */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91美女片黄在线观看91美女| 欧美精品欧美精品系列| 91麻豆国产福利在线观看| 欧美日韩日日摸| 国产香蕉久久精品综合网| 亚洲免费av在线| 国产一区高清在线| 欧美日韩mp4| 中文字幕在线一区| 精品在线你懂的| 欧美视频一二三区| 国产精品久久久久四虎| 免费观看久久久4p| 在线观看一区不卡| 国产精品久久久久aaaa| 精品一区二区成人精品| 欧美日韩一区二区三区在线| 一区在线观看视频| 国产精品 日产精品 欧美精品| 欧美性猛交xxxxxxxx| 亚洲欧洲日本在线| 成人涩涩免费视频| 久久众筹精品私拍模特| 蜜桃在线一区二区三区| 欧美三日本三级三级在线播放| 亚洲欧洲成人自拍| 成人app软件下载大全免费| 2020日本不卡一区二区视频| 五月婷婷激情综合| 欧美日韩精品一区二区三区| 亚洲精品高清视频在线观看| 懂色av一区二区三区免费看| 日韩美女视频在线| 久热成人在线视频| 欧美va亚洲va| 狠狠色丁香婷婷综合| 精品国产一区二区三区久久影院| 日本人妖一区二区| 欧美一二三四在线| 麻豆91在线看| 精品第一国产综合精品aⅴ| 国产风韵犹存在线视精品| 日韩欧美国产一二三区| 久久99精品久久久久久国产越南| 日韩午夜精品视频| 激情文学综合丁香| 国产午夜精品一区二区三区嫩草| 国产精品18久久久久| 国产日韩欧美亚洲| 95精品视频在线| 一区二区三区视频在线看| 欧美视频精品在线| 精品一区二区在线视频| 日本一区二区三区dvd视频在线| 成人午夜免费电影| 亚洲精品美国一| 91精品婷婷国产综合久久性色| 男人的j进女人的j一区| 久久蜜桃av一区精品变态类天堂| 成人一区二区三区在线观看 | 久久综合狠狠综合久久综合88 | 日韩精品专区在线| 国产激情偷乱视频一区二区三区| 国产精品视频观看| 欧美日韩国产乱码电影| 国产乱人伦偷精品视频免下载| 国产精品污网站| 欧美日韩高清一区二区不卡| 久久国产乱子精品免费女| 国产精品网站在线| 欧美午夜精品免费| 麻豆视频一区二区| 亚洲天堂av一区| 日韩欧美电影在线| 91丨九色丨蝌蚪富婆spa| 日韩av电影一区| 国产精品国产精品国产专区不片| 欧美制服丝袜第一页| 国产精品一区二区91| 亚洲国产综合视频在线观看| 久久众筹精品私拍模特| 欧美视频自拍偷拍| 成人精品一区二区三区四区| 青青草国产成人av片免费| 中文字幕一区二区三区四区| 欧美一区二区三区成人| 91在线云播放| 国产精品亚洲视频| 天天射综合影视| 亚洲品质自拍视频| 精品av综合导航| 欧美日韩高清在线播放| 99久久国产综合精品麻豆| 久久99久国产精品黄毛片色诱| 亚洲欧美日韩在线播放| 久久综合色婷婷| 91精品国产日韩91久久久久久| 99精品久久只有精品| 国产成人鲁色资源国产91色综 | 久久精品一区蜜桃臀影院| 欧美日韩一区中文字幕| 99re这里只有精品首页| 国产乱人伦精品一区二区在线观看| 亚洲成人动漫精品| 亚洲精品视频观看| 中文无字幕一区二区三区| 精品国产91洋老外米糕| 欧美一卡在线观看| 91精品国产综合久久久久久久久久 | 久久久亚洲国产美女国产盗摄| 欧美日韩高清在线| 欧美精品1区2区3区| 在线观看免费亚洲| 日本道精品一区二区三区| 成人黄色免费短视频| 国产超碰在线一区| 成人一级片网址| 豆国产96在线|亚洲| www.一区二区| 91同城在线观看| 91久久精品一区二区二区| 色素色在线综合| 91福利视频网站| 欧美日韩在线综合| 91精品国产综合久久久久久漫画 | 欧美经典一区二区三区| 国产欧美一区二区精品忘忧草| 久久久久久毛片| 国产人成亚洲第一网站在线播放 | 欧美久久一二区| 欧美丰满少妇xxxbbb| 日韩精品一区二区三区swag| 日韩免费高清av| 久久久久综合网| 国产精品视频第一区| 国产一区二区成人久久免费影院 | 亚洲欧美日韩小说| 亚洲自拍偷拍综合| 日韩电影一区二区三区| 久久97超碰国产精品超碰| 丁香亚洲综合激情啪啪综合| 91最新地址在线播放| 欧美日本视频在线| 精品999久久久| 国产精品第13页| 亚洲在线视频免费观看| 欧美aaa在线| 国产福利一区在线| 色一情一乱一乱一91av| 欧美一区二区三区小说| 久久久激情视频| 亚洲综合色视频| 看片的网站亚洲| 99精品欧美一区二区三区小说 | 视频一区二区三区在线| 国产在线播放一区二区三区| av电影在线观看不卡| 91精品国产综合久久国产大片| 国产婷婷色一区二区三区在线| 一区二区三区四区乱视频| 久久成人18免费观看| 91在线无精精品入口| 欧美成人性福生活免费看| 曰韩精品一区二区| 国产一区二区三区久久悠悠色av | 亚洲男人电影天堂| 精品一区二区成人精品| 欧美亚洲动漫制服丝袜| 亚洲国产成人在线| 男女性色大片免费观看一区二区 | 国产网站一区二区三区| 午夜精品在线看| 一本久道久久综合中文字幕| 久久影院午夜论| 日韩和欧美的一区| 91福利国产精品| 国产精品素人视频| 国精产品一区一区三区mba桃花| 欧美性大战久久久久久久蜜臀| 国产精品天干天干在观线| 六月丁香婷婷久久| 欧美日韩成人综合| 夜夜爽夜夜爽精品视频| www.爱久久.com| 久久精品亚洲精品国产欧美kt∨| 亚洲第一久久影院| 色噜噜狠狠一区二区三区果冻| 日本一区二区三区国色天香| 国内不卡的二区三区中文字幕 | 懂色av一区二区三区蜜臀| 精品av久久707| 美日韩一区二区三区| 555夜色666亚洲国产免| 亚洲成a人片在线观看中文| 91麻豆蜜桃一区二区三区| 1区2区3区欧美| 99re免费视频精品全部| 国产精品久久毛片av大全日韩| 国产精品一区二区果冻传媒| 久久久久久久综合|