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

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

?? transfers.c

?? Gcomm is a serial communications program similar to seyon, but more modern, and easier to use. Works
?? C
字號:
#ifndef lintstatic const char rcsid[] = "$Id: transfers.c,v 1.1.1.1 2001/03/08 00:01:48 efalk Exp $" ;#endif/* file transfers for gcomm */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/time.h>#include <sys/stat.h>#include <sys/param.h>extern	int	errno ;#include "Xmodem/zmodem.h"#include "transfers.h"#include "gcomm.h"#include "serial.h"#include "buffers.h"#include "winutils.h"static	ZModem	info ;static	int	oldFlowControl ;static	bool	sending ;static	char	*filenames = NULL, *filenamePtr ;static	char	*filenameExpand() ;static	bool	TransferTimeout(void *) ;	bool	transferActive ;static	int	timeoutSec ;voidUpload(char *files){	int	i ;	if( xferProtocol == XferKermit )	{	  WindowStatus("Kermit not yet supported") ;	  return ;	}	oldFlowControl = flowControl ;	info.zrinitflags = CANFDX|CANOVIO|CANBRK|CANFC32 ;	info.zsinitflags = 0 ;	info.attn = NULL ;	if( packetSize != 0 )	  info.packetsize = packetSize ;	else if( connectionType == ConnectionSerial ) {	  if( baudRate < 2400 )	    info.packetsize = 256 ;	  else if( baudRate == 2400 )	    info.packetsize = 512 ;	  else	    info.packetsize = 1024 ;	}	else	  info.packetsize = 1024 ;	info.windowsize = windowSize ;	filenames = filenameExpand(files) ;	filenamePtr = filenames ;	transferActive = True ;	sending = True ;	SelectTermBuf() ;	if( connectionType == ConnectionSerial )	  SerialPortControl(-1, 8, ParityNone, -1, 0) ;	switch( xferProtocol ) {	  case XferZmodem: i = ZmodemTInit(&info) ; break ;	  case XferYmodem: i = YmodemTInit(&info) ; break ;	  case XferXmodem: i = XmodemTInit(&info) ; break ;	}	WindowStatus("Waiting for remote to respond...") ;	dialogTimeout = info.timeout ;	zmodemlog("Upload: set TransferTimout to %d\n", dialogTimeout) ;	timeoutSec = 0 ;	InstallDialogTimeout(dialogTimeout == 0 ? 0 : 1000, TransferTimeout) ;}	/* TODO: handle wild cards */	/* TODO: handle ZmodemTFile return code */static	voidUploadNext(){	int		f0,f1 ;	struct stat	buf ;static	char		filename[256], *ptr ;	int		len ;	if( filenamePtr != NULL ) {	  if( (ptr = strchr(filenamePtr, ' ')) == NULL ) {	    strcpy(filename, filenamePtr) ;	    filenamePtr = NULL ;	  }	  else {	    len = ptr-filenamePtr ;	    bcopy(filenamePtr, filename, len) ;	    filename[len] = '\0' ;	    filenamePtr += len+1 ;	  }	  WindowStatus("Sending %s", filename) ;	  if( stat(filename, &buf) == 0 )	    WindowXferGaugeMax(buf.st_size) ;	  else	    WindowXferGaugeMax(0) ;	  if( xferResume )	    f0 = ZCRESUM ;	  else if( xferAscii )	    f0 = ZCNL ;#ifdef	COMMENT	  else if( binary )	    f0 = ZCBIN ;#endif	/* COMMENT */	  else	    f0 = 0 ;	  f1 = xferType ;	  if( noLoc )	    f1 |= ZMSKNOLOC ;	  ZmodemTFile(filename, filename, f0,f1,0,0, 0,0, &info) ;	}	else	{	  WindowStatus("End of Transfers") ;	  WindowXferGaugeMax(0) ;	  ZmodemTFinish(&info) ;	  sending = False ;	}}voidDownload(char *files){	int	i ;	if( xferProtocol == XferKermit )	{	  WindowStatus("Kermit not yet supported") ;	  return ;	}	oldFlowControl = flowControl ;	info.zrinitflags = CANFDX|CANOVIO|CANBRK|CANFC32 ;	info.zsinitflags = 0 ;	info.attn = NULL ;#ifdef	COMMENT	info.bufsize = BufLen ;#endif	/* COMMENT */	info.bufsize = 0 ;	/* full streaming */	filenamePtr = files ;	transferActive = True ;	sending = False ;	SelectTermBuf() ;	if( connectionType == ConnectionSerial )	  SerialPortControl(-1, 8, ParityNone, -1, 0) ;	switch( xferProtocol ) {	  case XferZmodem: i = ZmodemRInit(&info) ; break ;	  case XferYmodem: i = YmodemRInit(&info) ; break ;	  case XferXmodem: WindowStatus("Xmodem not yet supported") ; return ;	}	WindowStatus("Waiting for remote to respond...") ;	dialogTimeout = info.timeout ;	zmodemlog("Download: set TransferTimout to %d\n", dialogTimeout) ;	timeoutSec = 0 ;	InstallDialogTimeout(dialogTimeout == 0 ? 0 : 1000, TransferTimeout) ;}voidXferCancel(){	ZmodemAbort(&info) ;	TransferFinish() ;}voidTransferFinish(){	transferActive = False ;	RemoveDialogTimeout() ;	SelectTermBuf() ;	if( connectionType == ConnectionSerial	    && oldFlowControl != flowControl )	{	  flowControl = oldFlowControl ;	  SerialSettings() ;	}	WindowTransferActive(False) ;	if( filenames != NULL ) {	  free(filenames) ;	  filenames = NULL ;	}}	/* data received from remote, pass it to Zmodem funcs */static	inttransferSendData(u_char *buffer, int len){	int	i ;	timeoutSec = 0 ;	i = ZmodemRcv(buffer, len, &info) ;	switch( i ) {	  case 0:	    return 0 ;	  case ZmDone:	  case ZmErrCantOpen:	  case ZmFileTooLong:	    if( sending )	      UploadNext() ;	    else	      TransferFinish() ;	    return 1 ;	  case ZmErrInt:	/* all of these have already displayed status */	  case ZmErrSys:	  case ZmErrNotOpen:	  case ZmFileCantWrite:	  case ZmErrInitTo:	  case ZmErrSequence:	  case ZmErrCancel:	  case ZmErrRcvTo:	  case ZmErrSndTo:	  case ZmErrCmdTo:	    TransferFinish() ;	    return 1 ;	}	return 0 ;}	/* data received from remote */voidTransferData(){	int	len ;	int	i ;	while( inputBuf.cnt > 0 )	{	  len = inputBuf.cnt ;	  if( inputBuf.ptr > 0 ) {	/* wrapped buffer, common case */	    if( inputBuf.ptr + len > BufLen )	      len = BufLen - inputBuf.ptr ;	  }	  i = transferSendData((u_char *)inputBuf.buffer+inputBuf.ptr, len) ;	  if( info.timeout != dialogTimeout ) {	    dialogTimeout = info.timeout ;	    zmodemlog("TransferData: reset TransferTimout to %d\n",		dialogTimeout) ;	    RemoveDialogTimeout() ;	    timeoutSec = 0 ;	    InstallDialogTimeout(dialogTimeout == 0 ? 0:1000, TransferTimeout);	  }	  if( (inputBuf.ptr += len) >= BufLen )	    inputBuf.ptr -= BufLen ;	  inputBuf.cnt -= len ;	  if( i != 0 )	    return ;	}	/* lucky us, we emptied the buffer.  Reset start pointer too,	 * to reduce wrapped buffers.	 */	inputBuf.ptr = 0 ;}	/* timeout from remote */static	boolTransferTimeout(void *data){	int	i ;	if( ++timeoutSec < dialogTimeout )	  return True ;	i = ZmodemTimeout(&info) ;	zmodemlog("TransferTimeout, ZmodemTimeout() returns %d\n", i);	if( info.timeout != dialogTimeout ) {	  dialogTimeout = info.timeout ;	  zmodemlog("TransferTimeout: reset TransferTimout to %d\n",	      dialogTimeout) ;	  RemoveDialogTimeout() ;	  InstallDialogTimeout(dialogTimeout == 0 ? 0 : 1000, TransferTimeout);	}	timeoutSec = 0 ;	switch( i ) {	  case ZmDone:	  case ZmErrCantOpen:	  case ZmFileTooLong:	    if( sending )	      UploadNext() ;	    else	      TransferFinish() ;	    break ;	  case ZmErrInt:	/* all of these have already displayed status */	  case ZmErrSys:	  case ZmErrNotOpen:	  case ZmFileCantWrite:	  case ZmErrInitTo:	  case ZmErrSequence:	  case ZmErrCancel:	  case ZmErrRcvTo:	  case ZmErrSndTo:	  case ZmErrCmdTo:	    TransferFinish() ;	    break ;	}	return transferActive ;}	/* user hit CANCEL */voidTransferCancel(){	ZmodemAttention(&info) ;}intZXmitStr(u_char *str, int len, ZModem *info){	if( ofd < 0 ) return -1 ;	append_buffer(&outputBuf, (char *)str, len, ofd) ;	flush_buffer(&outputBuf, ofd) ;	return 0 ;}voidZIFlush(ZModem *info){	if( connectionType == ConnectionSerial )	  SerialFlush(0) ;}voidZOFlush(ZModem *info){	if( connectionType == ConnectionSerial )	  SerialFlush(1) ;}intZAttn(ZModem *info){	char	*ptr ;	if( info->attn == NULL )	  return 0 ;	for(ptr = info->attn; *ptr != '\0'; ++ptr) {	  if( *ptr == ATTNBRK )	    SerialBreak() ;	  else if( *ptr == ATTNPSE )	    sleep(1) ;	  else	    append_buffer(&outputBuf, ptr, 1, ofd) ;	}	return 0 ;}	/* set flow control as required by protocol.  If original flow	 * control was hardware, do not change it.  Otherwise, toggle	 * software flow control	 */voidZFlowControl(int onoff, ZModem *info){	if( connectionType == ConnectionSerial && oldFlowControl != FlowRtsCts )	{	  flowControl = onoff ? FlowXonXoff : FlowNone ;	  SetHardwareFlow() ;	}}voidZStatus(int type, int value, char *msg){	switch( type )	{	  case RcvByteCount:	    WindowXferStatus("%d bytes received", value) ;	    WindowXferGauge(value) ;	    break ;	  case SndByteCount:	    WindowXferStatus("%d bytes sent", value) ;	    WindowXferGauge(value) ;	    break ;	  case RcvTimeout:	    WindowStatus("Receiver did not respond, aborting") ;	    break ;	  case SndTimeout:	    WindowStatus("%d send timeouts", value) ;	    break ;	  case RmtCancel:	    WindowStatus("Remote end has cancelled") ;	    break ;	  case ProtocolErr:	    WindowStatus("Protocol error, header=%d", value) ;	    break ;	  case RemoteMessage:	/* message from remote end */	    WindowStatus("MESSAGE: %s", msg) ;	    break ;	  case DataErr:		/* data error, val=error count */	    WindowStatus("%d data errors", value) ;	    break ;	  case FileErr:		/* error writing file, val=errno */	    WindowStatus("Cannot write file: %s", strerror(errno)) ;	    break ;	  case FileBegin:	/* file transfer begins, str=name */	    WindowStatus("Transfering %s", msg) ;	    break ;	  case FileEnd:		/* file transfer ends, str=name */	    WindowStatus("%s finished", msg) ;	    break ;	  case FileSkip:	/* file transfer ends, str=name */	    WindowStatus("Skipping %s", msg) ;	    break ;	}}FILE *ZOpenFile(char *name, u_long crc, ZModem *info){	struct stat	buf ;	bool		exists ;	/* file already exists */static	int		changeCount = 0 ;	char		name2[MAXPATHLEN] ;	int		apnd = 0 ;	int		f0,f1 ;	FILE		*ofile ;	char		path[1024] ;	/* TODO: if absolute path, do we want to allow it?	 * if relative path, do we want to prepend something?	 */	if( *name == '/' )	/* for now, disallow absolute paths */	  return NULL ;	buf.st_size = 0 ;	if( stat(name, &buf) == 0 )	  exists = True ;	else if( errno == ENOENT )	  exists = False ;	else	  return NULL ;	/* if remote end has not specified transfer flags, we can	 * accept the local definitions	 */	if( (f0=info->f0) == 0 ) {	  if( xferResume )	    f0 = ZCRESUM ;	  else if( xferAscii )	    f0 = ZCNL ;#ifdef	COMMENT	  else if( binary )	    f0 = ZCBIN ;#endif	/* COMMENT */	  else	    f0 = 0 ;	}	if( (f1=info->f1) == 0 ) {	  f1 = xferType ;	  if( noLoc )	    f1 |= ZMSKNOLOC ;	}	zmodemlog("ZOpenFile: %s, f0=%x, f1=%x, exists=%d, size=%d/%d\n",	  name, f0,f1, exists, buf.st_size, info->len) ;	if( f0 == ZCRESUM ) {	/* if exists, and we already have it, return */	  if( exists  &&  buf.st_size == info->len )	    return NULL ;	  apnd = 1 ;	}	/* reject if file not found and it must be there (ZMSKNOLOC) */	if( !exists && (f1 & ZMSKNOLOC) )	  return NULL ;	switch( f1 & ZMMASK ) {	  case 0:	/* Implementation-dependent.  In this case, we			 * reject if file exists (and ZMSKNOLOC not set) */	    if( exists && !(f1 & ZMSKNOLOC) )	      return NULL ;	    break ;	  case ZMNEWL:	/* take if newer or longer than file on disk */	    if( exists  &&  info->date <= buf.st_mtime  &&		info->len <= buf.st_size )	      return NULL ;	    break ;	  case ZMCRC:		/* take if different CRC or length */	    zmodemlog("  ZMCRC: crc=%x, FileCrc=%x\n", crc, FileCrc(name) );	    if( exists  &&  info->len == buf.st_size && crc == FileCrc(name) )	      return NULL ;	    break ;	  case ZMAPND:	/* append */	    apnd = 1 ;	  case ZMCLOB:	/* unconditional replace */	    break ;	  case ZMNEW:	/* take if newer than file on disk */	    if( exists  &&  info->date <= buf.st_mtime )	      return NULL ;	    break ;	  case ZMDIFF:	/* take if different date or length */	    if( exists  &&  info->date == buf.st_mtime  &&		info->len == buf.st_size )	      return NULL ;	    break ;	  case ZMPROT:	/* only if dest does not exist */	    if( exists )	      return NULL ;	    break ;	  case ZMCHNG:	/* invent new filename if exists */	    if( exists ) {	      while( exists ) {		sprintf(name2, "%s_%d", name, changeCount++) ;		exists = stat(name2, &buf) == 0 || errno != ENOENT ;	      }	      name = name2 ;	    }	    break ;	}	/* here if we've decided to accept */	if( exists && !apnd && unlink(name) != 0 )	  return NULL ;	/* TODO: build directory path if needed */	WindowStatus("Receiving: \"%s\"", name) ;	WindowXferGaugeMax(info->len) ;	ofile = fopen(name, apnd ? "a" : "w") ;	zmodemlog("  ready to open %s/%s: apnd = %d, file = %lx\n",	  getcwd(path,sizeof(path)), name, apnd, (long)ofile) ;	return ofile ;}intZWriteFile(u_char *buffer, int len, FILE *file, ZModem *info){	/* If ZCNL set in info->f0, convert	 * newlines to unix convention	 */	if( info->f0 == ZCNL )	{	  int	i, j, c ;	  static int lastc = '\0' ;	  for(i=0; i < len ; ++i)	  {	    switch( (c=*buffer++) ) {	      case '\n': if( lastc != '\r' ) j = putc('\n', file) ; break ;	      case '\r': if( lastc != '\n' ) j = putc('\n', file) ; break ;	      default: j = putc(c, file) ; break ;	    }	    lastc = c ;	    if( j == EOF )	      return ZmErrSys ;	  }	  return 0 ;	}	else	  return fwrite(buffer, 1, len, file) == len ? 0 : ZmErrSys ;}intZCloseFile(ZModem *info){	struct timeval tvp[2] ;	fclose(info->file) ;#ifdef	TODO	if( ymodem )	  truncate(info->filename, info->len) ;#endif	/* TODO */	if( info->date != 0 ) {	  tvp[0].tv_sec = tvp[1].tv_sec = info->date ;	  tvp[0].tv_usec = tvp[1].tv_usec = 0 ;	  utimes(info->filename, tvp) ;	}	if( info->mode & 01000000 )	  chmod(info->filename, info->mode&0777) ;	return 0 ;}voidZIdleStr(char *buf, int len, ZModem *info){	PutTerm(buf, len) ;}	/* marvelous kludge.  I want to perform a filename expansion	 * on the filename list, but I don't feel like writing that	 * code.  So instead, I let the shell do that for me.	 */static	char *filenameExpand(char *files){	char	*cmd, *rval, *ptr ;	int	i, len, max ;	FILE	*ifile ;	if( (cmd = malloc(strlen(files) + 10)) == NULL )	  return "" ;	sprintf(cmd, "echo %s", files) ;	ifile = popen(cmd, "r") ;	free(cmd) ;	/* if can't execute command, at least return *something* */	if( ifile == NULL )	  return strdup(files) ;	max = 512 ;	len = 0 ;	rval = malloc(max) ;	/* start reading results, increasing buffer if needed */	while( (i = fread(rval+len, 1, max-len-1, ifile)) > 0 )	{	  len += i ;	  if( len >= max-2 ) {	    max *= 2 ;	    if( (rval = realloc(rval, max)) == NULL ) {	      rval[len] = '\0' ;	      pclose(ifile) ;	      return rval ;	    }	  }	}	pclose(ifile) ;	rval[len] = '\0' ;	if( (ptr = strchr(rval, '\n')) != NULL )	  *ptr = '\0' ;	return rval ;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
caoporn国产精品| 久久久99免费| 欧美一卡在线观看| 亚洲一区二区三区不卡国产欧美| 成人听书哪个软件好| 国产女人18毛片水真多成人如厕| 国产精品99久久久久久似苏梦涵 | 在线免费不卡视频| 一区二区中文字幕在线| 成人免费毛片嘿嘿连载视频| 日韩av在线播放中文字幕| 欧美系列在线观看| 日日摸夜夜添夜夜添亚洲女人| 欧美一区二区三区四区在线观看| www.日韩在线| 国产永久精品大片wwwapp| 中文字幕不卡在线| 色综合天天综合狠狠| 亚洲最新在线观看| 日韩一级黄色大片| 国产一本一道久久香蕉| 日韩精品欧美精品| 一区二区三区四区蜜桃| 国产精品天天摸av网| 欧洲在线/亚洲| 成人18视频日本| 香蕉av福利精品导航| 精品国产乱码久久久久久1区2区| 丰满少妇久久久久久久| 亚洲欧洲性图库| 久久精品视频在线看| 欧美成人一区二区三区片免费| 国产成人av福利| 亚洲自拍偷拍欧美| 亚洲免费成人av| 欧美一级一级性生活免费录像| 欧美性做爰猛烈叫床潮| 91国产免费看| 国产精品456| 韩国一区二区三区| 亚洲在线视频网站| 亚洲欧美色图小说| 亚洲女性喷水在线观看一区| 亚洲天堂精品在线观看| 精品少妇一区二区三区日产乱码 | 麻豆精品视频在线观看视频| 国产精品色噜噜| 亚洲国产精品高清| 国产精品毛片大码女人| 日韩一区中文字幕| 亚洲六月丁香色婷婷综合久久| 精品久久五月天| 久久婷婷国产综合精品青草| 欧美日韩一级片在线观看| 成人永久aaa| 99久久99久久久精品齐齐| 久久精品国产久精国产| 亚洲国产综合91精品麻豆| 国产精品视频你懂的| 专区另类欧美日韩| 精品一区二区在线视频| 亚洲成人激情av| 男男视频亚洲欧美| 性做久久久久久免费观看 | 成人影视亚洲图片在线| av亚洲精华国产精华精| 欧洲一区在线观看| 欧美一区二区观看视频| 国产日韩在线不卡| 一区二区在线电影| 美腿丝袜在线亚洲一区| 高清不卡一二三区| 在线国产亚洲欧美| 日韩视频一区二区三区| 中文字幕不卡一区| 亚洲一区二区三区在线| 经典三级一区二区| 91美女精品福利| 91在线观看地址| 欧美久久久久久蜜桃| 欧美日韩一区在线| 精品国产凹凸成av人网站| 中文字幕在线播放不卡一区| 亚洲成人综合视频| 国产精品一区二区三区网站| 色狠狠综合天天综合综合| 欧美一级高清片| 一区精品在线播放| 美日韩黄色大片| 一本一道久久a久久精品| 91亚洲精品久久久蜜桃网站| 制服丝袜在线91| 日韩欧美美女一区二区三区| 日韩美女天天操| 亚洲欧美另类久久久精品 | 国产精品99久久久久久似苏梦涵| 日本道免费精品一区二区三区| 精品国产三级a在线观看| 国产不卡免费视频| 精品视频在线看| 国产精品萝li| 久久国产精品一区二区| 欧美午夜精品电影| 中文字幕高清一区| 精品一区二区影视| 欧美在线高清视频| 国产精品久久三| 亚洲美女偷拍久久| 国产成人精品亚洲777人妖| 欧美精品在线观看播放| 亚洲美女一区二区三区| 成人做爰69片免费看网站| 日韩午夜激情av| 亚洲h动漫在线| 色欧美片视频在线观看在线视频| 久久久久99精品国产片| 麻豆一区二区三区| 欧美剧情片在线观看| 有码一区二区三区| 波多野结衣的一区二区三区| 国产亚洲一区二区三区在线观看| 美女免费视频一区| 欧美精品在线一区二区三区| 亚洲最新视频在线播放| 一本高清dvd不卡在线观看| 欧美国产日韩在线观看| 国产一区二区三区综合| 日韩三级.com| 久久草av在线| 欧美一级二级三级蜜桃| 丝袜a∨在线一区二区三区不卡| 91久久精品国产91性色tv| 国产精品白丝在线| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 男男视频亚洲欧美| 欧美精品久久一区二区三区| 亚洲自拍偷拍网站| 欧美午夜精品一区二区蜜桃| 一区二区日韩av| 欧洲日韩一区二区三区| 亚洲午夜激情网站| 欧美日韩国产小视频在线观看| 亚洲精品一线二线三线| 经典三级在线一区| 国产日韩欧美精品综合| 成人午夜在线免费| 亚洲欧洲日韩综合一区二区| 色播五月激情综合网| 亚洲制服丝袜在线| 4438成人网| 国产专区欧美精品| 欧美精品一区二区蜜臀亚洲| 国产成人免费视| 中文字幕一区视频| 在线一区二区三区四区五区 | 国产露脸91国语对白| 国产日韩欧美激情| 99精品视频一区二区| 亚洲精品美国一| 69成人精品免费视频| 久色婷婷小香蕉久久| 日本一区二区三级电影在线观看 | 蜜桃免费网站一区二区三区| 26uuu精品一区二区| 成人小视频在线| 亚洲综合在线五月| 日韩欧美亚洲国产另类| 成人毛片视频在线观看| 一区二区三区在线观看视频| 欧美高清一级片在线| 经典一区二区三区| 国产精一品亚洲二区在线视频| 中文字幕一区三区| 91精品国产高清一区二区三区蜜臀| 久久99精品久久久久婷婷| 国产精品污网站| 欧美日韩小视频| 国产精品996| 亚洲国产视频a| 久久婷婷国产综合精品青草| 色综合天天综合网国产成人综合天 | 尤物av一区二区| 日韩午夜激情免费电影| 96av麻豆蜜桃一区二区| 日本成人在线电影网| 国产精品水嫩水嫩| 欧美一级高清大全免费观看| www.欧美日韩| 久久99精品久久久久久| 一区二区三区色| 国产农村妇女毛片精品久久麻豆| 91福利国产成人精品照片| 国产精品资源在线看| 亚洲成a人片在线观看中文| 欧美国产97人人爽人人喊| 欧美日韩和欧美的一区二区| 成人激情免费网站| 麻豆精品在线观看| 亚洲综合激情小说| 国产精品国产三级国产普通话99|