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

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

?? unix.c

?? STEVIE文本文件編緝器的C 語言源程序
?? C
字號:
/* $Header: /nw2/tony/src/stevie/src/RCS/unix.c,v 1.9 89/08/31 10:03:09 tony Exp $
 *
 * System-dependent routines for UNIX System V or Berkeley.
 */

#include "stevie.h"

#ifdef	TERMCAP
extern	int	ospeed;
#endif

#ifdef BSD

/*
 * We have to dork around here to avoid name space pollution on some
 * systems that define their own version of CTRL within standard
 * header files.
 */
#undef	CTRL
#include <sgtty.h>
#include <sys/time.h>
#undef	CTRL
#define	CTRL(x)	((x) & 0x1f)

#else
#include <termio.h>
#endif

#include <signal.h>

#ifdef	BSD
bool_t	got_stop = FALSE;	/* for job control */
#endif

/*
 * inchar() - get a character from the keyboard
 */
int
inchar()
{
	char	c;
#ifdef	BSD
	void	set_tty(), reset_tty(), tsig();
	int	rv;
	int	rfds;
#endif

	flushbuf();		/* flush any pending output */

	do {
#ifdef	BSD
		/*
		 * Much of the following deals with job control issues.
		 * If the editor has received a stop signal, it resets
		 * tty modes, puts the cursor at the bottom of the screen,
		 * and suspends itself. When execution resumes, the modes
		 * are restored and the screen is redrawn.
		 *
		 * The select call below is used because an interrupted
		 * read is restarted after the stop signal is received. To
		 * avoid this problem, we use select instead which will
		 * return -1 (with errno == EINTR) if a signal is received.
		 */
		do {
			if (got_stop) {
				msg("");
				reset_tty();
				signal(SIGTSTP, SIG_DFL);
				kill(getpid(), SIGTSTP);

				/* process stops here */

				set_tty();
				signal(SIGTSTP, tsig);
				screenclear();
				updatescreen();
				windgoto(Cursrow, Curscol);
				flushbuf();
				got_stop = FALSE;
			}
			rfds = 1;	/* wait for input from stdin */
			rv=select(32,&rfds,(int*)0,(int*)0,(struct timeval*)0);
			if (rv == 1 && rfds == 1)
				rv = read(0, &c, 1);
		} while (rv != 1);
#else
		while (read(0, &c, 1) != 1)
			;
#endif
	} while (c == NUL);

	got_int = FALSE;
	return c;
}

#define	BSIZE	2048
static	char	outbuf[BSIZE];
static	int	bpos = 0;

void
flushbuf()
{
	if (bpos != 0)
		write(1, outbuf, bpos);
	bpos = 0;
}

/*
 * Macro to output a character. Used within this file for speed.
 */
#define	outone(c)	outbuf[bpos++] = c; if (bpos >= BSIZE) flushbuf()

/*
 * Function version for use outside this file.
 */
void
outchar(c)
char	c;
{
	outone(c);
}

void
outstr(s)
register char	*s;
{
	while (*s) {
		outone(*s++);
	}
}

#ifdef	TERMCAP
void
outcstr(s)
char	*s;
{
	tputs(s, 1, outchar);
}
#endif

void
beep()
{
	outone('\007');
}

/*
 * remove(file) - remove a file
 */
void
remove(file)
char *file;
{
	unlink(file);
}

/*
 * rename(of, nf) - rename existing file 'of' to 'nf'
 */
void
rename(of, nf)
char	*of, *nf;
{
	unlink(nf);
	link(of, nf);
	unlink(of);
}

void
delay()
{
	/* not implemented */
}

#ifdef BSD
static	struct	sgttyb	ostate;
static	struct	ltchars	oltchars;
#else
static	struct	termio	ostate;
#endif

/*
 * Go into cbreak mode
 */
void
set_tty()
{
#ifdef BSD
	struct	sgttyb	nstate;
	struct	ltchars	nltchars;

	ioctl(0, TIOCGETP, &ostate);
	nstate = ostate;
	nstate.sg_flags &= ~(XTABS|CRMOD|ECHO);
	nstate.sg_flags |= CBREAK;
	ioctl(0, TIOCSETN, &nstate);

	/*
	 * If ^Y is being used as the "delayed suspend" character, we
	 * change it to be whatever the regular suspend character is
	 * (probably ^Z). Vi needs ^Y as a command character, and the
	 * delayed suspend isn't needed here.
	 */
	ioctl(0, TIOCGLTC, &oltchars);
	nltchars = oltchars;
	if (nltchars.t_dsuspc == CTRL('Y'))
		nltchars.t_dsuspc = nltchars.t_suspc;
	ioctl(0, TIOCSLTC, &nltchars);

#ifdef	TERMCAP
	ospeed = nstate.sg_ospeed;
#endif

#else
	struct	termio	nstate;

	ioctl(0, TCGETA, &ostate);
	nstate = ostate;
	nstate.c_lflag &= ~(ICANON|ECHO|ECHOE|ECHOK|ECHONL);
	nstate.c_cc[VMIN] = 1;
	nstate.c_cc[VTIME] = 0;
	ioctl(0, TCSETAW, &nstate);

#ifdef	TERMCAP
	ospeed = nstate.c_cflag & CBAUD;
#endif

#endif
}

/*
 * Restore original terminal modes
 */
void
reset_tty()
{
#ifdef BSD
	ioctl(0, TIOCSETP, &ostate);
	ioctl(0, TIOCSLTC, &oltchars);
#else
	ioctl(0, TCSETAW, &ostate);
#endif
}

static void
sig()
{
	signal(SIGINT, sig);
	signal(SIGQUIT, sig);

	got_int = TRUE;
}

#ifdef	BSD
static void
tsig()
{
	signal(SIGTSTP, tsig);

	got_stop = TRUE;
}
#endif

void
windinit()
{
#ifdef	TERMCAP
	if (t_init() != 1) {
		fprintf(stderr, "unknown terminal type\n");
		exit(1);
	}
#else
	Columns = 80;
	P(P_LI) = Rows = 24;
#endif

	/*
	 * The code here makes sure that there isn't a window during which
	 * we could get interrupted and exit with the tty in a weird state.
	 */
	signal(SIGINT, sig);
	signal(SIGQUIT, sig);
#ifdef	BSD
	signal(SIGTSTP, tsig);
#endif

	set_tty();

	if (got_int)
		windexit(0);
}

void
windexit(r)
int r;
{
	reset_tty();
	exit(r);
}

void
windgoto(r, c)
register int	r, c;
{
#ifdef	TERMCAP
	char	*tgoto();
#else
	r += 1;
	c += 1;
#endif

	/*
	 * Check for overflow once, to save time.
	 */
	if (bpos + 8 >= BSIZE)
		flushbuf();

#ifdef	TERMCAP
	outcstr(tgoto(T_CM, c, r));
#else
	outbuf[bpos++] = '\033';
	outbuf[bpos++] = '[';
	if (r >= 10)
		outbuf[bpos++] = r/10 + '0';
	outbuf[bpos++] = r%10 + '0';
	outbuf[bpos++] = ';';
	if (c >= 10)
		outbuf[bpos++] = c/10 + '0';
	outbuf[bpos++] = c%10 + '0';
	outbuf[bpos++] = 'H';
#endif
}

FILE *
fopenb(fname, mode)
char	*fname;
char	*mode;
{
	return fopen(fname, mode);
}

char *
fixname(s)
char	*s;
{
	return s;
}

/*
 * doshell() - run a command or an interactive shell
 */
void
doshell(cmd)
char	*cmd;
{
	char	*getenv();
	char	cline[128];

	outstr("\r\n");
	flushbuf();

	if (cmd == NULL) {
		if ((cmd = getenv("SHELL")) == NULL)
			cmd = "/bin/sh";
		sprintf(cline, "%s -i", cmd);
		cmd = cline;
	}

	reset_tty();
	system(cmd);
	set_tty();

	wait_return();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲国产专区| 久久综合久久综合久久综合| 国产精品自拍一区| 亚洲午夜电影在线观看| 日本一区二区视频在线观看| 精品国产一区二区三区av性色| 91香蕉视频mp4| 91亚洲国产成人精品一区二三| 国产精品一区久久久久| 精品一区二区在线看| 奇米影视一区二区三区| 日韩在线一区二区| 毛片一区二区三区| 日本美女一区二区三区视频| 免费三级欧美电影| 亚洲午夜免费电影| 国产丝袜欧美中文另类| 欧美国产一区二区| 欧美国产视频在线| 日韩一区在线播放| 国产精品天干天干在观线| 综合激情网...| 亚洲欧美色一区| 日韩电影在线观看电影| 图片区日韩欧美亚洲| 精品在线观看免费| 国产一区二区不卡| 国产一区二区免费看| 不卡的av电影| 色婷婷精品久久二区二区蜜臂av | 欧洲一区二区三区免费视频| 久久久久久一级片| 日本大香伊一区二区三区| 欧美一区二区三区视频免费播放| 日韩欧美一区在线| 亚洲国产视频网站| 夫妻av一区二区| 91精品国产入口| 久久超碰97中文字幕| 99re热视频这里只精品| 国产一区二区主播在线| 一本色道**综合亚洲精品蜜桃冫 | 欧美老肥妇做.爰bbww视频| 在线中文字幕不卡| 亚洲精品在线观看视频| 国产欧美一区二区精品秋霞影院| 亚洲女厕所小便bbb| 日本不卡的三区四区五区| 麻豆国产精品官网| 91在线观看视频| 日韩一区二区三区免费观看| 国产精品毛片久久久久久久| 亚洲h动漫在线| 国产91精品一区二区麻豆网站| 91美女福利视频| 日韩视频一区二区三区在线播放| 国产精品天天摸av网| 午夜视频一区二区| 色网站国产精品| 日韩视频一区在线观看| 亚洲综合久久久久| 国产毛片精品视频| 日韩久久久久久| 亚洲成人黄色影院| 不卡的电视剧免费网站有什么| 久久婷婷综合激情| 性欧美大战久久久久久久久| 日本福利一区二区| 国产片一区二区| 国产一区二区三区不卡在线观看| 欧美日韩精品免费观看视频| 久久夜色精品国产噜噜av| 三级亚洲高清视频| 色婷婷av一区| 一区二区三区波多野结衣在线观看| 久久91精品久久久久久秒播| 日韩视频免费观看高清完整版在线观看 | 欧美日韩日本视频| 亚洲综合一区在线| 色综合久久综合网| 亚洲永久免费视频| 色老综合老女人久久久| 亚洲免费观看高清完整版在线观看 | 欧美—级在线免费片| 国产精品亚洲人在线观看| 这里只有精品电影| 爽好多水快深点欧美视频| 欧美中文字幕不卡| 亚洲一区二区综合| 欧美影视一区在线| 亚洲高清视频的网址| 欧美综合色免费| 亚洲r级在线视频| 欧美日韩国产综合一区二区 | 日韩午夜小视频| 国精产品一区一区三区mba桃花| 日韩久久久久久| 国产专区欧美精品| 国产精品区一区二区三区| 成人国产亚洲欧美成人综合网| 亚洲欧美日韩在线播放| 色综合天天在线| 日本不卡一区二区三区高清视频| 91麻豆精品国产91久久久久久久久| 欧美bbbbb| 久久免费的精品国产v∧| 国产在线观看免费一区| 国产精品美女久久久久高潮| 91网页版在线| 亚洲一级电影视频| 欧美一区二区三区视频免费播放| 另类综合日韩欧美亚洲| 久久伊99综合婷婷久久伊| 在线精品视频小说1| 日韩av成人高清| 中文字幕综合网| 91精品国产综合久久久久久久久久| 精品一二三四区| 亚洲欧洲国产日本综合| 免费成人小视频| 亚洲国产精品成人综合色在线婷婷| 成人黄色电影在线 | 美国三级日本三级久久99| 欧美激情一区二区三区| 欧美在线999| 福利视频网站一区二区三区| 亚洲成人综合在线| 中文字幕国产一区| 欧美日本不卡视频| 播五月开心婷婷综合| 婷婷亚洲久悠悠色悠在线播放| 欧美高清一级片在线观看| 欧美日韩精品三区| 色综合一个色综合| 国模冰冰炮一区二区| 日本成人在线网站| 亚洲精品视频在线观看网站| 欧美久久久影院| 99久久婷婷国产综合精品电影| 日本欧美韩国一区三区| 最新热久久免费视频| 欧美国产日韩亚洲一区| 欧美日韩高清一区二区三区| 91视频观看视频| 蜜桃精品视频在线| 亚洲视频综合在线| 国产偷国产偷亚洲高清人白洁| 欧美日韩国产综合一区二区三区 | 国产精品亚洲一区二区三区妖精 | 亚洲自拍偷拍网站| 中文字幕高清一区| 国产精品久久久久aaaa| 亚洲精品在线三区| 欧美激情综合五月色丁香小说| 在线不卡免费av| 91麻豆精品国产| 欧美视频你懂的| 欧美日本在线播放| 欧美性极品少妇| 欧美日韩大陆在线| 91国产福利在线| 欧美军同video69gay| 在线观看国产一区二区| 欧美性猛交一区二区三区精品| 日本国产一区二区| 欧美三区在线视频| 欧美日韩精品二区第二页| 欧美狂野另类xxxxoooo| 欧美日韩高清一区二区| 99久久综合国产精品| 在线观看日韩av先锋影音电影院| 99久久久免费精品国产一区二区| 91小宝寻花一区二区三区| 99国产一区二区三精品乱码| 欧美视频在线不卡| 91福利国产精品| 欧美电视剧免费全集观看| 欧美成人一区二区| 国产精品久久久久久久久久久免费看 | 亚洲欧洲色图综合| 成人欧美一区二区三区在线播放| 一区二区三区在线视频免费 | 丝袜美腿亚洲一区二区图片| 日本欧美一区二区三区乱码| 东方aⅴ免费观看久久av| 99久精品国产| 在线不卡中文字幕| 精品88久久久久88久久久| 欧美国产激情二区三区| 亚洲精品欧美激情| 蜜桃av一区二区三区| 国产99久久久国产精品免费看| 色老头久久综合| 日韩欧美国产麻豆| 亚洲欧美区自拍先锋| 婷婷综合久久一区二区三区| 丰满少妇久久久久久久| 欧美亚洲禁片免费| 久久久另类综合| 亚洲国产精品欧美一二99|