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

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

?? sys_term.c

?? 經(jīng)典的unix下telnetd代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright (c) 1989, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include "telnetd.h"/* RCSID("$KTH: sys_term.c,v 1.100 2001/04/24 23:11:43 assar Exp $"); */#if defined(_CRAY) || (defined(__hpux) && !defined(HAVE_UTMPX_H))# define PARENT_DOES_UTMP#endif#ifdef HAVE_UTMP_H#include <utmp.h>#endif#ifdef HAVE_UTMPX_H#include <utmpx.h>#endif#ifdef HAVE_UTMPX_Hstruct	utmpx wtmp;#elif defined(HAVE_UTMP_H)struct	utmp wtmp;#endif /* HAVE_UTMPX_H */#ifdef HAVE_STRUCT_UTMP_UT_HOSTint	utmp_len = sizeof(wtmp.ut_host);#elseint	utmp_len = MAXHOSTNAMELEN;#endif#ifndef UTMP_FILE#ifdef _PATH_UTMP#define UTMP_FILE _PATH_UTMP#else#define UTMP_FILE "/etc/utmp"#endif#endif#if !defined(WTMP_FILE) && defined(_PATH_WTMP)#define WTMP_FILE _PATH_WTMP#endif#ifndef PARENT_DOES_UTMP#ifdef WTMP_FILEchar	wtmpf[] = WTMP_FILE;#elsechar	wtmpf[]	= "/usr/adm/wtmp";#endifchar	utmpf[] = UTMP_FILE;#else /* PARENT_DOES_UTMP */#ifdef WTMP_FILEchar	wtmpf[] = WTMP_FILE;#elsechar	wtmpf[]	= "/etc/wtmp";#endif#endif /* PARENT_DOES_UTMP */#ifdef HAVE_TMPDIR_H#include <tmpdir.h>#endif	/* CRAY */#ifdef	STREAMSPTY#ifdef HAVE_SAC_H#include <sac.h>#endif#ifdef HAVE_SYS_STROPTS_H#include <sys/stropts.h>#endif#endif /* STREAMSPTY */#ifdef	HAVE_SYS_STREAM_H#ifdef  HAVE_SYS_UIO_H#include <sys/uio.h>#endif#ifdef __hpux#undef SE#endif#include <sys/stream.h>#endif#if !(defined(__sgi) || defined(__linux) || defined(_AIX)) && defined(HAVE_SYS_TTY)#include <sys/tty.h>#endif#ifdef	t_erase#undef	t_erase#undef	t_kill#undef	t_intrc#undef	t_quitc#undef	t_startc#undef	t_stopc#undef	t_eofc#undef	t_brkc#undef	t_suspc#undef	t_dsuspc#undef	t_rprntc#undef	t_flushc#undef	t_werasc#undef	t_lnextc#endif#ifdef HAVE_TERMIOS_H#include <termios.h>#else#ifdef HAVE_TERMIO_H#include <termio.h>#endif#endif#ifdef HAVE_UTIL_H#include <util.h>#endif# ifndef	TCSANOW#  ifdef TCSETS#   define	TCSANOW		TCSETS#   define	TCSADRAIN	TCSETSW#   define	tcgetattr(f, t)	ioctl(f, TCGETS, (char *)t)#  else#   ifdef TCSETA#    define	TCSANOW		TCSETA#    define	TCSADRAIN	TCSETAW#    define	tcgetattr(f, t)	ioctl(f, TCGETA, (char *)t)#   else#    define	TCSANOW		TIOCSETA#    define	TCSADRAIN	TIOCSETAW#    define	tcgetattr(f, t)	ioctl(f, TIOCGETA, (char *)t)#   endif#  endif#  define	tcsetattr(f, a, t)	ioctl(f, a, t)#  define	cfsetospeed(tp, val)	(tp)->c_cflag &= ~CBAUD; \(tp)->c_cflag |= (val)#  define	cfgetospeed(tp)		((tp)->c_cflag & CBAUD)#  ifdef CIBAUD#   define	cfsetispeed(tp, val)	(tp)->c_cflag &= ~CIBAUD; \     (tp)->c_cflag |= ((val)<<IBSHIFT)#   define	cfgetispeed(tp)		(((tp)->c_cflag & CIBAUD)>>IBSHIFT)#  else#   define	cfsetispeed(tp, val)	(tp)->c_cflag &= ~CBAUD; \     (tp)->c_cflag |= (val)#   define	cfgetispeed(tp)		((tp)->c_cflag & CBAUD)#  endif# endif /* TCSANOW */     struct termios termbuf, termbuf2;	/* pty control structure */# ifdef  STREAMSPTY     static int ttyfd = -1;     int really_stream = 0;# endif     char *new_login = NULL;/* * init_termbuf() * copy_termbuf(cp) * set_termbuf() * * These three routines are used to get and set the "termbuf" structure * to and from the kernel.  init_termbuf() gets the current settings. * copy_termbuf() hands in a new "termbuf" to write to the kernel, and * set_termbuf() writes the structure into the kernel. */     void     init_termbuf(void){# ifdef  STREAMSPTY    if (really_stream)	tcgetattr(ttyfd, &termbuf);    else# endif	tcgetattr(ourpty, &termbuf);    termbuf2 = termbuf;}voidset_termbuf(void){    /*     * Only make the necessary changes.	 */    if (memcmp(&termbuf, &termbuf2, sizeof(termbuf)))# ifdef  STREAMSPTY	if (really_stream)	    tcsetattr(ttyfd, TCSANOW, &termbuf);	else# endif	    tcsetattr(ourpty, TCSANOW, &termbuf);}/* * spcset(func, valp, valpp) * * This function takes various special characters (func), and * sets *valp to the current value of that character, and * *valpp to point to where in the "termbuf" structure that * value is kept. * * It returns the SLC_ level of support for this function. */intspcset(int func, cc_t *valp, cc_t **valpp){#define	setval(a, b)	*valp = termbuf.c_cc[a]; \    *valpp = &termbuf.c_cc[a]; \				   return(b);#define	defval(a) *valp = ((cc_t)a); *valpp = (cc_t *)0; return(SLC_DEFAULT);    switch(func) {    case SLC_EOF:	setval(VEOF, SLC_VARIABLE);    case SLC_EC:	setval(VERASE, SLC_VARIABLE);    case SLC_EL:	setval(VKILL, SLC_VARIABLE);    case SLC_IP:	setval(VINTR, SLC_VARIABLE|SLC_FLUSHIN|SLC_FLUSHOUT);    case SLC_ABORT:	setval(VQUIT, SLC_VARIABLE|SLC_FLUSHIN|SLC_FLUSHOUT);    case SLC_XON:#ifdef	VSTART	setval(VSTART, SLC_VARIABLE);#else	defval(0x13);#endif    case SLC_XOFF:#ifdef	VSTOP	setval(VSTOP, SLC_VARIABLE);#else	defval(0x11);#endif    case SLC_EW:#ifdef	VWERASE	setval(VWERASE, SLC_VARIABLE);#else	defval(0);#endif    case SLC_RP:#ifdef	VREPRINT	setval(VREPRINT, SLC_VARIABLE);#else	defval(0);#endif    case SLC_LNEXT:#ifdef	VLNEXT	setval(VLNEXT, SLC_VARIABLE);#else	defval(0);#endif    case SLC_AO:#if	!defined(VDISCARD) && defined(VFLUSHO)# define VDISCARD VFLUSHO#endif#ifdef	VDISCARD	setval(VDISCARD, SLC_VARIABLE|SLC_FLUSHOUT);#else	defval(0);#endif    case SLC_SUSP:#ifdef	VSUSP	setval(VSUSP, SLC_VARIABLE|SLC_FLUSHIN);#else	defval(0);#endif#ifdef	VEOL    case SLC_FORW1:	setval(VEOL, SLC_VARIABLE);#endif#ifdef	VEOL2    case SLC_FORW2:	setval(VEOL2, SLC_VARIABLE);#endif    case SLC_AYT:#ifdef	VSTATUS	setval(VSTATUS, SLC_VARIABLE);#else	defval(0);#endif    case SLC_BRK:    case SLC_SYNCH:    case SLC_EOR:	defval(0);    default:	*valp = 0;	*valpp = 0;	return(SLC_NOSUPPORT);    }}#ifdef _CRAY/* * getnpty() * * Return the number of pty's configured into the system. */intgetnpty(){#ifdef _SC_CRAY_NPTY    int numptys;    if ((numptys = sysconf(_SC_CRAY_NPTY)) != -1)	return numptys;    else#endif /* _SC_CRAY_NPTY */	return 128;}#endif /* CRAY *//* * getpty() * * Allocate a pty.  As a side effect, the external character * array "line" contains the name of the slave side. * * Returns the file descriptor of the opened pty. */static char Xline[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";char *line = Xline;int	slavefd = -1;#ifdef	_CRAYchar myline[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";#endif	/* CRAY */#if !defined(HAVE_PTSNAME) && defined(STREAMSPTY)static char *ptsname(int fd){#ifdef HAVE_TTYNAME    return ttyname(fd);#else    return NULL;#endif}#endifint getpty(int *ptynum){#if defined(__osf__) || defined(HAVE_OPENPTY)    int master;    int slave;    if(openpty(&master, &slave, line, 0, 0) == 0){	slavefd = slave;	return master;    }    return -1;#else#ifdef HAVE__GETPTY    int master, slave;    char *p;    p = _getpty(&master, O_RDWR, 0600, 1);    if(p == NULL)	return -1;    strlcpy(line, p, sizeof(Xline));    return master;#else    int p;    char *cp, *p1, *p2;    int i;#if SunOS == 40    int dummy;#endif#if 0 /* && defined(HAVE_OPENPTY) */    int master;    int slave;    if(openpty(&master, &slave, line, 0, 0) == 0){	close(slave);	return master;    }#else#ifdef	STREAMSPTY    char *clone[] = { "/dev/ptc", "/dev/ptmx", "/dev/ptm", 		      "/dev/ptym/clone", 0 };    char **q;    for(q=clone; *q; q++){	p=open(*q, O_RDWR);	if(p >= 0){#ifdef HAVE_GRANTPT	    grantpt(p);#endif#ifdef HAVE_UNLOCKPT	    unlockpt(p);#endif	    strlcpy(line, ptsname(p), sizeof(Xline));	    really_stream = 1;	    return p;	}    }#endif /* STREAMSPTY */#ifndef _CRAY#ifndef	__hpux    snprintf(line, sizeof(Xline), "/dev/ptyXX");    p1 = &line[8];    p2 = &line[9];#else    snprintf(line, sizeof(Xline), "/dev/ptym/ptyXX");    p1 = &line[13];    p2 = &line[14];#endif	    for (cp = "pqrstuvwxyzPQRST"; *cp; cp++) {	struct stat stb;	*p1 = *cp;	*p2 = '0';	/*	 * This stat() check is just to keep us from	 * looping through all 256 combinations if there	 * aren't that many ptys available.	 */	if (stat(line, &stb) < 0)	    break;	for (i = 0; i < 16; i++) {	    *p2 = "0123456789abcdef"[i];	    p = open(line, O_RDWR);	    if (p > 0) {#ifndef	__hpux		line[5] = 't';#else		for (p1 = &line[8]; *p1; p1++)		    *p1 = *(p1+1);		line[9] = 't';#endif		chown(line, 0, 0);		chmod(line, 0600);#if SunOS == 40		if (ioctl(p, TIOCGPGRP, &dummy) == 0		    || errno != EIO) {		    chmod(line, 0666);		    close(p);		    line[5] = 'p';		} else#endif /* SunOS == 40 */		    return(p);	    }	}    }#else	/* CRAY */    extern lowpty, highpty;    struct stat sb;    for (*ptynum = lowpty; *ptynum <= highpty; (*ptynum)++) {	snprintf(myline, sizeof(myline), "/dev/pty/%03d", *ptynum);	p = open(myline, 2);	if (p < 0)	    continue;	snprintf(line, sizeof(Xline), "/dev/ttyp%03d", *ptynum);	/*	 * Here are some shenanigans to make sure that there	 * are no listeners lurking on the line.	 */	if(stat(line, &sb) < 0) {	    close(p);	    continue;	}	if(sb.st_uid || sb.st_gid || sb.st_mode != 0600) {	    chown(line, 0, 0);	    chmod(line, 0600);	    close(p);	    p = open(myline, 2);	    if (p < 0)		continue;	}	/*	 * Now it should be safe...check for accessability.	 */	if (access(line, 6) == 0)	    return(p);	else {	    /* no tty side to pty so skip it */	    close(p);	}    }#endif	/* CRAY */#endif	/* STREAMSPTY */#endif /* OPENPTY */    return(-1);#endif}inttty_isecho(void){    return (termbuf.c_lflag & ECHO);}inttty_flowmode(void){    return((termbuf.c_iflag & IXON) ? 1 : 0);}inttty_restartany(void){    return((termbuf.c_iflag & IXANY) ? 1 : 0);}voidtty_setecho(int on){    if (on)	termbuf.c_lflag |= ECHO;    else	termbuf.c_lflag &= ~ECHO;}inttty_israw(void){    return(!(termbuf.c_lflag & ICANON));}voidtty_binaryin(int on){    if (on) {	termbuf.c_iflag &= ~ISTRIP;    } else {	termbuf.c_iflag |= ISTRIP;    }}voidtty_binaryout(int on){    if (on) {	termbuf.c_cflag &= ~(CSIZE|PARENB);	termbuf.c_cflag |= CS8;	termbuf.c_oflag &= ~OPOST;    } else {	termbuf.c_cflag &= ~CSIZE;	termbuf.c_cflag |= CS7|PARENB;	termbuf.c_oflag |= OPOST;    }}inttty_isbinaryin(void){    return(!(termbuf.c_iflag & ISTRIP));}inttty_isbinaryout(void){    return(!(termbuf.c_oflag&OPOST));}inttty_issofttab(void){# ifdef	OXTABS    return (termbuf.c_oflag & OXTABS);# endif# ifdef	TABDLY    return ((termbuf.c_oflag & TABDLY) == TAB3);# endif}voidtty_setsofttab(int on){    if (on) {# ifdef	OXTABS	termbuf.c_oflag |= OXTABS;# endif# ifdef	TABDLY	termbuf.c_oflag &= ~TABDLY;	termbuf.c_oflag |= TAB3;# endif    } else {# ifdef	OXTABS	termbuf.c_oflag &= ~OXTABS;# endif# ifdef	TABDLY	termbuf.c_oflag &= ~TABDLY;	termbuf.c_oflag |= TAB0;# endif    }}inttty_islitecho(void){# ifdef	ECHOCTL    return (!(termbuf.c_lflag & ECHOCTL));# endif# ifdef	TCTLECH    return (!(termbuf.c_lflag & TCTLECH));# endif# if	!defined(ECHOCTL) && !defined(TCTLECH)    return (0);	/* assumes ctl chars are echoed '^x' */# endif}void

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2024国产精品视频| 日韩精品中文字幕一区二区三区 | 国产精品一级片| 奇米影视一区二区三区小说| 亚洲电影欧美电影有声小说| 亚洲综合无码一区二区| 亚洲香蕉伊在人在线观| 亚洲国产精品嫩草影院| 日韩精品91亚洲二区在线观看 | 欧美哺乳videos| 欧美mv和日韩mv的网站| 亚洲精品一区二区三区福利| 久久精品夜色噜噜亚洲a∨| 久久婷婷国产综合国色天香| 国产视频一区在线播放| 国产精品黄色在线观看| 亚洲欧美日韩精品久久久久| 亚洲一区二区三区三| 日精品一区二区三区| 精品无码三级在线观看视频| 成人激情免费网站| 在线区一区二视频| 欧美成人video| 中文字幕av资源一区| 亚洲乱码中文字幕| 久久精品免费观看| 波多野结衣亚洲一区| 欧洲精品一区二区三区在线观看| 欧美疯狂性受xxxxx喷水图片| 精品久久久久久无| 亚洲蜜桃精久久久久久久| 日韩电影在线一区| 国产99久久久精品| 欧美美女激情18p| 中文字幕不卡在线| 日本美女一区二区三区视频| 成人动漫视频在线| 日韩亚洲电影在线| 亚洲日本中文字幕区| 激情久久五月天| 欧美三区在线观看| 国产精品久久久一区麻豆最新章节| 亚洲国产一区在线观看| 国产美女在线观看一区| 欧美色爱综合网| 国产精品久久久久久久久果冻传媒| 天天操天天综合网| 一本到三区不卡视频| 337p粉嫩大胆色噜噜噜噜亚洲| 夜夜嗨av一区二区三区四季av| 国产精品911| 精品少妇一区二区| 偷拍一区二区三区| 色噜噜狠狠一区二区三区果冻| 久久久激情视频| 久久国产三级精品| 欧美一区三区四区| 亚洲一区二区欧美激情| 97久久精品人人做人人爽50路| 欧美大尺度电影在线| 午夜国产精品影院在线观看| 91丨九色porny丨蝌蚪| 中文文精品字幕一区二区| 精品一区二区三区日韩| 日韩欧美一卡二卡| 日本亚洲欧美天堂免费| 欧美乱熟臀69xxxxxx| 夜夜精品浪潮av一区二区三区| 91麻豆自制传媒国产之光| 国产精品福利影院| av成人老司机| 亚洲精品国产一区二区三区四区在线| 国产不卡视频一区| 国产精品视频一二三区| 国产91富婆露脸刺激对白| 久久免费美女视频| 成人看片黄a免费看在线| 国产欧美日本一区二区三区| 岛国一区二区三区| 中文字幕中文字幕一区二区| av一本久道久久综合久久鬼色| 日本一区二区视频在线观看| 成人午夜免费电影| 亚洲视频在线一区观看| 一本一道波多野结衣一区二区| 亚洲欧美日本韩国| 在线播放国产精品二区一二区四区| 亚洲国产视频在线| 日韩美女视频一区二区在线观看| 六月婷婷色综合| 国产欧美一区二区精品久导航| 成人美女在线视频| 亚洲国产精品一区二区www在线| 欧美日韩你懂得| 久久不见久久见免费视频1| 久久久91精品国产一区二区精品| 成人做爰69片免费看网站| 亚洲男同1069视频| 日韩视频免费观看高清完整版| 国内成+人亚洲+欧美+综合在线| 国产精品国产自产拍高清av王其| 色偷偷88欧美精品久久久| 蜜臀av一区二区在线观看| 国产亚洲女人久久久久毛片| 色综合久久九月婷婷色综合| 日韩国产精品久久| 国产精品免费免费| 欧美日韩国产精品成人| 国产成人av一区| 亚洲一级二级三级| 国产欧美一区二区在线观看| 91福利国产精品| 国产在线国偷精品免费看| 一区二区三区精品视频| 久久综合久久综合九色| 色噜噜夜夜夜综合网| 国产精品一区一区| 亚洲成人资源在线| 亚洲欧洲av在线| 欧美mv日韩mv国产网站| 欧美日韩专区在线| 成人免费视频网站在线观看| 天堂久久一区二区三区| 中文字幕一区二区三区在线观看 | 青青草原综合久久大伊人精品优势| 久久久久久久久久久黄色| 日本电影亚洲天堂一区| 国产成人免费视频一区| 青青草国产成人99久久| 一区二区三区在线视频免费观看| 久久久久久综合| 制服丝袜国产精品| 91高清视频免费看| 91片黄在线观看| 成人久久18免费网站麻豆| 美女视频网站久久| 日韩国产一区二| 亚洲成人av电影在线| 中文字幕一区二区三区精华液| 欧美videossexotv100| 在线播放中文字幕一区| 一本大道久久a久久综合| 国产 日韩 欧美大片| 国产在线不卡一区| 久久国产精品一区二区| 日韩高清欧美激情| 五月婷婷欧美视频| 视频一区二区三区在线| 亚洲自拍欧美精品| 樱花影视一区二区| 伊人婷婷欧美激情| 亚洲国产成人精品视频| 一区二区三区日韩| 亚洲亚洲精品在线观看| 亚洲成在人线在线播放| 亚洲va韩国va欧美va精品| 亚洲一区二区美女| 午夜伊人狠狠久久| 蜜臀av一区二区| 国产精品夜夜嗨| 成人黄色电影在线| 一本一道久久a久久精品| 在线视频你懂得一区二区三区| 在线免费观看一区| 91精品啪在线观看国产60岁| 91精品中文字幕一区二区三区| 日韩一级黄色片| 国产日韩欧美一区二区三区综合| 国产三级一区二区| 亚洲欧美偷拍卡通变态| 午夜免费久久看| 久久国产精品露脸对白| 粗大黑人巨茎大战欧美成人| 91麻豆国产香蕉久久精品| 91精品国产色综合久久久蜜香臀| 日韩一区二区三区四区| 国产人成一区二区三区影院| 国产精品国产三级国产普通话99 | 欧美日本高清视频在线观看| 日韩一区二区三区在线| 国产亚洲一区二区在线观看| ...av二区三区久久精品| 亚洲第一福利一区| 国产一区二区三区美女| 91久久精品国产91性色tv| 宅男噜噜噜66一区二区66| 国产欧美一区二区精品婷婷| 亚洲综合色成人| 国产乱人伦偷精品视频免下载| 色综合中文字幕| www国产精品av| 亚洲影院久久精品| 国产精品一区二区91| 欧美日韩一区久久| 欧美国产日韩亚洲一区| 日韩国产精品久久久久久亚洲| 成人激情开心网| 精品剧情在线观看| 亚洲高清免费观看| 91在线免费播放|