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

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

?? wjxt.txt

?? 做的操作系統(tǒng)課程設(shè)計(jì),是做的一個(gè)文件系統(tǒng). 可能調(diào)試的時(shí)候有點(diǎn)問題.但是思路是沒問題的.
?? TXT
字號(hào):
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
//#include <malloc.h>
#include <stdlib.h>


#define FILENAME_LEN 21
#define INPUT_LEN 81
#define COMMAND_LEN 11

struct FileNode 
{
	char filename[FILENAME_LEN];
	int isdir;
	int i_nlink;
	int adr;
	struct FileNode *parent, *child;
	struct FileNode *sibling_prev, *sibling_next;
};


void Init();

int cdComd();
int editComd();
int delComd();
int rdComd();
int dirComd();
int mdComd();

int FindPath(char *ph);
int FindFilename(char Para2[]);


struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//??????
int GetInput(char* buffer,unsigned int buffer_len);//????
int CheckCommand();//ü???
int GetDir(int begin,char* path,char* curDir);//??????
void Trim(char* str);

struct FileNode *cp, *tp, *root,*upper;
char path[INPUT_LEN-COMMAND_LEN];//??????????
char curpath[INPUT_LEN-COMMAND_LEN],Para1[COMMAND_LEN],
Para2[INPUT_LEN-COMMAND_LEN],tmppath[INPUT_LEN-COMMAND_LEN];
char filename[FILENAME_LEN],dirname[FILENAME_LEN],tmp;
unsigned int i,j;//int i,j;

//????
int main()
{
	Init();//??????hile(1)
	{
		if(ParseCommand())//????
			ExecuteCommand();//?Аü?
	}
}

//?Аü?????
void ExecuteCommand()
{
	int sign;
	//???Para1????????????鍊	if(strcmp(Para1,"cd")==0) 
		sign=cdComd();            //cdü?
	else if(strcmp(Para1,"edit")==0) 
		sign=editComd();         //editü?
	else if(strcmp(Para1,"del")==0) 
		sign=delComd();          //delü?
	else if(strcmp(Para1,"dir")==0) 
		sign=dirComd();          //dirü?
	else if(strcmp(Para1,"md")==0) 
		sign=mdComd();         //mdü?
	else if(strcmp(Para1,"rd")==0) 
		sign=rdComd();           //rdü?
	else if(strcmp(Para1,"exit")==0)
		exit(0);                         //exitü?
	else
		printf("ü???,???\n");  //ü?????????????}

//??????
struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink)
{
	//???????    struct FileNode* node=(struct FileNode*)malloc(sizeof(struct FileNode));
	//??ě?????
    strcpy(node->filename,filename);
	node->isdir=isdir;
	node->i_nlink=i_nlink;
	node->parent=NULL;
	node->child=NULL;
	node->sibling_prev=NULL;
	node->sibling_next=NULL;
    return node;
}

//??????id Init()
{
	struct FileNode *binNode,*usrNode,
		*unixNode,*etcNode,*libNode,*userNode,
		*binNode2,*liuNode,*sunNode,*ftiNode;
	strcpy(path,"/"); //??д????·??
	//?????????	binNode=CreateFileNode("bin",1,0);
	usrNode=CreateFileNode("usr",1,0);
	unixNode=CreateFileNode("unix",0,0);
	etcNode=CreateFileNode("etc",1,0);
	libNode=CreateFileNode("lib",1,0);
	userNode=CreateFileNode("user",1,0);
	binNode2=CreateFileNode("bin",1,0);
	liuNode=CreateFileNode("liu",1,0);
	sunNode=CreateFileNode("sun",1,0);
	ftiNode=CreateFileNode("fti",1,0);
	cp=tp=root=CreateFileNode("/",1,0);
	//????ě????
	root->parent=NULL;
	root->child=binNode;
	root->sibling_prev=root->sibling_next=NULL;
	
	binNode->parent=root;
	binNode->child=NULL;
	binNode->sibling_prev=NULL;
	binNode->sibling_next=usrNode;
	
	usrNode->parent=NULL;
	usrNode->child=libNode;
	usrNode->sibling_prev=binNode;
	usrNode->sibling_next=unixNode;
	
	unixNode->parent=NULL;
	unixNode->child=NULL;
	unixNode->sibling_prev=usrNode;
	unixNode->sibling_next=etcNode;
	
	etcNode->parent=NULL;
	etcNode->child=NULL;
	etcNode->sibling_prev=unixNode;
	etcNode->sibling_next=NULL;
	
	libNode->parent=usrNode;
	libNode->child=liuNode;
	libNode->sibling_prev=NULL;
	libNode->sibling_next=userNode;
	
	userNode->parent=NULL;
	userNode->child=NULL;
	userNode->sibling_prev=libNode;
	userNode->sibling_next=binNode2;
	
	binNode2->parent=NULL;
	binNode2->child=NULL;
	binNode2->sibling_prev=userNode;
	binNode2->sibling_next=NULL;
	
	liuNode->parent=libNode;
	liuNode->child=NULL;
	liuNode->sibling_prev=NULL;
	liuNode->sibling_next=sunNode;
	
	sunNode->parent=NULL;
	sunNode->child=NULL;
	sunNode->sibling_prev=liuNode;
	sunNode->sibling_next=ftiNode;
	
	ftiNode->parent=NULL;
	ftiNode->child=NULL;
	ftiNode->sibling_prev=sunNode;
	ftiNode->sibling_next=NULL;
	
}

//???????????????????ǘ??
int FindFilename(char Para2[])
{
	i=strlen(Para2)-1;
	j=0;
	
	while(Para2[i]!='/'&& i>=0)
	{	
		filename[j]=Para2[i];
		i--; j++;
	}
	filename[j]='\0';//???搲????????戫filename?
	if(i<0) Para2[i+1]='\0';
	else Para2[i]='\0';
	j--;
	//filename???????????
	for(i=0;i<strlen(filename)/2;i++,j--)
	{
		tmp=filename[i];
		filename[i]=filename[j];
		filename[j]=tmp;
	}
	
	//?鎰·??
	if(strlen(Para2)>0)
	{
		int sign=FindPath(Para2);
		if(sign==0) return 0;
	}
	return 1;
}

//???凸?????????
//???????r_len???????buffer_len-1????????
//buffer_len?????0'??int GetInput(char* buffer,unsigned int buffer_len)
{
	unsigned int count=0;//int count=0;
	while(count<buffer_len)
	{
		if((buffer[count]=getchar())==10)
		{
			buffer[count]='\0';
			return count;
		}
		count++;
	}
	while(getchar()!=10);
	buffer[buffer_len-1]='\0';
	return -1;
}	

//????????
int ParseCommand()
{
	char Inputs[INPUT_LEN];
	int i=0,j=0,ch;
	unsigned int k=0;//int k=0;
	
	printf("%s>",path);
	//????
	if(GetInput(Inputs,INPUT_LEN)==-1)
	{
		printf("??А?????\n");
		return 0;
	}
	
	Para1[0]=Para2[0]='\0';
	
	//????????????
	while(Inputs[i]!=' '&&Inputs[i]!='\0' && i<COMMAND_LEN-1)
	{   
		Para1[i]=Inputs[i];
		i++;
	}//while
	Para1[i]='\0';
	
	//??ü????
	if(i==(COMMAND_LEN-1))return 1;
	
	//?????·?????f(Inputs[i]!='\0')
	{    
		while(Inputs[i]==' ' && i<INPUT_LEN-1) i++;
		j=0;
		while(Inputs[i]!='\0'  && i<INPUT_LEN-1)
		{  
			Para2[j]=Inputs[i];
			i++; j++;
		}
		Para2[j]='\0';
	}
	Trim(Para1);
	Trim(Para2);
	
	//??????????????д??
	for(k=0;k<strlen(Para1);k++)
	{
		ch=tolower((int)Para1[k]);
		Para1[k]=ch;
	}
	return 1;
}

//cd??????????
int cdComd()
{
	if(!CheckCommand())//ü???
		return 0;
	
	if(strcmp(Para2,"..")==0)
	{          //??d ..ü?????
		int i;
		
		while(cp->sibling_prev)
			cp=cp->sibling_prev;//????????????
		if(cp->parent)
		{
			cp=cp->parent;//?????ǘ??
		}
		else
		{
			return 0;
		}
		//????·????????
		i=strlen(path);
		while(path[i]!='/'&& i>0) i--;
		
		if(i!=0)
			path[i]='\0';
		else
			path[i+1]='\0';
		
	}
	else
	{
		FindPath(Para2);//?鎰·??
	}
	return 1;
}

//ü??????????
void Trim(char* str)
{
	int begin,end;
	char* tmp;
	begin=0;
	end=strlen(str);
	
	//??????????????
	while(str[begin]==' ' && str[begin]!='\0')begin++;
	//????β??????while(str[--end]==' ');
	str[end+1]='\0';
	
	//????if(begin<end)
	{
		tmp=(char*)malloc((sizeof(char))*(end-begin+2));
		strcpy(tmp,&str[begin]);
		strcpy(str,tmp);
		free(tmp);
	}
	
}

//????????????
int GetDir(int begin,char* path,char* curDir)
{
	int i=0;
	int len=strlen(path);
	while(!((path[begin]=='\\' )|| (path[begin]=='/'))&&begin<len)
	{
		curDir[i++]=path[begin++];
	}
	curDir[i]='\0';
	Trim(curDir);
	return begin+1;
}

//?鎰·??????
int FindPath(char *ph) 
{
	struct FileNode *temp;//struct FileNode *tp,*temp;
	char oldpath[INPUT_LEN-COMMAND_LEN];
	unsigned int i=0;//int i=0;
	int sign=1;
	if(strcmp(ph,"/")==0)
	{          //ph???
		cp=root;
		strcpy(path,"/");
		return 1;
	}
	
	temp=cp;
	strcpy(oldpath,path);//???攭·??????
	if(ph[0]=='/')
	{          //???????????
		cp=root->child;
		i++;//???		strcpy(path,"/");
	}
	else 
	{
		if(cp!=NULL && cp!=root )
			strcat(path,"/");
		
		if(cp && cp->child)
		{
			if(cp->isdir)
				cp=cp->child; //??????????????
			else
			{
				printf("·????!\n");
				return 0;
			}
		}
	}
	while(i<=strlen(ph)&& cp)//??????·???????????
	{
		int j=0;
		if(ph[i]=='/'&& cp->child)
		{
			i++;//???
			if(cp->isdir)
				cp=cp->child;//????????
			else
			{
				printf("·????!\n");
				return 0;
			}
			strcat(path,"/");
		}
		
		
		//curpath ??????????????
		while(ph[i]!='/'&& i<=strlen(ph)) 
		{
			curpath[j]=ph[i];
			i++;  j++;
		}
		
		curpath[j]='\0';
		
		while((strcmp(cp->filename,curpath)!=0 || (cp->isdir!=1))&& cp->sibling_next!=NULL)
		{
			cp=cp->sibling_next;
		}
		
		if(strcmp(cp->filename,curpath)==0 )
		{
			if(cp->isdir==0)
			{
				strcpy(path,oldpath);
				cp=temp;
				printf("?????.\n");
				return 0; 
			}
			
			strcat(path,cp->filename);
		}
		
		if(strcmp(cp->filename,curpath)!=0 || cp==NULL) 
		{
			strcpy(path,oldpath);
			cp=temp;
			printf("??·????\n");
			return 0; 
		}
	}
	return 1;
}

//???????
int editComd()
{ 
	//char tmp;
	struct FileNode * temp=CreateFileNode("",0,0);
	int sign;
	struct FileNode *tp;
	
	//·????????
	if(strlen(Para2)==0)
	{
		printf("\nü????д?.\n");
		return 0;
	}
	//?????
	if(strlen(Para2)>50)
	{
		printf("\n???\n");
		return 0;
	}
	//????
	if (!(isalpha(Para2[0])||Para2[0]=='_'||Para2[0]=='\0'||Para2[0]=='/'))
	{
		printf("??????n");/* ???????'??'????'???????????'*/
		return 0;
	}
	
	//?????ign=FindFilename(Para2);
	if(sign==0)
		return 0;
	
	if(cp->isdir!=1)//??????????ǎ????	{
		printf("you cannot edit a file in under a file!\n");
		return 0;
	}
	
	//??????????別????????
	tp=CreateFileNode("",1,0);
	strcpy(tp->filename,filename);
	tp->isdir=0;
	tp->i_nlink=0;
	if(cp->child==NULL)
	{	tp->parent=cp;
	tp->child=NULL;
	cp->child=tp;
	tp->sibling_prev=NULL;
	tp->sibling_next=NULL;
	}
	else
	{	temp=cp;
	   //?temp???????別??
	temp=temp->child;
	while(temp->sibling_next )//find the last sibing node
	{
		temp=temp->sibling_next;
		if(strcmp(temp->filename,filename)==0&&temp->isdir==0)
		{
			printf("?????\n");//??????			return 0;
		}
	}//??????????	
	
	temp->sibling_next=tp;
	tp->parent=NULL;
	tp->child=NULL;
	tp->sibling_prev=temp;
	tp->sibling_next=NULL;
	
	}
	
	return 1;
}

//??????????
int mdComd()
{
	//	char tmp;
	int sign;
	struct FileNode * temp, *tp;
	temp=CreateFileNode("",1,0);
	//??????
	if(strlen(Para2)==0)
	{
		printf("\nü????д?.\n");
		return 0;
	}
	//?????
	if(strlen(Para2)>50)
	{
		printf("\n?????);
		return 0;
	}
	//????
	if (!(isalpha(Para2[0])||Para2[0]=='_'||Para2[0]=='\0'||Para2[0]=='/'))
    {
		printf("??????д?n");/* ?????????'??'????'???????????'*/
		return 0;
    }
	//?????? 
	sign=FindFilename(Para2);
	if(sign==0) return 0;
	
	//??????????ǎ????	if(cp->isdir!=1)
	{
		printf("you cannot make a directory in under a file!\n");
		return 0;
	}
	
	//?????????????別????????
	tp=CreateFileNode(filename,1,0);
	if(cp->child==NULL)
	{	tp->parent=cp;
	tp->child=NULL;
	cp->child=tp;
	tp->sibling_prev=NULL;
	tp->sibling_next=NULL;
	}
	else
	{	temp=cp;
	   //?temp???????別??
	temp=temp->child;
	while(temp->sibling_next )//find the last sibing node
	{
		temp=temp->sibling_next;
		if(strcmp(temp->filename,filename)==0&&temp->isdir==1)
		{
			printf("?????\n");//??????			return 0;
		}
	}//??????????	
	
	temp->sibling_next=tp;
	tp->parent=NULL;
	tp->child=NULL;
	tp->sibling_prev=temp;
	tp->sibling_next=NULL;
	
	}
	
	return 1;
}

//??????
int delComd()
{ 
	//	char tmp;
	int sign;
	struct FileNode *temp;
	//??????
	if(strlen(Para2)==0)
	{
		printf("\nü????д?.\n");
		return 0;
	}
	//?????ign=FindFilename(Para2);
	if(sign==0) return 0;
	
	//?temp???????	if(cp->child) 
	{
		temp=cp->child;
		while(temp->sibling_next && (strcmp(temp->filename,filename)!=0 || temp->isdir!=0))
			temp=temp->sibling_next;
		if(strcmp(temp->filename,filename)!=0)
		{
			printf("???攚????
			return 0;
		}
	}
	else
	{
		printf("???攚????
		return 0;
	}
	//????????
	if(temp->isdir!=0)
	{
		printf("ERROR!??????????????\n");
		return 0;
	}
	//????????????????(temp->i_nlink!=0)
	{
		printf("?????????????????;
		return 0;
	}
	//???
    if(temp->parent==NULL)//?????????
	{
		temp->sibling_prev->sibling_next=temp->sibling_next;
		if(temp->sibling_next)//????????????
			temp->sibling_next->sibling_prev=temp->sibling_prev;
		temp->sibling_prev=temp->sibling_next=NULL;
	}//if
	else//??????
	{ 
		if(temp->sibling_next)//????????????
			temp->sibling_next->parent=temp->parent;
		temp->parent->child=	temp->sibling_next;
	}//else
	
	free(temp);
	
	return 1;
}
//ü???????
int CheckCommand()
{
	if(strlen(Para2)==0)
	{
		printf("ü??????????\n");
		return 0;
	}
	return 1;
}

//??????
int rdComd()
{ 
	//	char tmp;
	struct FileNode *temp;
	char cmd[2];
	
	//ü???
	if(!CheckCommand())
		return 0;
	//??????
	if(!FindFilename(Para2))
		return 0;
	
	//?temp???????	if(cp->child) 
	{
		temp=cp->child;
		while(temp->sibling_next && (strcmp(temp->filename,filename)!=0|| temp->isdir!=1))
			temp=temp->sibling_next;
		if(strcmp(temp->filename,filename)!=0)
		{
			printf("???攚????!\n");
			return 0;
		}
	}
	else
	{
		printf("???攚????!\n");
		return 0;
	}
	
	//?????ǎ??temp->isdir!=1)
	{
		printf("ERROR!??????????????\n");
		return 0;
	}
	//???????????????????????(temp->child)
	{
		printf("\n?????????????????/N \n");
		
		GetInput(cmd,2);
		if(strcmp(cmd,"n")==0||strcmp(cmd,"N")==0)
			return 0;
	}
	//???
	if(temp->parent==NULL)//?????????
	{
		temp->sibling_prev->sibling_next=temp->sibling_next;
		if(temp->sibling_next)//????????????
			temp->sibling_next->sibling_prev=temp->sibling_prev;
		temp->sibling_prev=temp->sibling_next=NULL;
		
		
	}//if
	else//??????
	{ 
		if(temp->sibling_next)//????????????
			temp->sibling_next->parent=temp->parent;
		temp->parent->child=	temp->sibling_next;
	}//else
	
	free(temp);
	return 1;
}

//????????
int dirComd()
{
	if(strlen(Para2)>0)
	{
		int sign=FindPath(Para2);//?鎰·??
		if(sign==0)
		{
			return 0;
		}
		else
		{
			printf("\n%s>", path);
		}
	}
	
	if(cp!=root)
		printf("   <DIR>             %s\n","..");
	if(cp->child==NULL) 
	{
		return 0;//????????
	}
	
	tp=cp;
	//????????????????????????p=tp->child;
	while(tp)
	{
		if(tp->isdir)
			printf("   <DIR>             %s\n",tp->filename);
		else
			printf("   <FILE>            %s\n",tp->filename);
		tp=tp->sibling_next;
	}
	return 0;//????
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡一区视频| 国产成人在线电影| 国产欧美一区二区在线| 色综合天天视频在线观看| 麻豆视频一区二区| 最新国产の精品合集bt伙计| 欧美不卡一二三| 在线欧美小视频| 国产 日韩 欧美大片| 午夜电影久久久| 亚洲欧美日韩在线不卡| 久久久精品免费免费| 欧美一级欧美三级在线观看| 色综合天天综合狠狠| 国产成a人亚洲精品| 精品一区二区三区欧美| 天天操天天干天天综合网| 亚洲精品久久久蜜桃| 国产精品国产三级国产a| 精品国产乱码久久久久久闺蜜| 欧美浪妇xxxx高跟鞋交| 日本丶国产丶欧美色综合| 成人国产视频在线观看| 粉嫩欧美一区二区三区高清影视| 麻豆极品一区二区三区| 偷拍亚洲欧洲综合| 亚洲成av人在线观看| 亚洲一区二区av电影| 亚洲乱码精品一二三四区日韩在线| 国产精品网站一区| 欧美国产日韩a欧美在线观看| 精品国产髙清在线看国产毛片 | 免费看黄色91| 日日骚欧美日韩| 亚洲成av人影院| 丝袜美腿亚洲综合| 日韩在线一区二区| 蜜臀精品久久久久久蜜臀| 日韩经典一区二区| 喷白浆一区二区| 久久精品免费观看| 国产老妇另类xxxxx| 国产成人精品在线看| 国产suv精品一区二区6| 成人激情校园春色| 91无套直看片红桃| 色屁屁一区二区| 欧美日韩一级二级| 欧美一区三区二区| 精品国产sm最大网站免费看| 久久精品欧美日韩| 国产精品欧美综合在线| 日韩中文字幕亚洲一区二区va在线| 夜色激情一区二区| 亚洲mv大片欧洲mv大片精品| 日韩av一区二| 国模无码大尺度一区二区三区| 国产精品一级二级三级| 99麻豆久久久国产精品免费| 91精品福利在线| 777精品伊人久久久久大香线蕉| 91精品国产免费| 久久精品一区四区| 亚洲精品视频在线看| 调教+趴+乳夹+国产+精品| 狠狠色丁香婷综合久久| www.欧美亚洲| 欧美日韩和欧美的一区二区| 2024国产精品| 亚洲天堂av老司机| 日韩av一区二区三区四区| 国产一区二区福利视频| 色综合久久66| 欧美电视剧在线观看完整版| 国产精品人成在线观看免费| 亚洲国产精品久久久久秋霞影院| 久久激情五月激情| 97精品国产露脸对白| 欧美一区二区三区四区高清| 国产精品网曝门| 日本成人超碰在线观看| www.性欧美| 日韩欧美的一区二区| 中文字幕中文乱码欧美一区二区 | 日韩免费在线观看| 国产精品不卡视频| 美女一区二区久久| 91在线观看高清| 精品动漫一区二区三区在线观看| 亚洲欧美另类小说| 国产美女主播视频一区| 欧美日韩不卡在线| 亚洲天堂av老司机| 国产一区二区三区在线观看精品| 欧美又粗又大又爽| 国产视频一区在线观看| 日韩中文字幕av电影| 91尤物视频在线观看| 久久蜜桃一区二区| 日韩1区2区3区| 欧美亚洲动漫另类| 中文字幕在线一区| 国内外成人在线视频| 欧美日韩成人高清| 亚洲与欧洲av电影| 成人av电影观看| 久久精品视频一区| 蜜桃精品在线观看| 91国产福利在线| 1区2区3区精品视频| 国产精品综合网| 欧美不卡在线视频| 免费的成人av| 欧美视频一区在线观看| 亚洲图片另类小说| 不卡欧美aaaaa| 久久久精品国产99久久精品芒果| 日韩激情一二三区| 欧美日韩在线亚洲一区蜜芽| ...xxx性欧美| www.亚洲免费av| 国产精品久久三区| 丰满少妇在线播放bd日韩电影| 26uuu精品一区二区三区四区在线| 日韩电影在线一区| 69堂亚洲精品首页| 日韩国产欧美在线播放| 欧美日韩日本视频| 亚洲成人动漫精品| 欧美日韩精品欧美日韩精品一综合| 亚洲人成小说网站色在线| 成人app在线观看| 国产精品乱人伦一区二区| 懂色av一区二区三区免费观看 | 99久久综合精品| 国产精品国产精品国产专区不片 | 国产成人啪午夜精品网站男同| 欧美电影免费观看高清完整版在| 奇米四色…亚洲| 精品久久一区二区| 国产九色sp调教91| 国产女主播一区| proumb性欧美在线观看| 亚洲日本va午夜在线影院| 91在线视频18| 亚洲午夜精品网| 欧美精品久久99| 精品一区二区三区在线播放| 久久久国产午夜精品| 国产成人精品三级| 国产精品乱子久久久久| 日本伦理一区二区| 性久久久久久久久| 日韩你懂的在线观看| 国产精品66部| 亚洲欧美一区二区视频| 欧美午夜精品一区二区三区| 日韩精品色哟哟| 久久伊人中文字幕| 成人久久久精品乱码一区二区三区| 中文字幕亚洲精品在线观看 | 日韩一级片网站| 韩国av一区二区三区四区| 日本一区二区不卡视频| 日本伦理一区二区| 免费视频一区二区| 国产欧美日韩亚州综合| 欧洲国内综合视频| 免费在线观看不卡| 欧美国产乱子伦 | 蜜桃一区二区三区四区| 久久奇米777| 91视频一区二区| 日本亚洲天堂网| 国产精品免费av| 欧美日韩精品福利| 国产丶欧美丶日本不卡视频| 国产真实乱对白精彩久久| 一色屋精品亚洲香蕉网站| 欧美日韩国产乱码电影| 国产二区国产一区在线观看| 亚洲成a人片在线不卡一二三区| 欧美精品一区二区三区蜜桃| 色婷婷激情综合| 国产一区二区视频在线播放| 一区二区三区在线观看欧美| 久久婷婷国产综合国色天香| 欧美性三三影院| 福利一区二区在线| 免费成人av在线播放| 亚洲人成小说网站色在线| 欧美大片国产精品| 欧美曰成人黄网| 成人白浆超碰人人人人| 美脚の诱脚舐め脚责91| 亚洲精品成人天堂一二三| 久久久一区二区三区捆绑**| 91浏览器在线视频| 国产乱国产乱300精品| 热久久免费视频|