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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lib_setup.c

?? ncurses-5.4 需要的就來下把 一定會有用的哦
?? C
字號:
/**************************************************************************** * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              * *                                                                          * * Permission is hereby granted, free of charge, to any person obtaining a  * * copy of this software and associated documentation files (the            * * "Software"), to deal in the Software without restriction, including      * * without limitation the rights to use, copy, modify, merge, publish,      * * distribute, distribute with modifications, sublicense, and/or sell       * * copies of the Software, and to permit persons to whom the Software is    * * furnished to do so, subject to the following conditions:                 * *                                                                          * * The above copyright notice and this permission notice shall be included  * * in all copies or substantial portions of the Software.                   * *                                                                          * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  * * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   * * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   * * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    * * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    * * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               * *                                                                          * * Except as contained in this notice, the name(s) of the above copyright   * * holders shall not be used in advertising or otherwise to promote the     * * sale, use or other dealings in this Software without prior written       * * authorization.                                                           * ****************************************************************************//**************************************************************************** *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               * *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         * *     and: Thomas E. Dickey 1996-2003                                      * ****************************************************************************//* * Terminal setup routines common to termcap and terminfo: * *		use_env(bool) *		setupterm(char *, int, int *) */#include <curses.priv.h>#include <tic.h>		/* for MAX_NAME_SIZE */#include <term_entry.h>#if SVR4_TERMIO && !defined(_POSIX_SOURCE)#define _POSIX_SOURCE#endif#include <term.h>		/* lines, columns, cur_term */MODULE_ID("$Id: lib_setup.c,v 1.79 2003/12/27 18:24:26 tom Exp $")/**************************************************************************** * * Terminal size computation * ****************************************************************************/#if HAVE_SIZECHANGE# if !defined(sun) || !TERMIOS#  if HAVE_SYS_IOCTL_H#   include <sys/ioctl.h>#  endif# endif#endif#if NEED_PTEM_H /* On SCO, they neglected to define struct winsize in termios.h -- it's only  * in termio.h and ptem.h (the former conflicts with other definitions).  */# include <sys/stream.h># include <sys/ptem.h>#endif/* * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS, * Solaris, IRIX) define TIOCGWINSZ and struct winsize. */#ifdef TIOCGSIZE# define IOCTL_WINSIZE TIOCGSIZE# define STRUCT_WINSIZE struct ttysize# define WINSIZE_ROWS(n) (int)n.ts_lines# define WINSIZE_COLS(n) (int)n.ts_cols#else# ifdef TIOCGWINSZ#  define IOCTL_WINSIZE TIOCGWINSZ#  define STRUCT_WINSIZE struct winsize#  define WINSIZE_ROWS(n) (int)n.ws_row#  define WINSIZE_COLS(n) (int)n.ws_col# endif#endifNCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";NCURSES_EXPORT_VAR(int) LINES = 0;NCURSES_EXPORT_VAR(int) COLS = 0;NCURSES_EXPORT_VAR(int) TABSIZE = 0;static int _use_env = TRUE;NCURSES_EXPORT(void)use_env(bool f){    T((T_CALLED("use_env()")));    _use_env = f;    returnVoid;}static void_nc_get_screensize(int *linep, int *colp)/* Obtain lines/columns values from the environment and/or terminfo entry */{    /* figure out the size of the screen */    T(("screen size: terminfo lines = %d columns = %d", lines, columns));    if (!_use_env) {	*linep = (int) lines;	*colp = (int) columns;    } else {			/* usually want to query LINES and COLUMNS from environment */	int value;	*linep = *colp = 0;	/* first, look for environment variables */	if ((value = _nc_getenv_num("LINES")) > 0) {	    *linep = value;	}	if ((value = _nc_getenv_num("COLUMNS")) > 0) {	    *colp = value;	}	T(("screen size: environment LINES = %d COLUMNS = %d", *linep, *colp));#ifdef __EMX__	if (*linep <= 0 || *colp <= 0) {	    int screendata[2];	    _scrsize(screendata);	    *colp = screendata[0];	    *linep = screendata[1];	    T(("EMX screen size: environment LINES = %d COLUMNS = %d",	       *linep, *colp));	}#endif#if HAVE_SIZECHANGE	/* if that didn't work, maybe we can try asking the OS */	if (*linep <= 0 || *colp <= 0) {	    if (isatty(cur_term->Filedes)) {		STRUCT_WINSIZE size;		errno = 0;		do {		    if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) < 0			&& errno != EINTR)			goto failure;		} while		    (errno == EINTR);		/*		 * Solaris lets users override either dimension with an		 * environment variable.		 */		if (*linep <= 0)		    *linep = WINSIZE_ROWS(size);		if (*colp <= 0)		    *colp = WINSIZE_COLS(size);	    }	    /* FALLTHRU */	  failure:;	}#endif /* HAVE_SIZECHANGE */	/* if we can't get dynamic info about the size, use static */	if (*linep <= 0) {	    *linep = (int) lines;	}	if (*colp <= 0) {	    *colp = (int) columns;	}	/* the ultimate fallback, assume fixed 24x80 size */	if (*linep <= 0) {	    *linep = 24;	}	if (*colp <= 0) {	    *colp = 80;	}	/*	 * Put the derived values back in the screen-size caps, so	 * tigetnum() and tgetnum() will do the right thing.	 */	lines = (short) (*linep);	columns = (short) (*colp);    }    T(("screen size is %dx%d", *linep, *colp));    if (VALID_NUMERIC(init_tabs))	TABSIZE = (int) init_tabs;    else	TABSIZE = 8;    T(("TABSIZE = %d", TABSIZE));}#if USE_SIZECHANGENCURSES_EXPORT(void)_nc_update_screensize(void){    int my_lines, my_cols;    _nc_get_screensize(&my_lines, &my_cols);    if (SP != 0 && SP->_resize != 0)	SP->_resize(my_lines, my_cols);}#endif/**************************************************************************** * * Terminal setup * ****************************************************************************/#define ret_error(code, fmt, arg)	if (errret) {\					    *errret = code;\					    returnCode(ERR);\					} else {\					    fprintf(stderr, fmt, arg);\					    exit(EXIT_FAILURE);\					}#define ret_error0(code, msg)		if (errret) {\					    *errret = code;\					    returnCode(ERR);\					} else {\					    fprintf(stderr, msg);\					    exit(EXIT_FAILURE);\					}#if USE_DATABASE || USE_TERMCAPstatic intgrab_entry(const char *const tn, TERMTYPE * const tp)/* return 1 if entry found, 0 if not found, -1 if database not accessible */{#if USE_DATABASE    char filename[PATH_MAX];#endif    int status;    /*     * $TERM shouldn't contain pathname delimiters.     */    if (strchr(tn, '/'))	return 0;#if USE_DATABASE    if ((status = _nc_read_entry(tn, filename, tp)) != 1) {#if !PURE_TERMINFO	/*	 * Try falling back on the termcap file.	 * Note:  allowing this call links the entire terminfo/termcap	 * compiler into the startup code.  It's preferable to build a	 * real terminfo database and use that.	 */	status = _nc_read_termcap_entry(tn, tp);#endif /* PURE_TERMINFO */    }#else    status = _nc_read_termcap_entry(tn, tp);#endif    /*     * If we have an entry, force all of the cancelled strings to null     * pointers so we don't have to test them in the rest of the library.     * (The terminfo compiler bypasses this logic, since it must know if     * a string is cancelled, for merging entries).     */    if (status == 1) {	unsigned n;	for_each_boolean(n, tp) {	    if (!VALID_BOOLEAN(tp->Booleans[n]))		tp->Booleans[n] = FALSE;	}	for_each_string(n, tp) {	    if (tp->Strings[n] == CANCELLED_STRING)		tp->Strings[n] = ABSENT_STRING;	}    }    return (status);}#endif/***	do_prototype()****	Take the real command character out of the CC environment variable**	and substitute it in for the prototype given in 'command_character'.***/static voiddo_prototype(void){    int i;    char CC;    char proto;    char *tmp;    tmp = getenv("CC");    CC = *tmp;    proto = *command_character;    for_each_string(i, &(cur_term->type)) {	for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {	    if (*tmp == proto)		*tmp = CC;	}    }}/* * Check if we are running in a UTF-8 locale. */NCURSES_EXPORT(char *)_nc_get_locale(void){    char *env;    if (((env = getenv("LC_ALL")) != 0 && *env != '\0')	|| ((env = getenv("LC_CTYPE")) != 0 && *env != '\0')	|| ((env = getenv("LANG")) != 0 && *env != '\0')) {	return env;    }    return 0;}/* * Check if we are running in a UTF-8 locale. */NCURSES_EXPORT(int)_nc_unicode_locale(void){    char *env = _nc_get_locale();    if (env != 0) {	if (strstr(env, ".UTF-8") != 0)	    return 1;    }    return 0;}/* * Check for known broken cases where a UTF-8 locale breaks the alternate * character set. */NCURSES_EXPORT(int)_nc_locale_breaks_acs(void){    char *env = getenv("TERM");    if (env != 0) {	if (strstr(env, "linux"))	    return 1;		/* always broken */	if (strstr(env, "screen") != 0	    && ((env = getenv("TERMCAP")) != 0		&& strstr(env, "screen") != 0)	    && strstr(env, "hhII00") != 0) {	    return 1;	}    }    return 0;}/* *	setupterm(termname, Filedes, errret) * *	Find and read the appropriate object file for the terminal *	Make cur_term point to the structure. * */NCURSES_EXPORT(int)setupterm(NCURSES_CONST char *tname, int Filedes, int *errret){    int status;    START_TRACE();    T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));    if (tname == 0) {	tname = getenv("TERM");	if (tname == 0 || *tname == '\0') {	    ret_error0(-1, "TERM environment variable not set.\n");	}    }    if (strlen(tname) > MAX_NAME_SIZE) {	ret_error(-1, "TERM environment must be <= %d characters.\n",		  MAX_NAME_SIZE);    }    T(("your terminal name is %s", tname));    /*     * Allow output redirection.  This is what SVr3 does.  If stdout is     * directed to a file, screen updates go to standard error.     */    if (Filedes == STDOUT_FILENO && !isatty(Filedes))	Filedes = STDERR_FILENO;    /*     * Check if we have already initialized to use this terminal.  If so, we     * do not need to re-read the terminfo entry, or obtain TTY settings.     *     * This is an improvement on SVr4 curses.  If an application mixes curses     * and termcap calls, it may call both initscr and tgetent.  This is not     * really a good thing to do, but can happen if someone tries using ncurses     * with the readline library.  The problem we are fixing is that when     * tgetent calls setupterm, the resulting Ottyb struct in cur_term is     * zeroed.  A subsequent call to endwin uses the zeroed terminal settings     * rather than the ones saved in initscr.  So we check if cur_term appears     * to contain terminal settings for the same output file as our current     * call - and copy those terminal settings.  (SVr4 curses does not do this,     * however applications that are working around the problem will still work     * properly with this feature).     */    if (cur_term != 0	&& cur_term->Filedes == Filedes	&& cur_term->_termname != 0	&& !strcmp(cur_term->_termname, tname)	&& _nc_name_match(cur_term->type.term_names, tname, "|")) {	T(("reusing existing terminal information and mode-settings"));    } else {	TERMINAL *term_ptr;	term_ptr = typeCalloc(TERMINAL, 1);	if (term_ptr == 0) {	    ret_error0(-1,		       "Not enough memory to create terminal structure.\n");	}#if USE_DATABASE || USE_TERMCAP	status = grab_entry(tname, &term_ptr->type);#else	status = 0;#endif	/* try fallback list if entry on disk */	if (status != 1) {	    const TERMTYPE *fallback = _nc_fallback(tname);	    if (fallback) {		term_ptr->type = *fallback;		status = 1;	    }	}	if (status <= 0) {	    del_curterm(term_ptr);	    if (status == -1) {		ret_error0(-1, "terminals database is inaccessible\n");	    } else if (status == 0) {		ret_error(0, "'%s': unknown terminal type.\n", tname);	    }	}	set_curterm(term_ptr);	if (command_character && getenv("CC"))	    do_prototype();	strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);	ttytype[NAMESIZE - 1] = '\0';	cur_term->Filedes = Filedes;	cur_term->_termname = strdup(tname);	/*	 * If an application calls setupterm() rather than initscr() or	 * newterm(), we will not have the def_prog_mode() call in	 * _nc_setupscreen().  Do it now anyway, so we can initialize the	 * baudrate.	 */	if (isatty(Filedes)) {	    def_prog_mode();	    baudrate();	}    }    /*     * We should always check the screensize, just in case.     */    _nc_get_screensize(&LINES, &COLS);    if (errret)	*errret = 1;    T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));    if (generic_type) {	ret_error(0, "'%s': I need something more specific.\n", tname);    }    if (hard_copy) {	ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);    }    returnCode(OK);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品噜噜噜成人av农村| 欧美日韩亚洲综合在线 | 色94色欧美sute亚洲线路一久| 日韩欧美亚洲一区二区| 亚洲激情图片一区| 色综合久久中文字幕| 成人欧美一区二区三区小说| 国产精品18久久久久| 日本二三区不卡| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩av高清在线观看| 免费看欧美美女黄的网站| 国产99精品视频| 538prom精品视频线放| 国产欧美精品在线观看| 午夜视频在线观看一区二区| 国产一区二区在线免费观看| 欧美日韩一区在线| 国产精品亲子乱子伦xxxx裸| 日韩精品国产精品| 91久久国产综合久久| 国产欧美一区二区在线| 蜜桃视频第一区免费观看| 91久久精品国产91性色tv| 中文字幕av免费专区久久| 狠狠色伊人亚洲综合成人| 欧美人妖巨大在线| 亚洲一二三专区| 色视频成人在线观看免| 国产精品美女久久久久久 | 欧美精品日韩精品| 亚洲一区二区三区自拍| 色综合一区二区三区| 亚洲欧洲制服丝袜| 91老师国产黑色丝袜在线| 亚洲欧美日韩一区二区三区在线观看| 国产高清在线观看免费不卡| 国产午夜精品福利| 国产精品一区二区免费不卡 | 欧美电视剧在线观看完整版| 中文字幕中文字幕在线一区| 丁香激情综合五月| 国产精品久久三| 色婷婷综合久久| 一区二区三区中文免费| 欧美优质美女网站| 性欧美大战久久久久久久久| 日韩一区二区三区四区| 九九精品一区二区| 日韩免费成人网| 国产大陆a不卡| 亚洲天堂精品视频| 欧美片在线播放| 国产99久久久国产精品潘金网站| 国产精品视频在线看| 在线观看日韩毛片| 日本 国产 欧美色综合| 久久九九全国免费| 一本久道久久综合中文字幕| 午夜私人影院久久久久| 精品女同一区二区| 99国产欧美另类久久久精品| 性久久久久久久久| 欧美mv和日韩mv的网站| 国产.欧美.日韩| 日韩精彩视频在线观看| 日本一区二区视频在线观看| 在线免费视频一区二区| 国产乱对白刺激视频不卡 | 麻豆精品一区二区综合av| 中文字幕第一区综合| 日韩精品最新网址| 91蜜桃传媒精品久久久一区二区| 久久av中文字幕片| 亚洲精品v日韩精品| 国产丝袜欧美中文另类| 欧美高清dvd| 91丨porny丨户外露出| 国产成人在线免费| 久久国产成人午夜av影院| 亚洲一区二区精品久久av| 亚洲视频一区二区免费在线观看 | 亚洲第四色夜色| 亚洲人成精品久久久久久| 国产无人区一区二区三区| 欧美成人精品1314www| 这里是久久伊人| 91.麻豆视频| 精品少妇一区二区三区| 精品国产免费人成在线观看| 欧美成人女星排名| 中文字幕色av一区二区三区| 国产欧美日韩综合| 亚洲男人的天堂网| 五月天一区二区| 久久99热国产| 丁香激情综合国产| 欧美日精品一区视频| 91精品国产综合久久久久| 精品国产乱码91久久久久久网站| 精品99999| 国产精品久久久久久久裸模 | 中文一区在线播放| 午夜精品久久久久久不卡8050| 国产在线视视频有精品| 久久国产福利国产秒拍| 国产成人丝袜美腿| 91丨九色丨黑人外教| 欧美性xxxxx极品少妇| 欧美一级免费大片| 日本一区二区三区国色天香 | 欧美性一级生活| 亚洲国产精品久久人人爱| 蜜臀av一级做a爰片久久| 国产精品影视在线| 在线免费视频一区二区| 日韩欧美亚洲国产另类| 中文字幕制服丝袜成人av| 图片区小说区区亚洲影院| 国产乱人伦偷精品视频免下载| 色综合久久久久综合| 亚洲精品一区二区三区影院| 中文字幕日本乱码精品影院| 日韩经典中文字幕一区| 成人av手机在线观看| 欧美不卡一区二区| 亚洲国产精品欧美一二99| 国产不卡视频一区二区三区| 欧美精品三级在线观看| 亚洲婷婷国产精品电影人久久| 秋霞电影网一区二区| 精品视频资源站| 1024亚洲合集| 成人高清在线视频| 精品福利一区二区三区免费视频| 亚洲最色的网站| 91丨porny丨国产| 中文一区二区在线观看 | gogo大胆日本视频一区| 欧美va亚洲va国产综合| 亚洲国产成人av网| 欧美日韩一区二区在线观看| 日韩一区在线免费观看| 成人高清av在线| 中文一区二区完整视频在线观看| 韩国毛片一区二区三区| 欧美成人国产一区二区| 久草这里只有精品视频| 2022国产精品视频| 黄一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 日韩精品电影在线| 欧美videofree性高清杂交| 蜜桃久久av一区| 久久久久久99久久久精品网站| 国产精品一级黄| 亚洲欧美自拍偷拍色图| 色婷婷av一区二区三区之一色屋| 亚洲人午夜精品天堂一二香蕉| 99这里都是精品| 亚洲小少妇裸体bbw| 99麻豆久久久国产精品免费| 久久久噜噜噜久噜久久综合| av电影在线观看一区| 亚洲第一狼人社区| 欧美精品一区视频| 不卡大黄网站免费看| 亚洲无线码一区二区三区| 欧美xxxx在线观看| 97精品国产露脸对白| 午夜伦欧美伦电影理论片| 欧美精品一区二区三区一线天视频| 丁香六月综合激情| 亚洲午夜在线电影| 国产欧美一区二区在线| 欧美精品视频www在线观看| 国产91在线|亚洲| 亚洲不卡在线观看| 国产精品久久夜| 亚洲精品一区二区在线观看| 91精品福利在线| 成熟亚洲日本毛茸茸凸凹| 日韩精品一二区| 亚洲免费观看高清完整版在线观看熊| 91精品国产综合久久久久久久久久| 成人动漫av在线| 激情综合色综合久久| 丝袜美腿一区二区三区| 亚洲蜜臀av乱码久久精品| 久久精品人人做人人爽97| 日韩一级欧美一级| 欧美日韩国产电影| 欧美午夜精品久久久久久孕妇| 成人激情文学综合网| 不卡av在线网| 91日韩一区二区三区| 91免费视频网| 91行情网站电视在线观看高清版| 成人国产免费视频| 成人黄色av电影|