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

📄 ttimeout.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
/*	Copyright (c) 1984 AT&T	*//*	  All Rights Reserved  	*//*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*//*	The copyright notice above does not evidence any   	*//*	actual or intended publication of such source code.	*/#ifndef lintstatic	char sccsid[] = "@(#)ttimeout.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.2 */#endif#include	"curses_inc.h"#include	<fcntl.h>/* * Set the current time-out period for getting input. * * delay:	< 0 for infinite delay (blocking read) * 		= 0 for no delay read * 		> 0 to specify a period in millisecs to wait * 		    for input, then return '\0' if none comes */void	_setblock(), _settimeout();ttimeout(delay)int	delay;{    if (cur_term->_inputfd < 0)	return (ERR);    if (delay < 0)	delay = -1;    if (cur_term->_delay == delay)	goto good;#ifdef	SYSV    if (delay > 0)    {	if (cur_term->_delay < 0)	    _setblock(delay);	_settimeout(delay);    }    else	if ((delay + cur_term->_delay) == -1)	    _setblock(delay);	else	{	    if (delay < 0)		_setblock(delay);	    _settimeout(delay);	}#else	/* SYSV */    cbreak();#endif	/* SYSV */    cur_term->_delay = delay;    wtimeout(stdscr, delay);	/* assume same as std. screen */good:    return (OK);}#ifdef	SYSV/* set the terminal to nodelay (==0) or block(<0) */static	void_setblock(block)int	block;{    int	flags = fcntl(cur_term->_inputfd, F_GETFL, 0);    if (block < 0)	flags &= ~O_NDELAY;    else		flags |= O_NDELAY;    (void) fcntl(cur_term->_inputfd, F_SETFL, flags);}/* * set the terminal to timeout in t milliseconds, * rounded up to the nearest 10th of a second. */static	void_settimeout(num)int	num;{    PROGTTY.c_lflag &= ~ICANON;    if (num > 0)    {	PROGTTY.c_cc[VMIN] = 0;	PROGTTY.c_cc[VTIME] = (num > 25500) ? 255 : (num + 99) / 100;	cur_term->_fl_rawmode = 3;    }    else    {	PROGTTY.c_cc[VMIN] = 1;	PROGTTY.c_cc[VTIME] = 0;	cur_term->_fl_rawmode = 1;    }    reset_prog_mode();}#endif	/* SYSV */

⌨️ 快捷键说明

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