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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? main.c

?? minicom2.0源代碼
?? C
字號(hào):
/* * main.c	main loop of emulator. * *		This file is part of the minicom communications package, *		Copyright 1991-1995 Miquel van Smoorenburg. * *		This program is free software; you can redistribute it and/or *		modify it under the terms of the GNU General Public License *		as published by the Free Software Foundation; either version *		2 of the License, or (at your option) any later version. * * fmg 1/11/94 color mods * jl  22.06.97 log it when DCD drops * jl  02.06.98 added call duration to the "Gone offline" log line * jl  14.06.99 moved lockfile creation to before serial port opening * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "rcsid.h"RCSID("$Id: main.c,v 1.7 2000/10/27 14:19:38 walker Exp $")#include "port.h"#include "minicom.h"#include "intl.h"#if defined(__linux__) || (defined(BSD) && (BSD >= 199306))#include <errno.h>#endif#ifdef SVR4_LOCKS#include <sys/types.h>#include <sys/stat.h>#include <sys/mkdev.h>#endif /* SVR4_LOCKS */static jmp_buf albuf;/* Compile SCCS ID into executable. */char *Version = VERSION;void curs_status();/* * Return the last part of a filename. */char *mbasename(s)char *s;{  char *p;    if((p = strrchr(s, '/')) == (char *)NULL)  	p = s;  else  	p++;  return(p);}/* * Leave. */void leave(s)char *s;{  if (stdwin) wclose(stdwin, 1);  if (portfd > 0) {	m_restorestate(portfd);	close(portfd);  }  set_privs();  if (lockfile[0]) unlink(lockfile);  if (P_CALLIN[0]) (void) fastsystem(P_CALLIN, CNULL, CNULL, CNULL);  if (real_uid) chown(dial_tty, (uid_t)portuid, (gid_t)portgid);  fprintf(stderr, "%s", s);  exit(1);}/* * Return text describing command-key. */char *esc_key(){  static char buf[16];  if (!alt_override && P_ESCAPE[0] == '^' && P_ESCAPE[1] != '[') {	sprintf(buf, "CTRL-%c ", P_ESCAPE[1]);	return(buf);  }#if defined(_COHERENT) || defined(i386) || defined(__i386__)  sprintf(buf, "ALT-");#else  sprintf(buf, "Meta-");#endif  return(buf);}/*ARGSUSED*/static void get_alrm(dummy)int dummy;{  (void)dummy;  longjmp(albuf, 1);}/* * Open the terminal. */int open_term(doinit)int doinit;{  struct stat stt;  char buf[128];  int fd, n = 0;  int pid;  int mask;#if defined(__linux__) || (defined(BSD) && (BSD >= 199306))  int s_errno;#endif  /* Upgrade our status. */  set_privs();  /* First see if the lock file directory is present. */  if (P_LOCK[0] && stat(P_LOCK, &stt) == 0) {#ifdef SVR4_LOCKS    stat(dial_tty, &stt);    sprintf(lockfile, "%s/LK.%03d.%03d.%03d", P_LOCK, major(stt.st_dev), major(stt.st_rdev), minor(stt.st_rdev));#else /* SVR4_LOCKS */    snprintf(lockfile, sizeof(lockfile), "%s/LCK..%s", P_LOCK, mbasename(dial_tty));#endif /* SVR4_LOCKS */  }  else    lockfile[0] = 0;  if (doinit > 0 && lockfile[0] && (fd = open(lockfile, O_RDONLY)) >= 0) {	n = read(fd, buf, 127);	close(fd);	if (n > 0) {		pid = -1;		if (n == 4)			/* Kermit-style lockfile. */			pid = *(int *)buf;		else {			/* Ascii lockfile. */			buf[n] = 0;			sscanf(buf, "%d", &pid);		}		if (pid > 0 && kill((pid_t)pid, 0) < 0 &&			errno == ESRCH) {		    fprintf(stderr, _("Lockfile is stale. Overriding it..\n"));		    sleep(1);		    unlink(lockfile);		} else		    n = 0;	}	if (n == 0) {  		if (stdwin != NIL_WIN) wclose(stdwin, 1);  		fprintf(stderr, _("Device %s is locked.\n"), dial_tty);		drop_privs();		return(-1);	}  }  if (doinit > 0 && lockfile[0]) {  	/* Create lockfile compatible with UUCP-1.2 */	mask = umask(022);#ifdef _COH3	if ((fd = creat(lockfile, 0666)) < 0) {#else  	if ((fd = open(lockfile, O_WRONLY | O_CREAT | O_EXCL, 0666)) < 0) {#endif  		if (stdwin != NIL_WIN) wclose(stdwin, 1);  		fprintf(stderr, _("Cannot create lockfile. Sorry.\n"));		drop_privs();		return(-1);  	}	(void) umask(mask);	(void) chown(lockfile, (uid_t)real_uid, (gid_t)real_gid);  	snprintf(buf, sizeof(buf), "%10ld minicom %.20s\n", (long)getpid(), username);  	write(fd, buf, strlen(buf));  	close(fd);  }  /* Run a special program to disable callin if needed. */  if (doinit > 0 && P_CALLOUT[0]) {	if(fastsystem(P_CALLOUT, CNULL, CNULL, CNULL) < 0) {  		if (stdwin != NIL_WIN) wclose(stdwin, 1);  		fprintf(stderr, _("Could not setup for dial out.\n"));  		if (lockfile[0]) unlink(lockfile);		drop_privs();		return(-1);  	}  }  /* Now open the tty device. */  if (setjmp(albuf) == 0) {	portfd = -1;	signal(SIGALRM, get_alrm);	alarm(4);#if defined(O_NDELAY) && defined(F_SETFL)	portfd = open(dial_tty, O_RDWR|O_NDELAY);	if (portfd >= 0){		/* Cancel the O_NDELAY flag. */		n = fcntl(portfd, F_GETFL, 0);		(void) fcntl(portfd, F_SETFL, n & ~O_NDELAY);	}#else	portfd = open(dial_tty, O_RDWR);#endif	if (portfd >= 0) {		if (doinit > 0) m_savestate(portfd);		port_init();	}  }#if defined(__linux__) || (defined(BSD) && (BSD >= 199306))  s_errno = errno;#endif  alarm(0);  signal(SIGALRM, SIG_IGN);  if (portfd < 0) {	if (doinit > 0) {  		if (stdwin != NIL_WIN) wclose(stdwin, 1);#if defined(__linux__) || (defined(BSD) && (BSD >= 199306))		fprintf(stderr, _("minicom: cannot open %s: %s\n"),			dial_tty, strerror(s_errno));#else  		fprintf(stderr, _("minicom: cannot open %s. Sorry.\n"), dial_tty);#endif		if (lockfile[0]) unlink(lockfile);		drop_privs();		return(-1);	}	if (lockfile[0]) unlink(lockfile);	werror(_("Cannot open %s!"), dial_tty);	drop_privs();	return(-1);  }  /* Remember owner of port */  stat(dial_tty, &stt);  portuid = stt.st_uid;  portgid = stt.st_gid;  /* Give it to us! */  if (real_uid != 0) chown(dial_tty, (uid_t)real_uid, (gid_t)real_gid);  /* Set CLOCAL mode */  m_nohang(portfd);  /* Set Hangup on Close if program crashes. (Hehe) */  m_hupcl(portfd, 1);  if (doinit > 0) m_flush(portfd);  drop_privs();  return(0);}/* Function to write output. */static void do_output(s, len)char *s;int len;{  char buf[256];  int f;  if (len == 0) len = strlen(s);  if (P_PARITY[0] == 'M') {	for(f = 0; f < len && f < 256; f++)		buf[f] = *s++ | 0x80;	write(portfd, buf, f);  } else	write(portfd, s, len);}/* Function to handle keypad mode switches. */static void kb_handler(a, b)int a,b;{  cursormode = b;  keypadmode = a;  if (st) curs_status();}/* * Initialize screen and status line. */void init_emul(type, do_init)int type;int do_init;{  int x = -1, y = -1;  char attr = 0;  int maxy;  int ypos;  extern int use_status;  if (st != NIL_WIN) {  	wclose(st, 1);  	tempst = 0;  	st = NIL_WIN;  }  if (us != NIL_WIN) {	x = us->curx; y = us->cury;	attr = us->attr;  	wclose(us, 0);  }	  /* See if we have space for a fixed status line */  maxy = LINES - 1;  if ((use_status || LINES > 24)		&& P_STATLINE[0] == 'e') {	if (use_status) {		ypos = LINES;		maxy = LINES - 1;	} else {		ypos = LINES - 1;		maxy = LINES - 2;	}	st = wopen(0, ypos, COLS - 1, ypos, BNONE,		st_attr, sfcolor, sbcolor, 1, 0, 1);	wredraw(st, 1);  }  /* MARK updated 02/17/95 - Customizable size for history buffer */  num_hist_lines = atoi(P_HISTSIZE);  if (num_hist_lines < 0) num_hist_lines = 0;  if (num_hist_lines > 5000) num_hist_lines = 5000;  /* Open a new main window, and define the configured history buffer size. */  us = wopen(0, 0, COLS - 1, maxy,             BNONE, XA_NORMAL, tfcolor, tbcolor, 1, num_hist_lines, 0);  if (x >= 0) {  	wlocate(us, x, y);  	wsetattr(us, attr);  }  us->autocr = 0;  us->wrap = wrapln;  terminal = type;  lines = LINES - (st != NIL_WIN);  cols = COLS;    /* Install and reset the terminal emulator. */  if (do_init) {  	vt_install(do_output, kb_handler, us);	vt_init(type, tfcolor, tbcolor, us->wrap, 0);  } else	vt_pinit(us, -1, -1);  if (st != NIL_WIN) show_status();}/* * Locate the cursor at the correct position in * the user screen. */static void ret_csr(){  wlocate(us, us->curx, us->cury);  wflush();}/* * Show baudrate, parity etc. */void mode_status(){  if (st) { /* if swich off status line - NOT print !!! (vlk@st.simbirsk.su) */    wlocate(st, 20, 0);    if (P_SHOWSPD[0] == 'l')      wprintf(st, "%6ld %s%s%s", linespd, P_BITS, P_PARITY, P_STOPB);    else      wprintf(st, "%6.6s %s%s%s", P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);    ret_csr();  }}/* * Show offline or online time. * If real dcd is not supported, Online and Offline will be * shown in capitals. */void time_status(){  if (!st)    return;  wlocate(st, 63, 0);  if (online < 0)  	wprintf(st, " %12.12s ", P_HASDCD[0] == 'Y' ? _("Offline") : _("OFFLINE"));  else  	wprintf(st," %s %02ld:%02ld", P_HASDCD[0] == 'Y' ? _("Online") : _("ONLINE"),  		online / 3600, (online / 60) % 60);  		  ret_csr();}/* * Show in which mode the cursor keys are (normal or application) */void curs_status(){  wlocate(st, 33, 0);  wprintf(st, cursormode == NORMAL ? "NOR" : "APP");  ret_csr();}time_t old_online = -1;/* * Update the online time. */static void updtime(){  if (old_online == online) return;  if ((P_LOGCONN[0] == 'Y') && (old_online >= 0) && (online < 0)) {    do_log(_("Gone offline (%ld:%02ld:%02ld)"),      old_online / 3600, (old_online / 60) % 60, old_online % 60);  }  old_online = online;  if (st != NIL_WIN) {  	time_status();  	ret_csr();  }  wflush();}/* Update the timer display. This can also be called from updown.c */void timer_update(){  static time_t t1, start;  int dcd_support = P_HASDCD[0] == 'Y';  /* See if we're online. */  if ((!dcd_support && bogus_dcd) || (dcd_support && m_getdcd(portfd))) {	/* We are online at the moment. */  	if (online < 0) {		/* This was a transition from off to online */  		time(&start);  		t1 = start;  		online = 0;  		updtime();#if _DCDFLOW		/* DCD has gotten high, we can turn on hw flow control */		if (P_HASRTS[0] == 'Y')			m_sethwf(portfd, 1);#endif  	}  } else {	/* We are offline at the moment. */#if _DCDFLOW	if (online >= 0) {		/* DCD has dropped, turn off hw flow control. */		m_sethwf(portfd, 0);	}#endif	if (online >= 0 && old_online >= 0) {	  /* First update the timer for call duration.. */	  time(&t1);	  online = t1 - start;	  updtime();	}	/* ..and THEN notify that we are now offline */  	online = -1;  	updtime();  }  /* Update online time */  if (online >= 0) {    time(&t1);    online = t1 - start;    if (online > (old_online + 59))      updtime();  }}/* * Show the status line  */void show_status(){  st->direct = 0;  wlocate(st, 0, 0);  wprintf(st,	  _(" %7.7sZ for help |           |     | Minicom %-6.6s |       | "),	  esc_key(), VERSION);  mode_status();  time_status();  curs_status();  wlocate(st, 56, 0);  switch(terminal) {  	case VT100:  		wputs(st, "VT102");  		break;  	case ANSI:  		wputs(st, "ANSI");  		break;  }  wredraw(st, 1);  ret_csr();}/* * Show the name of the script running now. */void scriptname(s)char *s;{  if (st == NIL_WIN) return;  wlocate(st, 39, 0);  if (*s == 0)  	wprintf(st, "Minicom %-6.6s", VERSION);  else      	wprintf(st, "script %-7.7s", s);  ret_csr();}/* * Show status line temporarily */static void showtemp(){  if (st != NIL_WIN) return;  st = wopen(0, LINES - 1, COLS - 1, LINES - 1,                BNONE, st_attr, sfcolor, sbcolor, 1, 0, 1);  show_status();  tempst = 1;}/* * The main terminal loop: *	- If there are characters recieved send them *	  to the screen via the appropriate translate function. */int do_terminal(){  char buf[128];  char *ptr;  int c;  int x;  int blen;  int zauto = 0;  char *zsig = "**\030B00";  int zpos = 0;#if _HAVE_MACROS  char *s;#endif  dirflush = 0;dirty_goto:  /* Show off or online time */  updtime();  /* If the status line was shown temporarily, delete it again. */  if (tempst) {  	tempst = 0;  	wclose(st, 1);  	st = NIL_WIN;  }  /* Auto Zmodem? */  if (P_PAUTO[0] >= 'A' && P_PAUTO[0] <= 'Z') zauto = P_PAUTO[0];  /* Set the terminal modes */  (void) setcbreak(2); /* Raw, no echo */  keyboard(KSTART, 0);  /* Main loop */  while(1) {	/* See if window size changed */	if (size_changed) {		size_changed = 0;#if 1		/* I got the resize code going again! Yeah! */		wclose(us, 0);		us = NIL_WIN;		if (st) wclose(st, 0);		st = NIL_WIN;		wclose(stdwin, 0);                if (win_init(tfcolor, tbcolor, XA_NORMAL) < 0)			leave(_("Could not re-initialize window system."));		init_emul(terminal, 0);#else		werror(_("Resize not supported, screen may be messed up!"));#endif	}	/* Update the timer. */	timer_update();	/* Check for I/O or timer. */	x = check_io(portfd, 0, 1000, buf, &blen);	/*  Send data from the modem to the screen. */  	if ((x & 1) == 1) {  		ptr = buf;  		while(blen-- > 0) {			/* Auto zmodem detect */			if (zauto) {				if (zsig[zpos] == *ptr) zpos++;				  else zpos = 0;			}			if (P_PARITY[0] == 'M' || P_PARITY[0] == 'S')				*ptr &= 0x7f;  			vt_out(*ptr++);			if (zauto && zsig[zpos] == 0) {				dirflush = 1;				keyboard(KSTOP, 0);				updown('D', zauto - 'A');				dirflush = 0;				zpos = 0;				blen = 0;				goto dirty_goto;			}		}  		wflush();  	}		/* Read from the keyboard and send to modem. */	if ((x & 2) == 2) {		/* See which key was pressed. */		c = keyboard(KGETKEY, 0);		if (c < 0) c += 256; /* XXX - shouldn't happen */		/* Was this a command key? */#ifndef RH_FIX		if ((escape == 128 && c > 224 && c < 252) ||#else   /* filipg 8/22/97: needed to recognize Fkeys in RedHat 4.1 */		if ((escape == 128 && c > 128 && c < 256) ||#endif /* RH_FIX */		    (escape != 27 && c == escape) || 		    (c > K_META)) {			/* Stop keyserv process if we have it. */  			keyboard(KSTOP, 0);  			/* Restore keyboard modes */  			(void) setcbreak(1); /* Cbreak, no echo */  			/* Show status line temporarily */  			showtemp();  			if (c == escape) /* CTRL A */				c = keyboard(KGETKEY, 0);			if (c > K_META) c -= K_META;  			if (c > 128) c -= 128;  			if (c > ' ') {				dirflush = 1;				m_flush(0);				return(c);			}			/* CTRLA - CTRLA means send one CTRLA */#if 0			write(portfd, &c, 1);#else			vt_send(c);#endif			goto dirty_goto;  		}		/* No, just a key to be sent. */#if _HAVE_MACROS		if (c >= K_F1 && c <= K_F10 && P_MACENAB[0] == 'Y') {		    s = "";		    switch(c) {			case K_F1: s = P_MAC1; break;			case K_F2: s = P_MAC2; break;			case K_F3: s = P_MAC3; break;			case K_F4: s = P_MAC4; break;			case K_F5: s = P_MAC5; break;			case K_F6: s = P_MAC6; break;			case K_F7: s = P_MAC7; break;			case K_F8: s = P_MAC8; break;			case K_F9: s = P_MAC9; break;			case K_F10: s = P_MAC10; break;		    }		    if (*s)			mputs(s, 1);		    else			vt_send(c);		} else#endif		vt_send(c);	}  }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91理论电影在线观看| 国产精品2024| 国产成人av自拍| 国产嫩草影院久久久久| 久久日韩粉嫩一区二区三区| 日韩一区二区视频| 日韩一区国产二区欧美三区| 在线免费观看成人短视频| 色婷婷综合激情| 日本精品视频一区二区| 欧美一级视频精品观看| 日韩亚洲国产中文字幕欧美| 久久精品在这里| 国产日韩在线不卡| 欧美色图免费看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美mv日韩mv| 国产视频一区在线播放| 亚洲国产精品综合小说图片区| 亚洲国产精品自拍| 国产一区二区三区综合| 国产制服丝袜一区| 国产麻豆精品在线观看| 欧美日韩国产成人在线免费| 欧美日韩国产天堂| 国产精品免费久久| 一区二区不卡在线视频 午夜欧美不卡在| 青青草国产精品97视觉盛宴| 精品一区二区三区日韩| 精品一区二区免费| 欧美丝袜自拍制服另类| 7777精品伊人久久久大香线蕉最新版| 91精品欧美久久久久久动漫| 欧美第一区第二区| 欧美国产综合色视频| 欧美国产精品一区二区三区| 亚洲少妇中出一区| 亚洲激情图片一区| 日韩在线卡一卡二| 久久久www免费人成精品| 日韩激情一二三区| 懂色av一区二区三区免费观看| 欧美福利视频导航| 国产日韩欧美精品一区| 美女精品自拍一二三四| 成人丝袜18视频在线观看| 欧美一区二区国产| 国产精品色一区二区三区| 欧美精品色一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 久久电影网站中文字幕| 欧美日本在线一区| 日本一区免费视频| 蜜臀91精品一区二区三区 | 欧美视频一区二区在线观看| 色综合天天综合给合国产| 国产午夜精品久久| 亚洲一区二区五区| 91国产免费看| 国产亚洲一区二区三区| 久久99热国产| av亚洲精华国产精华| 国产成人自拍网| 精品av综合导航| xf在线a精品一区二区视频网站| 日韩福利电影在线观看| 成人黄色小视频| 欧美国产成人在线| 手机精品视频在线观看| 国产美女娇喘av呻吟久久| 欧美午夜精品久久久久久超碰| 久久久久久久网| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲三级电影网站| 亚洲一区二区三区国产| 欧美色图激情小说| 视频一区在线播放| 亚洲最新视频在线播放| 国产成人综合自拍| 在线观看视频一区二区| 91精品国产综合久久精品性色| 懂色av一区二区三区蜜臀| 欧美日韩www| 国产欧美日韩精品一区| 精品久久久久久无| 日韩影视精彩在线| 一本色道**综合亚洲精品蜜桃冫| 精品成人在线观看| 一区二区高清在线| 99久久久久久| 精品日韩av一区二区| 久久久精品免费网站| 亚洲成人激情自拍| 色婷婷香蕉在线一区二区| 欧美色男人天堂| 久久国产婷婷国产香蕉| 制服丝袜中文字幕亚洲| 狠狠色丁香久久婷婷综合_中| 强制捆绑调教一区二区| 成人高清视频免费观看| 亚洲免费看黄网站| 国产欧美视频在线观看| 色婷婷av一区| 国产精品大尺度| 欧美日韩一区二区在线观看| 亚洲日本在线a| 老色鬼精品视频在线观看播放| 青青国产91久久久久久| 久久久久国色av免费看影院| 久久精品99久久久| 91福利国产精品| 亚洲欧洲另类国产综合| 欧美精品乱码久久久久久按摩| 一区二区三区毛片| 日韩欧美高清dvd碟片| 精品一区二区三区在线观看| av在线播放不卡| 欧美一区二区视频在线观看2020 | 91美女蜜桃在线| 国产精品热久久久久夜色精品三区| 精品一区二区在线免费观看| 亚洲欧美综合另类在线卡通| 成人va在线观看| 日本女人一区二区三区| 日韩免费观看高清完整版在线观看| 五月婷婷综合激情| 欧美一区二区三区视频| 国产激情精品久久久第一区二区 | 久久久三级国产网站| 99热国产精品| 亚洲一区二区三区四区中文字幕| 综合久久一区二区三区| 91在线国产福利| 婷婷一区二区三区| 国产不卡视频一区二区三区| 亚洲欧美一区二区三区极速播放| 在线观看视频欧美| 免费观看91视频大全| 亚洲美女在线国产| 欧美日韩国产电影| 成人高清免费在线播放| 亚洲一区二区三区爽爽爽爽爽| 久久日韩粉嫩一区二区三区| 91免费国产在线| 亚洲第一二三四区| 久久亚洲综合色一区二区三区| 六月婷婷色综合| 亚洲国产精品久久人人爱| 欧美精品久久99久久在免费线| 成人高清在线视频| 亚洲韩国一区二区三区| 欧美一级生活片| 成人国产电影网| 中文字幕中文在线不卡住| 国产原创一区二区三区| 中文字幕欧美一区| 精品成人一区二区三区四区| 94-欧美-setu| 国产激情一区二区三区四区 | 中文字幕中文字幕在线一区| 亚洲综合在线电影| 欧美一区二区成人| 欧美色精品在线视频| 久久疯狂做爰流白浆xx| 性做久久久久久久免费看| 国产人成亚洲第一网站在线播放| 日韩美女主播在线视频一区二区三区 | 日韩av中文字幕一区二区三区| ww亚洲ww在线观看国产| 欧美精品欧美精品系列| 99精品在线免费| 高清久久久久久| 青青草一区二区三区| 亚洲午夜激情av| 国产精品系列在线| av爱爱亚洲一区| 麻豆国产精品一区二区三区 | 国产不卡视频在线播放| 婷婷综合五月天| 亚洲高清免费观看| 欧美国产97人人爽人人喊| 日本一区二区不卡视频| 日韩三级电影网址| 日韩精品一区二区三区在线播放 | 日韩欧美一级二级三级久久久| 成人av影视在线观看| 成人91在线观看| 激情六月婷婷久久| 国产精品一色哟哟哟| 午夜av一区二区三区| 欧美激情一区二区三区不卡| 欧美tickling网站挠脚心| 欧美电影在哪看比较好| 91美女在线视频| 欧美日韩成人综合在线一区二区| av影院午夜一区| 欧日韩精品视频| 成人免费三级在线| 在线免费观看日韩欧美| 97aⅴ精品视频一二三区|