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

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

?? main.c

?? 這是新華龍(www.xhl.xom.xn)開發(fā)的
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Main-level NOS program:
 *  initialization
 *  keyboard processing
 *  generic user commands
 *
 */
#include <stdio.h>
#include <time.h>
#include <ctype.h>
#if	defined(__TURBOC__) && defined(MSDOS)
#include <io.h>
#include <conio.h>
#endif
#include "global.h"
#include <stdarg.h>
#include "mbuf.h"
#include "timer.h"
#include "proc.h"
#include "iface.h"
#include "ip.h"
#include "tcp.h"
#include "udp.h"
#include "ax25.h"
#include "kiss.h"
#include "enet.h"
#include "netrom.h"
#include "ftpcli.h"
#include "telnet.h"
#include "tty.h"
#include "session.h"
#include "hardware.h"
#include "usock.h"
#include "socket.h"
#include "cmdparse.h"
#include "commands.h"
#include "daemon.h"
#include "devparam.h"
#include "domain.h"
#include "files.h"
#include "main.h"
#include "remote.h"
#include "trace.h"
#include "display.h"

extern struct cmds Cmds[],Startcmds[],Stopcmds[],Attab[];

#ifndef	MSDOS			/* PC uses F-10 key always */
static char Escape = 0x1d;	/* default escape character is ^] */
#endif

char Badhost[] = "Unknown host %s\n";
char *Hostname;
char Nospace[] = "No space!!\n";	/* Generic malloc fail message */
struct proc *Cmdpp;
struct proc *Display;
char *Cmdline;				/* Copy of most recent command line */
int main_exit = FALSE;			/* from main program (flag) */

static char Prompt[] = "net> ";
static FILE *Logfp;
static time_t StartTime;		/* time that NOS was started */
static int Verbose;

static int keychar(int c);
static void pass(char *,int len);
static void passchar(int c);

int
main(argc,argv)
int argc;
char *argv[];
{
	FILE *fp;
	struct daemon *tp;
	int c;
	char cmdbuf[256];
	long hinit = 102400;
	unsigned chunk;
	void **list;

	StartTime = time(&StartTime);

	while((c = getopt(argc,argv,"f:s:d:bvh:")) != EOF){
		switch(c){
		case 'h':	/* Heap initialization */
			hinit = atol(optarg);
			break;
		case 'f':	/* Number of files */
			Nfiles = atoi(optarg);
			break;
		case 's':	/* Number of sockets */
			Nsock = atoi(optarg);
			break;
		case 'd':	/* Root directory for various files */
			initroot(optarg);
			break;
#ifdef	__TURBOC__
		case 'b':	/* Use BIOS for screen output */
			directvideo = 0;
			break;
#endif
		case 'v':
			Verbose = 1;
			break;
		}
	}
	/* Get some memory on the heap so interrupt calls to malloc
	 * won't fail unnecessarily
	 */
	list = calloc(sizeof(void *),(hinit / 32768L) + 1);
	for(c=0;hinit > 0;hinit -= chunk){
		chunk = min(hinit,32768U);
		list[c++] = malloc(chunk);
	}
	while(c > 0)
		free(list[--c]);
	free(list);

	kinit();
	ipinit();
	ioinit();
	sockinit();
	Cmdpp = mainproc("cmdintrp");

	Sessions = (struct session **)callocw(Nsessions,sizeof(struct session *));
	Command = Lastcurr = newsession("command interpreter",COMMAND,1);
	Display = newproc("display",350,display,0,NULL,NULL,0);
	printf("KA9Q NOS version %s\n",Version);
#ifdef	CPU386
	printf("Compiled for 386/486 CPU\n");
#endif
	printf("Copyright 1986-1995 by Phil Karn, KA9Q\n");
	usercvt();
	/* Start background Daemons */
	for(tp=Daemons;;tp++){
		if(tp->name == NULL)
			break;
		newproc(tp->name,tp->stksize,tp->fp,0,NULL,NULL,0);
	}
	Encap.txproc = newproc("encap tx",512,if_tx,0,&Encap,NULL,0);
	if(optind < argc){
		/* Read startup file named on command line */
		if((fp = fopen(argv[optind],READ_TEXT)) == NULL){
			printf("Can't read config file %s",argv[optind]);
			perror("");
		}
	} else {
		fp = fopen(Startup,READ_TEXT);
	}
	if(fp != NULL){
		while(fgets(cmdbuf,sizeof(cmdbuf),fp) != NULL){
			rip(cmdbuf);
			if(Cmdline != NULL)
				free(Cmdline);
			Cmdline = strdup(cmdbuf);
			if(Verbose)
				printf("%s\n",Cmdline);
			if(cmdparse(Cmds,cmdbuf,NULL) != 0){
				printf("input line: %s\n",Cmdline);
			}
		}
		fclose(fp);
	}
	/* Now loop forever, processing commands */
	for(;;){
		printf(Prompt);
		fflush(stdout);
		if(fgets(cmdbuf,sizeof(cmdbuf),stdin) != NULL){
			rip(cmdbuf);
			if(Cmdline)
				free(Cmdline);
			Cmdline = strdup(cmdbuf);
			(void)cmdparse(Cmds,cmdbuf,Lastcurr);
		}
	}
}
/* Keyboard input process */
void
keyboard(i,v1,v2)
int i;
void *v1;
void *v2;
{
	int c;
	int j;

	/* Keyboard process loop */
loop:
	c = kbread();
#ifdef	MSDOS
	if(c >= 256){
		/* Pass all special characters to app upcall */
		if(Current->ctlproc != NULL && (c = (*Current->ctlproc)(c)) == 0)
			goto loop;	/* Upcall took them */

		c -= 256;
		if(Current->scrollmode == SCROLL_INBAND){
			/* In inband scroll mode, pass escape sequences
			 * for cursor control keys. Otherwise fall thru
			 */ 
			switch(c){
			case CURSHOM:
				pass("\033O\0",3);
				goto loop;
			case CURSUP:
				pass("\033OA",3);
				goto loop;
			case PAGEUP:
				pass("\033[5~",4);
				goto loop;
			case CURSEND:
				pass("\033OU",3);
				goto loop;
			case CURSDWN:
				pass("\033OB",3);
				goto loop;
			case PAGEDWN:
				pass("\033[6~",4);
				goto loop;
			case CURSRIGHT:
				pass("\033OC",3);
				goto loop;
			case CURSLEFT:
				pass("\033OD",3);
				goto loop;
			}
		}
		/* In local scroll mode, we can get here with cursor
		 * control keys
		 */
		switch(c){
		case CURSHOM:
			dhome(Current->output->ptr);
			break;
		case CURSUP:
			dcursup(Current->output->ptr);
			break;
		case PAGEUP:
			dpgup(Current->output->ptr);
			break;
		case CURSEND:
			dend(Current->output->ptr);
			break;
		case CURSDWN:
			dcursdown(Current->output->ptr);
			break;
		case PAGEDWN:
			dpgdown(Current->output->ptr);
			break;
		case F10:	/* F-10 (go to command mode) */
			if(Current != Command){
				/* Save current tty mode and set cooked */
				Lastcurr = Current;
				Current = Command;
				alert(Display,1);
			}
			break;
		case F9:	/* F-9 (resume last current session) */
			if(Current == Command && Lastcurr != NULL){
				Current = Lastcurr;
				alert(Display,1);
			}
			break;
		case F8:	/* F-8 (next session) */
			for(j = Current->index+1;j != Current->index;j++){
				if(j >= Nsessions)
					j = 0;
				if(Sessions[j] != NULL){
					Current = Sessions[j];
					alert(Display,1);
					break;
				}
			}
			break;
		case F7:	/* F-7 (prev session) */
			for(j = Current->index-1;j != Current->index;j--){
				if(j == -1)
					j = Nsessions-1;
				if(Sessions[j] != NULL){
					Current = Sessions[j];
					alert(Display,1);
					break;
				}
			}
			break;
		case F6:	/* Toggle scroll mode */
			if(Current == NULL)
				break;
			Current->scrollmode = !Current->scrollmode;
			dscrollmode(Current->output->ptr,Current->scrollmode);
			break;
		case F5:	/* Kick current session */
			if(Current != NULL)
				dokick(0,NULL,Current);
			break;
		case AF1:
		case AF2:
		case AF3:
		case AF4:
		case AF5:
		case AF6:
		case AF7:
		case AF8:
		case AF9:
		case AF10:	/* Alt-F1 thru Alt-F10 */
			c -= 103;
			if(c < Nsessions && Sessions[c] != NULL){
				Current = Sessions[c];
				alert(Display,1);
			}
			break;
		case AF11:	/* Alt-F11 or Alt-F12 */
		case AF12:
			c -= 128;
			if(c < Nsessions && Sessions[c] != NULL){
				Current = Sessions[c];
				alert(Display,1);
			}
			break;
		default:		/* else ignore */
			break;
		}
		goto loop;
	}
#else
	if(c == Escape && Escape != 0 && Current != Command){
		/* Save current tty mode and set cooked */
		Lastcurr = Current;
		Current = Command;
		alert(Display,1);
		goto loop;
	}
#endif
	passchar(c);
	goto loop;
}
static void
pass(s,len)
char *s;
int len;
{
	while(len-- != 0)
		passchar(*s++);
}

static void
passchar(c)
int c;
{
	int cnt;

	/* If a normal-character upcall exists, give it the character.
	 * if the upcall returns 0, don't pass it to the regular tty editor
	 */
	if(Current->inproc != NULL && (*Current->inproc)(c) == 0)
		return;

	/* Ordinary ASCII character, hand to tty editor */
	if((cnt = ttydriv(Current,(char)c)) != 0){
		/* Input ready to hand to process */
		fwrite(Current->ttystate.line,1,cnt,Current->input);
		fflush(Current->input);
	}
}
/* Standard commands called from main */
int
dorepeat(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	int32 interval;
	int ret;
	struct session *sp;

	if(isdigit(argv[1][0])){
		interval = atol(argv[1]);
		argc--;
		argv++;
	} else {
		interval = MSPTICK;
	}
	if((sp = newsession(Cmdline,REPEAT,1)) == NULL){
		printf("Too many sessions\n");
		return 1;
	}
	sp->inproc = keychar;	/* Intercept ^C */
	/* Set enough buffering to handle an entire screen so it'll get
	 * displayed in one quick update when we flush
	 */
	setvbuf(sp->output,NULL,_IOFBF,2048);
	while(sp->inproc == keychar){	/* ^C will clear sp->inproc */
		printf("%c[2J",ESC);	/* Clear screen */
		ret = subcmd(Cmds,argc,argv,p);
		fflush(sp->output);
		if(ret != 0 || ppause(interval) == -1)
			break;
	}
	keywait(NULL,1);
	freesession(sp);
	return 0;
}
static int
keychar(c)
int c;
{
	if(c != CTLC)
		return 1;	/* Ignore all but ^C */

	fprintf(Current->output,"^C\n");
	alert(Current->proc,EABORT);
	Current->inproc = NULL;
	return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级大片在线| 日本强好片久久久久久aaa| 亚洲不卡一区二区三区| 国产最新精品精品你懂的| 色婷婷综合久久久| 国产三级一区二区三区| 美女性感视频久久| 91国模大尺度私拍在线视频| 久久精品网站免费观看| 久久精品久久精品| 欧美另类一区二区三区| 亚洲激情第一区| 不卡一区二区中文字幕| 久久夜色精品一区| 麻豆一区二区三| 欧美久久免费观看| 亚洲自拍偷拍麻豆| 99re成人在线| 国产精品日韩精品欧美在线| 国产在线精品一区在线观看麻豆| 欧美日韩和欧美的一区二区| 一区二区三区日本| 91农村精品一区二区在线| 国产精品沙发午睡系列990531| 青青国产91久久久久久| 欧美色网站导航| 亚洲欧美二区三区| 在线观看日韩av先锋影音电影院| 国产精品素人一区二区| 成人天堂资源www在线| 久久久国产综合精品女国产盗摄| 久久国产人妖系列| 精品国产一区二区三区久久久蜜月 | 色综合久久88色综合天天6| 国产欧美日韩在线观看| 国产精品一二三| 国产农村妇女毛片精品久久麻豆| 国产成人免费高清| 中文字幕不卡在线| 91小视频免费看| 亚洲免费观看高清在线观看| 成人毛片在线观看| 亚洲欧美日韩人成在线播放| 欧美午夜精品免费| 天堂av在线一区| 精品欧美黑人一区二区三区| 国产精品一区二区三区四区| 国产精品国产三级国产aⅴ无密码| 成人av免费在线| 一级特黄大欧美久久久| 在线观看91av| 国产精品亚洲一区二区三区在线| 国产精品网曝门| 在线精品视频小说1| 日韩激情在线观看| 久久久久久**毛片大全| 91麻豆国产自产在线观看| 午夜久久久久久久久 | 欧美色综合天天久久综合精品| 五月激情六月综合| 久久久久9999亚洲精品| www.在线成人| 日韩电影在线观看电影| 国产精品私人影院| 欧美精品1区2区3区| 国产精品99久久久| 一区二区理论电影在线观看| 日韩精品一区二区三区视频播放| 成人性色生活片| 日韩成人av影视| 国产精品传媒视频| 日韩亚洲欧美高清| 91捆绑美女网站| 蜜桃视频在线观看一区二区| 国产精品大尺度| 日韩你懂的在线观看| 99国产精品一区| 美国一区二区三区在线播放| 亚洲人成电影网站色mp4| 日韩欧美中文字幕公布| 色哟哟在线观看一区二区三区| 美女任你摸久久| 亚洲一区二区3| 日韩一区在线看| 2024国产精品视频| 666欧美在线视频| 色网站国产精品| 国产suv精品一区二区三区| 日韩成人免费在线| 亚洲精品高清视频在线观看| 国产三级欧美三级日产三级99 | 日韩女同互慰一区二区| 91蝌蚪porny| 粉嫩av一区二区三区在线播放| 午夜影院久久久| 亚洲精品国久久99热| 国产三级一区二区三区| 日韩欧美精品三级| 欧美一区欧美二区| 欧美色图12p| 色婷婷综合久色| 粉嫩av一区二区三区粉嫩| 狠狠色伊人亚洲综合成人| 日韩成人免费电影| 日韩精品国产欧美| 香蕉久久夜色精品国产使用方法 | 国产大陆a不卡| 久久99精品国产麻豆不卡| 天天av天天翘天天综合网色鬼国产 | 亚洲国产精品综合小说图片区| 欧美国产激情一区二区三区蜜月| 精品欧美一区二区在线观看| 欧美一区二区三区视频在线| 7799精品视频| 欧美一区午夜精品| 欧美一区二区三区四区视频| 欧美三级视频在线观看| 欧美乱妇20p| 日韩一区二区麻豆国产| 精品国产精品网麻豆系列| 日韩欧美电影一二三| 欧美mv和日韩mv的网站| 欧美成人a视频| 国产欧美一区二区三区在线老狼| 日本一区二区三区高清不卡| 日韩精品成人一区二区三区 | 精品一区中文字幕| 精品亚洲成a人在线观看| 国产伦精品一区二区三区免费| 国产iv一区二区三区| 色综合天天性综合| 欧美在线观看视频一区二区| 91精品国产色综合久久| 精品国产乱码久久久久久久久| 欧美精品一区二区三区高清aⅴ | 91精品国产色综合久久久蜜香臀| 日韩一区二区精品葵司在线| 久久久久久久久久电影| 国产亚洲精品aa| 一区二区三区美女| 青青青爽久久午夜综合久久午夜| 国产精品亚洲午夜一区二区三区 | 91啪九色porn原创视频在线观看| 色综合久久中文综合久久牛| 欧美性感一区二区三区| 精品嫩草影院久久| 亚洲日本在线看| 麻豆一区二区在线| 99re亚洲国产精品| 日韩视频免费直播| 中文字幕一区二区三区视频 | 亚洲欧美成人一区二区三区| 日本伊人色综合网| 成人亚洲一区二区一| 欧美视频中文字幕| 国产无一区二区| 午夜精品久久久久久不卡8050| 国产伦精品一区二区三区免费 | 激情成人午夜视频| 91免费版在线看| 欧美精品一区二区精品网| 1024精品合集| 国产在线一区二区综合免费视频| 色狠狠色噜噜噜综合网| 久久久99免费| 日本中文字幕一区二区视频| 99国产麻豆精品| 久久免费美女视频| 天天综合色天天综合色h| 波多野结衣欧美| 久久综合色婷婷| 日韩精品国产欧美| 日本道精品一区二区三区 | 国产盗摄一区二区| 51久久夜色精品国产麻豆| 亚洲欧美日本在线| 大陆成人av片| 精品电影一区二区| 日本亚洲一区二区| 欧美色窝79yyyycom| 亚洲美女免费在线| av在线播放不卡| 2021中文字幕一区亚洲| 青娱乐精品在线视频| 欧美精品日韩一区| 亚洲国产精品久久人人爱| 91老司机福利 在线| 中文字幕一区二区三区乱码在线| 国产精品自拍网站| 日韩精品一区二区三区三区免费| 婷婷综合在线观看| 欧美肥大bbwbbw高潮| 亚洲曰韩产成在线| 欧美这里有精品| 一区二区欧美在线观看| av在线不卡观看免费观看| 中文字幕欧美激情一区| 成人黄色av电影| 中文字幕在线一区免费| 99国产欧美另类久久久精品|