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

📄 termstat.c

📁 经典的unix下telnetd代码
💻 C
字号:
/* * 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: termstat.c,v 1.11 1997/05/11 06:30:04 assar Exp $") *//* * local variables */int def_tspeed = -1, def_rspeed = -1;#ifdef	TIOCSWINSZint def_row = 0, def_col = 0;#endif/* * flowstat * * Check for changes to flow control */voidflowstat(){    if (his_state_is_will(TELOPT_LFLOW)) {	if (tty_flowmode() != flowmode) {	    flowmode = tty_flowmode();	    output_data("%c%c%c%c%c%c",			IAC, SB, TELOPT_LFLOW,			flowmode ? LFLOW_ON : LFLOW_OFF,			IAC, SE);	}	if (tty_restartany() != restartany) {	    restartany = tty_restartany();	    output_data("%c%c%c%c%c%c",			IAC, SB, TELOPT_LFLOW,			restartany ? LFLOW_RESTART_ANY			: LFLOW_RESTART_XON,			IAC, SE);	}    }}/* * clientstat * * Process linemode related requests from the client. * Client can request a change to only one of linemode, editmode or slc's * at a time, and if using kludge linemode, then only linemode may be * affected. */voidclientstat(int code, int parm1, int parm2){    void netflush(void);    /*     * Get a copy of terminal characteristics.     */    init_termbuf();    /*     * Process request from client. code tells what it is.     */    switch (code) {    case TELOPT_NAWS:#ifdef	TIOCSWINSZ	{	    struct winsize ws;	    def_col = parm1;	    def_row = parm2;	    /*	     * Change window size as requested by client.	     */	    ws.ws_col = parm1;	    ws.ws_row = parm2;	    ioctl(ourpty, TIOCSWINSZ, (char *)&ws);	}#endif	/* TIOCSWINSZ */    break;    case TELOPT_TSPEED:	{	    def_tspeed = parm1;	    def_rspeed = parm2;	    /*	     * Change terminal speed as requested by client.	     * We set the receive speed first, so that if we can't	     * store separate receive and transmit speeds, the transmit	     * speed will take precedence.	     */	    tty_rspeed(parm2);	    tty_tspeed(parm1);	    set_termbuf();	    break;	}  /* end of case TELOPT_TSPEED */    default:	/* What? */	break;    }  /* end of switch */    netflush();}

⌨️ 快捷键说明

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