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

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

?? cfg.cpp

?? FastCopy 利用緩沖技術加快文件拷貝
?? CPP
字號:
static char *cfg_id = 
	"@(#)Copyright (C) H.Shirouzu 2004-2007   cfg.cpp	Ver1.52";
/* ========================================================================
	Project  Name			: Fast/Force copy file and directory
	Create					: 2004-09-15(Wed)
	Update					: 2007-02-06(Tue)
	Copyright				: H.Shirouzu
	Reference				: 
	======================================================================== */

#include "mainwin.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stddef.h>

#define FASTCOPY_INI			"fastcopy.ini"
#define MAIN_SECTION			"main"
#define SRC_HISTORY				"src_history"
#define DST_HISTORY				"dst_history"
#define INC_HISTORY				"include_history"
#define EXC_HISTORY				"exclude_history"
#
#define MAX_HISTORY_KEY			"max_history"
#define COPYMODE_KEY			"default_copy_mode"
#define COPYFLAGS_KEY			"default_copy_flags"
#define SKIPEMPTYDIR_KEY		"skip_empty_dir"
#define FORCESTART_KEY			"force_start"
#define IGNORE_ERR_KEY			"ignore_error"
#define ESTIMATE_KEY			"estimate_mode"
#define DISKMODE_KEY			"disk_mode"
#define ISTOPLEVEL_KEY			"is_toplevel"
#define ISERRLOG_KEY			"is_errlog"
#define ISSAMEDIRRENAME_KEY		"is_samedir_rename"
#define BUFSIZE_KEY				"bufsize"
#define MAXTRANSSIZE_KEY		"max_transize"
#define MAXOPENFILES_KEY		"max_openfiles"
#define MAXATTRSIZE_KEY			"max_attrsize"
#define MAXDIRSIZE_KEY			"max_dirsize"
#define SHEXTAUTOCLOSE_KEY		"shext_autoclose"
#define SHEXTTASKTRAY_KEY		"shext_tasktray"
#define SHEXTDDNOCONFIRM_KEY	"shext_dd_noconfirm"
#define SHEXTRNOCONFIRM_KEY		"shext_right_noconfirm"
#define EXECCONRIM_KEY			"exec_confirm"
#define FORCESTART_KEY			"force_start"
#define LCID_KEY				"lcid"
#define LOGFILE_KEY				"logfile"
#define AUTOSLOW_KEY			"autoslow"
#define ISAUTOSLOW_KEY			"is_autoslow"
#define ISAUTOSLOWIO_KEY		"is_autoslow_io"

#define NONBUFMINSIZENTFS_KEY	"nonbuf_minsize_ntfs2"
#define NONBUFMINSIZEFAT_KEY	"nonbuf_minsize_fat"

#define FMT_JOB_KEY				"job_%d"
#define TITLE_KEY				"title"
#define CMD_KEY					"cmd"
#define SRC_KEY					"src"
#define DST_KEY					"dst"
#define FILTER_KEY				"filter"
#define INCLUDE_KEY				"include_filter"
#define EXCLUDE_KEY				"exclude_filter"

#define DEFAULT_MAX_HISTORY		10
#define DEFAULT_COPYMODE		1
#define DEFAULT_COPYFLAGS		0
#define DEFAULT_EMPTYDIR		1
#define DEFAULT_FORCESTART		0
#define DEFAULT_BUFSIZE			32
#define DEFAULT_MAXTRANSSIZE	8
#define DEFAULT_MAXATTRSIZE		(128 * 1024 * 1024)
#define DEFAULT_MAXDIRSIZE		(128 * 1024 * 1024)
#define DEFAULT_MAXOPENFILES	256
#define DEFAULT_NBMINSIZE_NTFS	64		// nbMinSize 嶲徠
#define DEFAULT_NBMINSIZE_FAT	128		// nbMinSize 嶲徠
#define DEFAULT_AUTOSLOW		30
#define JOB_MAX					1000
#define DEFAULT_FASTCOPYLOG		"fastcopy.log"

/*=========================================================================
  僋儔僗 丗 Cfg
  奣  梫 丗 僐儞僼傿僌僋儔僗
  愢  柧 丗 
  拲  堄 丗 
=========================================================================*/
Cfg::Cfg()
{
	char	buf[MAX_PATH], path[MAX_PATH], *fname = NULL;

	::GetModuleFileName(NULL, buf, sizeof(buf));
	::GetFullPathName(buf, sizeof(path), path, &fname);

	execPath = strdup(path);
	if (fname) {
		*fname = 0;
		execDir = strdup(path);
	}
	else {
		execDir = strdup(".\\");
	}

	MakePath(path, execDir, FASTCOPY_INI);
	ini.Init(path);
}

Cfg::~Cfg()
{
	free(execPath);
	free(execDir);
}

BOOL Cfg::ReadIni(void)
{
	char	key[100];
	char	*buf = new char [MAX_HISTORY_CHAR_BUF];
	WCHAR	*wbuf = new WCHAR [MAX_HISTORY_BUF];
	char	*section_array[] = { SRC_HISTORY, DST_HISTORY, INC_HISTORY, EXC_HISTORY };
	void	***history_array[] = { &srcPathHistory, &dstPathHistory, &includeHistory, &excludeHistory };

	srcPathHistory	= NULL;
	dstPathHistory	= NULL;
	includeHistory	= NULL;
	excludeHistory	= NULL;

	jobArray = NULL;
	jobMax = 0;

	ini.SetSection(MAIN_SECTION);
	bufSize			= ini.GetInt(BUFSIZE_KEY, DEFAULT_BUFSIZE);
	maxTransSize	= ini.GetInt(MAXTRANSSIZE_KEY, DEFAULT_MAXTRANSSIZE);
	maxOpenFiles	= ini.GetInt(MAXOPENFILES_KEY, DEFAULT_MAXOPENFILES);
	maxAttrSize		= ini.GetInt(MAXATTRSIZE_KEY, DEFAULT_MAXATTRSIZE);
	maxDirSize		= ini.GetInt(MAXDIRSIZE_KEY, DEFAULT_MAXDIRSIZE);
	nbMinSizeNtfs	= ini.GetInt(NONBUFMINSIZENTFS_KEY, DEFAULT_NBMINSIZE_NTFS);
	nbMinSizeFat	= ini.GetInt(NONBUFMINSIZEFAT_KEY, DEFAULT_NBMINSIZE_FAT);
	maxHistoryNext	= maxHistory = ini.GetInt(MAX_HISTORY_KEY, DEFAULT_MAX_HISTORY);
	copyMode		= ini.GetInt(COPYMODE_KEY, DEFAULT_COPYMODE);
	copyFlags		= ini.GetInt(COPYFLAGS_KEY, DEFAULT_COPYFLAGS);
	skipEmptyDir	= ini.GetInt(SKIPEMPTYDIR_KEY, DEFAULT_EMPTYDIR);
	forceStart		= ini.GetInt(FORCESTART_KEY, DEFAULT_FORCESTART);
	ignoreErr		= ini.GetInt(IGNORE_ERR_KEY, TRUE);
	estimateMode	= ini.GetInt(ESTIMATE_KEY, 0);
	diskMode		= ini.GetInt(DISKMODE_KEY, 0);
	isTopLevel		= ini.GetInt(ISTOPLEVEL_KEY, FALSE);
	isErrLog		= ini.GetInt(ISERRLOG_KEY, TRUE);
	isSameDirRename	= ini.GetInt(ISSAMEDIRRENAME_KEY, TRUE);
	shextAutoClose	= ini.GetInt(SHEXTAUTOCLOSE_KEY, TRUE);
	shextTaskTray	= ini.GetInt(SHEXTTASKTRAY_KEY, FALSE);
	shextDdNoConfirm = ini.GetInt(SHEXTDDNOCONFIRM_KEY, FALSE);
	shextRNoConfirm	= ini.GetInt(SHEXTRNOCONFIRM_KEY, FALSE);
	execConfirm		= ini.GetInt(EXECCONRIM_KEY, FALSE);
	lcid			= ini.GetInt(LCID_KEY, -1);
	autoSlow		= ini.GetInt(AUTOSLOW_KEY, DEFAULT_AUTOSLOW);
	isAutoSlow		= ini.GetInt(ISAUTOSLOW_KEY, FALSE);
	isAutoSlowIo	= ini.GetInt(ISAUTOSLOWIO_KEY, TRUE);

/* logfile */
	ini.GetStr(LOGFILE_KEY, buf, MAX_PATH, DEFAULT_FASTCOPYLOG);
	IniStrToV(buf, wbuf);
	if (lstrchrV(wbuf, '\\') == NULL) {
		MakePathV(buf, IS_WINNT_V ? (void *)AtoW(execDir) : (void *)execDir, wbuf);
		logPath = strdupV(buf);
	}
	else {
		logPath = strdupV(wbuf);
	}

/* History */
	int	i, j;
	for (i=0; i < sizeof(section_array) / sizeof(char *); i++) {
		char	*&section = section_array[i];
		void	**&history = *history_array[i];

		ini.SetSection(section);
		history = (void **)calloc(maxHistory, sizeof(WCHAR *));
		for (j=0; j < maxHistory + 30; j++) {
			wsprintf(key, "%d", j);
			if (j < maxHistory) {
				ini.GetStr(key, buf, MAX_HISTORY_CHAR_BUF, "");
				IniStrToV(buf, wbuf);
				history[j] = strdupV(wbuf);
			}
			else if (!ini.DelKey(key))
				break;
		}
	}

/* Job */
	for (i=0; i < JOB_MAX; i++) {
		wsprintf(buf, FMT_JOB_KEY, i);
		Job	job;

		ini.SetSection(buf);
		if (ini.GetStr(TITLE_KEY, buf, MAX_HISTORY_CHAR_BUF) <= 0)
			break;
		IniStrToV(buf, wbuf);
		job.title = strdupV(wbuf);

		ini.GetStr(SRC_KEY, buf, MAX_HISTORY_CHAR_BUF);
		IniStrToV(buf, wbuf);
		job.src = strdupV(wbuf);

		ini.GetStr(DST_KEY, buf, MAX_HISTORY_CHAR_BUF);
		IniStrToV(buf, wbuf);
		job.dst = strdupV(wbuf);

		ini.GetStr(CMD_KEY, buf, MAX_HISTORY_CHAR_BUF);
		IniStrToV(buf, wbuf);
		job.cmd = strdupV(wbuf);

		ini.GetStr(INCLUDE_KEY, buf, MAX_HISTORY_CHAR_BUF);
		IniStrToV(buf, wbuf);
		job.includeFilter = strdupV(wbuf);

		ini.GetStr(EXCLUDE_KEY, buf, MAX_HISTORY_CHAR_BUF);
		IniStrToV(buf, wbuf);
		job.excludeFilter = strdupV(wbuf);

		job.estimateMode = ini.GetInt(ESTIMATE_KEY, 0);
		job.diskMode = ini.GetInt(DISKMODE_KEY, 0);
		job.ignoreErr = ini.GetInt(IGNORE_ERR_KEY, TRUE);
		job.isFilter = ini.GetInt(FILTER_KEY, FALSE);
		job.bufSize = ini.GetInt(BUFSIZE_KEY, DEFAULT_BUFSIZE);

		AddJob(&job);
	}

	if (::GetFileAttributes(ini.GetIniFileName()) == 0xffffffff) {
		WriteIni();
	}
	delete [] wbuf;
	delete [] buf;

	return	TRUE;
}

BOOL Cfg::WriteIni(void)
{
	ini.SetSection(MAIN_SECTION);
	ini.SetInt(BUFSIZE_KEY, bufSize);
	ini.SetInt(MAXTRANSSIZE_KEY, maxTransSize);
//	ini.SetInt(MAXOPENFILES_KEY, maxOpenFiles);
	ini.SetInt(NONBUFMINSIZENTFS_KEY, nbMinSizeNtfs);
	ini.SetInt(NONBUFMINSIZEFAT_KEY, nbMinSizeFat);
	ini.SetInt(MAX_HISTORY_KEY, maxHistoryNext);
	ini.SetInt(COPYMODE_KEY, copyMode);
//	ini.SetInt(COPYFLAGS_KEY, copyFlags);
	ini.SetInt(SKIPEMPTYDIR_KEY, skipEmptyDir);
	ini.SetInt(IGNORE_ERR_KEY, ignoreErr);
	ini.SetInt(ESTIMATE_KEY, estimateMode);
	ini.SetInt(DISKMODE_KEY, diskMode);
	ini.SetInt(ISTOPLEVEL_KEY, isTopLevel);
	ini.SetInt(ISERRLOG_KEY, isErrLog);
	ini.SetInt(ISSAMEDIRRENAME_KEY, isSameDirRename);
	ini.SetInt(SHEXTAUTOCLOSE_KEY, shextAutoClose);
	ini.SetInt(SHEXTTASKTRAY_KEY, shextTaskTray);
	ini.SetInt(SHEXTDDNOCONFIRM_KEY, shextDdNoConfirm);
	ini.SetInt(SHEXTRNOCONFIRM_KEY, shextRNoConfirm);
	ini.SetInt(EXECCONRIM_KEY, execConfirm);
	ini.SetInt(FORCESTART_KEY, forceStart);
//	ini.SetInt(LCID_KEY, lcid);
//	ini.SetInt(AUTOSLOW_KEY, autoSlow);
	ini.SetInt(ISAUTOSLOW_KEY, isAutoSlow);
	ini.SetInt(ISAUTOSLOWIO_KEY, isAutoSlowIo);

	char	*section_array[] = { SRC_HISTORY, DST_HISTORY, INC_HISTORY, EXC_HISTORY };
	void	***history_array[] = { &srcPathHistory, &dstPathHistory, &includeHistory, &excludeHistory };
	int		i, j;
	char	key[100];
	char	*buf = new char [MAX_HISTORY_CHAR_BUF];

	for (i=0; i < sizeof(section_array) / sizeof(char *); i++) {
		char	*&section = section_array[i];
		void	**&history = *history_array[i];

		ini.SetSection(section);
		for (j=0; j < maxHistory; j++) {
			wsprintf(key, "%d", j);
			VtoIniStr(history[j], buf);
			if (j < maxHistoryNext)
				ini.SetStr(key, buf);
			else
				ini.DelKey(key);
		}
	}

	for (i=0; i < jobMax; i++) {
		wsprintf(buf, FMT_JOB_KEY, i);
		Job *job = jobArray[i];

		ini.SetSection(buf);

		VtoIniStr(job->title, buf);
		ini.SetStr(TITLE_KEY,		buf);

		VtoIniStr(job->src, buf);
		ini.SetStr(SRC_KEY,			buf);

		VtoIniStr(job->dst, buf);
		ini.SetStr(DST_KEY,			buf);

		VtoIniStr(job->cmd, buf);
		ini.SetStr(CMD_KEY,			buf);

		VtoIniStr(job->includeFilter, buf);
		ini.SetStr(INCLUDE_KEY,		buf);

		VtoIniStr(job->excludeFilter, buf);
		ini.SetStr(EXCLUDE_KEY,		buf);

		ini.SetInt(ESTIMATE_KEY,	job->estimateMode);
		ini.SetInt(DISKMODE_KEY,	job->diskMode);
		ini.SetInt(IGNORE_ERR_KEY,	job->ignoreErr);
		ini.SetInt(FILTER_KEY,		job->isFilter);
		ini.SetInt(BUFSIZE_KEY,		job->bufSize);
	}
	wsprintf(buf, FMT_JOB_KEY, i);
	ini.DelSection(buf);

	delete [] buf;

	return	TRUE;
}

BOOL Cfg::EntryPathHistory(void *src, void *dst)
{
	void	*path_array[] = { src, dst };
	void	***history_array[] = { &srcPathHistory, &dstPathHistory };

	return	EntryHistory(path_array, history_array, 2);
}

BOOL Cfg::EntryFilterHistory(void *inc, void *exc)
{
	void	*path_array[] = { inc, exc };
	void	***history_array[] = { &includeHistory, &excludeHistory };

	return	EntryHistory(path_array, history_array, 2);
}

BOOL Cfg::EntryHistory(void **path_array, void ****history_array, int max)
{
	BOOL	ret = TRUE;
	void	*target_path;

	for (int i=0; i < max; i++) {
		int		idx;
		void	*&path = path_array[i];
		void	**&history = *history_array[i];

		if (strlenV(path) >= MAX_HISTORY_BUF || GetChar(path, 0) == 0) {
			ret = FALSE;
			continue;
		}
		for (idx=0; idx < maxHistory; idx++) {
			if (lstrcmpiV(path, history[idx]) == 0)
				break;
		}
		if (idx) {
			if (idx == maxHistory) {
				target_path = strdupV(path);
				free(history[--idx]);
			}
			else {
				target_path = history[idx];
			}
			memmove(history + 1, history, idx * sizeof(void *));
			history[0] = target_path;
		}
	}
	return	ret;
}

BOOL Cfg::IniStrToV(char *inipath, void *path)
{
	if (IS_WINNT_V) {
		int		len = strlen(inipath) + 1;
		if (*inipath == '|') {
			hexstr2bin(inipath + 1, (BYTE *)path, len, &len);
		}
		else
			::MultiByteToWideChar(CP_ACP, 0, (char *)inipath, -1, (WCHAR *)path, len);
	}
	else
		strcpyV(path, inipath);

	return	TRUE;
}

BOOL Cfg::VtoIniStr(void *path, char *inipath)
{
	if (IS_WINNT_V) {
		int		len = (strlenV(path) + 1) * CHAR_LEN_V;
		int		err_cnt = 0;

		*inipath = 0;
		if (!::WideCharToMultiByte(CP_ACP, 0, (WCHAR *)path, -1, inipath, len, 0, &err_cnt))
			return	FALSE;

		if (err_cnt) {
			*inipath = '|';
			bin2hexstr((BYTE *)path, len, inipath + 1);
		}
	}
	else
		strcpyV(inipath, path);

	return	TRUE;
}

int Cfg::SearchJobV(void *title)
{
	for (int i=0; i < jobMax; i++) {
		if (lstrcmpiV(jobArray[i]->title, title) == 0)
			return	i;
	}
	return	-1;
}

BOOL Cfg::AddJob(const Job *job)
{
	if (GetChar(job->title, 0) == 0 || strlenV(job->src) >= MAX_HISTORY_BUF || GetChar(job->src, 0) == 0)
		return	FALSE;

	int idx = SearchJobV(job->title);

	if (idx >= 0) {
		delete jobArray[idx];
		jobArray[idx] = new Job(*job);
		return TRUE;
	}

#define ALLOC_JOB	100
	if ((jobMax % ALLOC_JOB) == 0)
		jobArray = (Job **)realloc(jobArray, sizeof(Job *) * (jobMax + ALLOC_JOB));

	for (idx=0; idx < jobMax; idx++) {
		if (lstrcmpiV(jobArray[idx]->title, job->title) > 0)
			break;
	}
	memmove(jobArray + idx + 1, jobArray + idx, sizeof(Job *) * (jobMax++ - idx));
	jobArray[idx] = new Job(*job);
	return	TRUE;
}

BOOL Cfg::DelJobV(void *title)
{
	int idx = SearchJobV(title);
	if (idx == -1)
		return	FALSE;

	delete jobArray[idx];
	memmove(jobArray + idx, jobArray + idx + 1, sizeof(Job *) * (--jobMax - idx));
	return	TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日骚欧美日韩| 欧美国产禁国产网站cc| 成人avav影音| 国产91精品一区二区麻豆亚洲| 久久精品99国产精品日本| 亚洲成人激情综合网| 五月天国产精品| 狠狠色狠狠色综合| 成人黄色软件下载| 美腿丝袜亚洲综合| 成人一级片网址| 国产精品色婷婷久久58| 99天天综合性| 亚洲一区二区三区中文字幕 | 一本高清dvd不卡在线观看| 国产精品久久久久久久久搜平片 | 久久99九九99精品| 色呦呦网站一区| 亚洲成a人在线观看| 午夜精品一区二区三区电影天堂| av在线一区二区三区| 99re这里只有精品视频首页| 午夜私人影院久久久久| 国产麻豆日韩欧美久久| 欧美日韩一级片在线观看| 亚洲欧美经典视频| 91国偷自产一区二区三区观看 | 3d动漫精品啪啪1区2区免费| 国产欧美一区二区精品婷婷| 青青草原综合久久大伊人精品| 成人网页在线观看| 国产女人18毛片水真多成人如厕| 日韩国产欧美三级| 91豆麻精品91久久久久久| 国产精品美女久久久久av爽李琼 | 国产午夜精品久久久久久免费视| 色呦呦网站一区| 久久久亚洲精华液精华液精华液 | 久久综合色综合88| 日本一区二区免费在线观看视频 | 91小视频免费看| 另类调教123区| 欧美精品视频www在线观看 | 92精品国产成人观看免费| 日本一区二区高清| 国产1区2区3区精品美女| 国产亚洲欧美色| 久久精品视频一区二区三区| 午夜精品在线视频一区| 奇米综合一区二区三区精品视频| 国产传媒一区在线| 紧缚捆绑精品一区二区| 九九视频精品免费| 日韩—二三区免费观看av| 国模套图日韩精品一区二区| 国产一区在线视频| 一区二区三区国产精品| a美女胸又www黄视频久久| 国产精品久久久一本精品| 欧美久久久影院| 国产精品一区久久久久| 亚洲高清免费在线| 亚洲欧美日韩国产一区二区三区| 精品欧美久久久| 欧美精品色综合| 欧洲视频一区二区| 色哟哟国产精品| fc2成人免费人成在线观看播放 | 日韩av电影天堂| 亚洲精品成人悠悠色影视| 国产精品第13页| 欧美激情一区在线| 久久精品一区二区三区不卡 | 国产亚洲一区二区三区在线观看 | a级高清视频欧美日韩| 国产91精品在线观看| 欧美精品丝袜久久久中文字幕| 精品在线你懂的| 蜜臀av一区二区在线观看| 日韩精品一区第一页| 五月激情六月综合| 日韩不卡一二三区| 美美哒免费高清在线观看视频一区二区| 水蜜桃久久夜色精品一区的特点| 亚洲国产欧美另类丝袜| 亚洲国产你懂的| 日本不卡高清视频| 精品一区二区久久久| 国产精品影视天天线| 国产在线不卡一卡二卡三卡四卡| 国产一区二区三区观看| 国产成人鲁色资源国产91色综 | 国内精品在线播放| 国产在线播放一区| 国产99久久久国产精品潘金网站| 成人av资源站| 欧美视频一区二| 欧美一区二区三区视频在线| 精品久久一二三区| 国产精品久久久久久久久快鸭 | 欧美成人艳星乳罩| 国产性色一区二区| 亚洲一区在线观看免费 | 日本一区二区在线不卡| 中文字幕一区av| 亚洲va欧美va人人爽午夜| 精品一区二区在线视频| 丁香啪啪综合成人亚洲小说| 欧美中文字幕久久| 精品理论电影在线| 亚洲精品国产精品乱码不99| 青青草原综合久久大伊人精品优势| 国产传媒一区在线| 欧美日韩成人一区二区| 国产亚洲一区字幕| 亚洲成人激情自拍| 国产宾馆实践打屁股91| 欧美日韩国产首页| 久久精品欧美日韩| 日韩精品福利网| av在线播放不卡| 精品少妇一区二区三区| 亚洲欧美日韩综合aⅴ视频| 视频在线观看一区| av不卡在线观看| 日韩欧美国产三级电影视频| 亚洲欧美日韩国产手机在线| 久久99国产精品免费| 日本韩国欧美三级| 久久久久久久久免费| 一区二区三区产品免费精品久久75| 久久99最新地址| 欧美日韩在线播放三区四区| 欧美国产欧美综合| 蜜乳av一区二区三区| 欧美综合天天夜夜久久| 国产欧美一区二区精品久导航| 日韩avvvv在线播放| 91国在线观看| 1区2区3区欧美| 国产精品一二三区在线| 91麻豆精品国产| 一区二区三区四区不卡在线| 国产超碰在线一区| 精品盗摄一区二区三区| 丝袜a∨在线一区二区三区不卡| 色悠悠久久综合| 亚洲色图在线播放| 国产99久久久国产精品潘金| 精品嫩草影院久久| 日本午夜精品一区二区三区电影| 91原创在线视频| 久久精品日韩一区二区三区| 久久99久久精品| 日韩欧美亚洲另类制服综合在线| 天天做天天摸天天爽国产一区| 欧美午夜精品一区| 一区二区三区四区在线| 一本色道久久加勒比精品| 中文字幕一区二区三区蜜月| 大白屁股一区二区视频| 国产午夜精品一区二区三区视频| 久久99精品一区二区三区| 日韩欧美三级在线| 免费高清视频精品| 日韩免费高清视频| 国模无码大尺度一区二区三区| 精品国产91乱码一区二区三区| 久久99九九99精品| 国产亚洲一区二区三区在线观看| 国产v日产∨综合v精品视频| 国产亚洲欧美日韩俺去了| 国产精品99久久久久久有的能看 | 毛片一区二区三区| 欧美一区二区三区白人| 美女一区二区三区| 欧美mv日韩mv国产| 大桥未久av一区二区三区中文| 国产精品国产三级国产aⅴ中文 | 日韩一区二区三免费高清| 男人操女人的视频在线观看欧美| 欧美一区二区三区人| 久久不见久久见免费视频1| 久久免费偷拍视频| 99国产欧美另类久久久精品| 一区二区三区在线免费视频 | 国产一区三区三区| 中文字幕av不卡| 在线欧美日韩国产| 麻豆91在线播放| 日本一区二区三区国色天香| 在线视频一区二区三| 蜜桃av噜噜一区二区三区小说| 久久综合久久综合久久| bt7086福利一区国产| 天天综合色天天综合| 国产蜜臀av在线一区二区三区| 欧美在线一区二区| 黄一区二区三区| 亚洲精品免费一二三区|