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

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

?? cl.cpp

?? STLstlfilt.zip
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
 * cl.cpp: "Proxy CL" STL Error Filter Driver for VC++6/7
 *
 * Framework by Leor Zolman
 *				BD Software
 *				(leor@bdsoft.com)
 *
 * Win32 piping logic by Thomas Becker
 *
 * (C) Copyright Leor Zolman 2002. Permission to copy, use, modify, sell and
 * distribute this software is granted provided this copyright notice appears
 * in all copies. This software is provided "as is" without express or implied
 * warranty, and with no claim as to its suitability for any purpose.
 */

#define CL_ID		"BD Software Proxy CL v2.43a"

/* Release 2.43a - 1/15/2004
 *
 * Calls native CL (renamed to CL2.EXE) to perform compilation; for
 * files with applicable extensions, filters output through a Perl
 * script to simplify cryptic STL messages
 *
 * Options: /silent         Disables STL filtering status message and auto-
 *       or -silent         matically adds /nologo option to NATIVE_CL command line
 *
 *			/nf				"No Filtering" - behaves as if filtering were disabled
 *			/iter:x			Sets iterator policy to x (S, M or L)
 *			/alloc:x		Sets allocator policy to x (S or L) [for .NET only]
 *          /func:x			Sets "common functor" policy to x (S or L) [for .NET only]
 *			/with:x			Set "with" clause policy
 *          /width:xx		Sets column to wrap output lines. 0=no wrap (the default).
 *          /break:x		Line break algorithm (D or P)
 *          /cbreak:x		Comma break policy (B or A)
 *          /closewrap:x	Wrap before unmatched close delims (Y or N)
 *          /meta:x			Choose metaprogramming pre-config (Y or N)
 *          /lognative      Create debugging log file NativeLog.txt in current dir
 *
 * If the file designated by the CONFIG_FILE symbol (PROXY-CL.INI as
 * distributed) is present in the Windows directory upon startup, CL reads
 * configuration information from the file to override like-named defaults
 * as #defined later in this source file. The allowed configuration options,
 * in their respective sections (with default settings shown) are:
 *
 *      [common]
 *		FILTER_SCRIPT=c:\STLFilt.pl
 *		TOGGLE_FILE_DIR=c:\
 *		NATIVE_CL=cl2
 *		PERL_EXE=c:\perl\bin\perl
 *		
 *      [proxy.cl]
 *      SILENT=false
 *		DEBUG=false
 *		DEBUG_DIR=c:\
 *		OUTPUT_WIDTH=0
 *		ITERATOR_POLICY=M
 *		ALLOCATOR_POLICY=S
 *      FUNCTOR_POLICY=S
 *      WITH_POLICY=S
 *      LOG_NATIVE_MSGS=N
 *		BREAK=P
 *		CBREAK=B
 *		CLOSEWRAP=Y
 *
 * For more details on the Proxy-CL.INI options, see the sample Proxy-CL.INI file.
 * For general information, see README.txt.
 * The Quick Start guide is QUICKSTART.txt.
 *
 * Error filtering is toggled by the presence (or absence) of
 * the file FILTERING.ON in the TOGGLE_FILE_DIR directory.
 * Toggling the existence of this file is managed either by the STLFilt.BAT
 * batch file or the STLTask.EXE taskbar icon app.
 *
 * Compile: cl /Ox /GX cl.cpp setargv.obj
 *
 * Note: Be careful not to compile this cl.cpp file using any version
 *       of CL.EXE resident in the current directory, or the linker won't
 *		 be able to overwrite it to create the new CL.EXE...
 *****************************************************************************/

#include <iostream>
#include <fstream>
#include <string>
#include <process.h>				// for _spawnvp()
#include <windows.h>				// needed to create processes
#include <sys/stat.h>

////////////////////////////////////////////////////////////////////////////////////////////
//
// User-configurable settings: The next four #defines specify default settings for each
// of the given options. They may be overriden by settings in the configuation file.
//
// Note: Regardless of whether or not any of the pathnames defined below contain embedded
//		 spaces, NEVER use "extra" quotes (as required in older versions of CL.CPP)
//
//		 Remember to use double-backslashes (\\) for directory delimiters in pathnames!
//

#define PERL_EXE		"c:\\perl\\bin\\perl"		// Your Perl interpreter
#define FILTER_SCRIPT	"c:\\STLFilt.pl"			// Perl script pathname

#define TOGGLE_FILE_DIR	"c:\\"						// filtering toggle file directory
													//	(see companion variable FILT_BASE
													//   in STLFILT.BAT)
#define	FILT_FILE		"filtering.on"				// Toggle file in "enabled" state

#define NATIVE_CL		"cl2"						// name of standard CL.EXE, must
													//		reside in a system PATH dir

#define CONFIG_FILE		"PROXY-CL.INI"				// if full path not specified, default
													// is Windows directory

#define SILENT			false						// true to surpress sign-on message (when
													//	filtering C++ source files)

#define DEBUG			false						// if true, logging enabled by default
#define DEBUG_CAPABLE	1							// 1 to compile with debugging features
#define DEBUG_DIR		"C:\\"						// default directory to log debug info to
#define DEBUG_LOGFILE	"cl-dblog.txt"				// main debugging log file
#define DEBUG_ATFILE	"atfile.txt"				// project @file copied to this file
#define LOG_NATIVE_MSGS false						// if true, log native message by default
#define OUTPUT_WIDTH	"0"							// default column to wrap output at (0: no wrap)
#define ITERATOR_POLICY	"M"							// default iterator policy
#define	ALLOCATOR_POLICY "S"						// default allocator policy (.NET only)
#define FUNCTOR_POLICY	"S"							// default functor policy (.NET only)
#define WITH_POLICY		"S"

#define BREAK			"P"							// default break algorithm
#define CBREAK			"A"							// default comma break policy
#define CLOSEWRAP		"N"							// default closewrap policy

const std::string filterExt[] =						// Filter only output from compiling
{													// files with these extensions
	".cpp",
	".cxx",
	".cc"
};

const std::string objExt[] =						// If we see these extensions on any
{													// CL arguments at the end of the line,
	".lib",											// keep searching for some other
	".obj",											// extension to qualify for filtering...
	".o"
};

const std::string exeExt[] =						// for checking for .EXE extensions
{													// in configuration pathnames
	".exe"
};

// END User-configurable settings
////////////////////////////////////////////////////////////////////////////////////////////

const size_t nfilter = sizeof(filterExt) / sizeof(std::string);
const size_t nobj = sizeof(objExt) / sizeof(std::string);

BOOL WriteEofToPipe(HANDLE hPipe);
bool hasExt(const std::string &filename, const std::string extensions[], int);
int doWin32Stuff(char *full_filt_cmd, char *cmdline);
void chompSpace(std::string &pathname);				// remove trailing whitespace, if any
void chompSlash(std::string &pathname);				// remove trailing slash, if any
void stripComment(std::string &txt);				// remove trailing comment, if any
void stripQuotes(std::string &txt, const std::string &unprocessed_line);   // strip quotation marks
void massage_pathname(std::string &txt);			// give path/file names the full treatment:


#if DEBUG_CAPABLE
void logit(const std::string &msg);
std::string toString(int n);
#define log(s) logit(s)
#else
#define log(s)
#endif

std::string native_cl;
std::string debug_dir;
std::string debug_log;
std::string configFile = CONFIG_FILE;

bool debug;

int main(int argc, char *argv[])
{
	using namespace std;
	const int MAXLINE = 200;						// max length of config file line
	char linebuf[MAXLINE] = "";
	FILE *fp;
	bool filtering = false;							// not filtering by default
	bool silent = false;							// not silent by default
	bool log_native_msgs;
	string full_filt_cmd;
	string filename;								// file to compile
	string perl_exe;
	string filter_script;
	string toggle_file;
	string toggle_file_dir;
	int output_width;
	string iterator_policy;
	string allocator_policy;
	string functor_policy;
	string with_policy;
	string break_algorithm;
	string cbreak;
	string closewrap;
	bool use_meta = false;
	string meta;
	
	int i;
	
	if (argc == 1)
	{
		cerr << CL_ID << endl;
		cerr << "usage: cl [ /lognative /silent /nf /iter:x /alloc:x /func:x /width:nn \n"
				"            /break:x /cbreak:x /closewrap;x /meta[:x] ] [MSVC opts] file(s)" << endl;
		exit(1);
	}
	
	GetPrivateProfileString( "proxy.cl", "debug_dir", DEBUG_DIR,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	debug_dir = linebuf;
	massage_pathname(debug_dir);
	
	GetPrivateProfileString( "proxy.cl", "debug", DEBUG ? "true" : "false",
							 linebuf, sizeof(linebuf), configFile.c_str() );
	char c;
	debug = (c = tolower(linebuf[0])) == 't' || c == 'y' || c == '1';

	if (debug)
#if DEBUG_CAPABLE
	{
		debug_log = debug_dir + "\\" + DEBUG_LOGFILE;
		log("-------------------------------------------------------------------");
		log(string("debug = ") + (debug ? "true" : "false"));
		log("debug_log = " + debug_log);
	}
#else
		cerr << "Proxy CL: WARNING: debug option specified, but Proxy CL not debug capable!" << endl;
#endif
		
	log("configFile is: " + configFile);

	GetPrivateProfileString( "proxy.cl", "log_native_msgs",
							 LOG_NATIVE_MSGS ? "true" : "false",
							 linebuf, sizeof(linebuf), configFile.c_str() );
	log_native_msgs = (c = tolower(linebuf[0])) == 't' || c == 'y' || c == '1';
	log(string("log_native_msgs = ") + (log_native_msgs ? "true" : "false"));
	

	GetPrivateProfileString( "common", "perl_exe", PERL_EXE,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	perl_exe = linebuf;
	massage_pathname(perl_exe);
	if (!hasExt(perl_exe, exeExt, 1))			// make sure we have an .EXE extension
		perl_exe += ".exe";
	
	log("perl_exe = '" + perl_exe + "'");

	GetPrivateProfileString( "common", "filter_script", FILTER_SCRIPT,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	filter_script = linebuf;
	massage_pathname(filter_script);
	log("filter_script = '" + filter_script + "'");

	GetPrivateProfileString( "common", "toggle_file_dir", TOGGLE_FILE_DIR,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	toggle_file_dir = linebuf;
	massage_pathname(toggle_file_dir);
	log("toggle_file_dir = '" + toggle_file_dir + "'");

	GetPrivateProfileString( "common", "native_cl", NATIVE_CL,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	native_cl = linebuf;
	massage_pathname(native_cl);
	log("native_cl = '" + native_cl + "'");

	GetPrivateProfileString( "proxy.cl", "iterator_policy", ITERATOR_POLICY,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	iterator_policy = linebuf;
	stripComment(iterator_policy);
	log("iterator_policy = " + iterator_policy);

	GetPrivateProfileString( "proxy.cl", "allocator_policy", ALLOCATOR_POLICY,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	allocator_policy = linebuf;
	stripComment(allocator_policy);
	log("allocator_policy = " + allocator_policy);

	GetPrivateProfileString( "proxy.cl", "functor_policy", FUNCTOR_POLICY,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	functor_policy = linebuf;
	stripComment(functor_policy);
	log("functor_policy = " + functor_policy);


	GetPrivateProfileString( "proxy.cl", "with_policy", WITH_POLICY,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	with_policy = linebuf;
	stripComment(with_policy);
	log("with_policy = " + with_policy);

	GetPrivateProfileString( "proxy.cl", "break", BREAK,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	break_algorithm = linebuf;
	stripComment(break_algorithm);
	log("break algorithm = " + break_algorithm);

	GetPrivateProfileString( "proxy.cl", "cbreak", CBREAK,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	cbreak = linebuf;
	stripComment(cbreak);
	log("cbreak policy = " + cbreak);

	GetPrivateProfileString( "proxy.cl", "closewrap", CLOSEWRAP,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	closewrap = linebuf;
	stripComment(functor_policy);
	log("functor_policy = " + functor_policy);

	GetPrivateProfileString( "proxy.cl", "silent", SILENT ? "true" : "false",
							 linebuf, sizeof(linebuf), configFile.c_str() );
	silent = (c = tolower(linebuf[0])) == 't' || c == 'y' || c == '1';
	log(string("silent = ") + (silent ? "true" : "false"));

	GetPrivateProfileString( "proxy.cl", "output_width", OUTPUT_WIDTH,
							 linebuf, sizeof(linebuf), configFile.c_str() );
	output_width = atoi(linebuf);
	log("output_width = " + output_width);

	full_filt_cmd = "\"" + perl_exe + "\" \"" + filter_script + "\"";
	log("full_filt_cmd = '" + full_filt_cmd + "'");

	toggle_file = toggle_file_dir + "\\" + FILT_FILE;
	log("toggle_file = '" + toggle_file + "'");

#if DEBUG_CAPABLE
	for (i = 1; i < argc; i++)
		log("Arg #" + toString(i) + " is '" + argv[i] + "'");
#endif
	
	log("-----------");

	if (argv[1][0] == '@')							// indirect command line?
	{
		log(string("Indirect command line detected:") + argv[1] + "\nContents:");

#if DEBUG_CAPABLE			// replicate the @file produced by VC, since it is deleted immediately:
		if (debug)
			system((string("copy ") + &argv[1][1] + " " + debug_dir +
											"\\" + DEBUG_ATFILE).c_str());
#endif

		ifstream fin(&argv[1][1]);
		if (!fin)
		{
			string msg = string("Proxy CL: Bad @ filename? First Command line arg:") +
							 argv[1];
			log(msg);
			cerr << msg << endl;
			exit(1);
		}

		string linebuf, lastline;
		while (getline(fin, linebuf))
		{
			lastline = linebuf;
			log(linebuf);
		}
		fin.close();

		log("The complete final line from the indirect file:\n" + lastline);

		bool seenquote = false;
		for (i = lastline.length() - 1; i >= 0; i--)
			if (lastline[i] == '"')
				if (!seenquote)
				{
					seenquote = true;
					lastline.resize(i);
				}
				else
					break;
			else if (lastline[i] == ' ' && !seenquote)
				break;
		
		filename = lastline.substr(i + 1);
		log("filename detected indirectly: '" + filename + "'");
	}
	else
		for (i = argc - 1; i > 0; i--)
		{
			if (hasExt(argv[i], objExt, nobj ))		// ignore libraries, obj files
				continue;
			if (strchr(argv[i], '.') == NULL)		// ignore options (no extensions)
				continue;
			filename = argv[i];						// first non-lib/obj/option is the filename
			break;
		}
	
	if (filename.length() == 0 || !hasExt(filename, filterExt, nfilter )) // if extension of filename is not in the
		silent = true;								// approved list, never filter it
	else
	{
		log("about to open toggle_file '"+toggle_file+"'");
		if((fp = fopen(toggle_file.c_str(), "r")) != NULL)
		{												// otherwise, filter iff
			filtering = true;							// toggle_file exists
			fclose(fp);
		}
	}
	
	string args = " ";								// replicate CL command line args

	char **new_argv = new char *[argc + 1];			// also create a new "argv" with each arg in
	size_t new_argc = 0;							// quotes in case we're not filtering and
													// have to use _spawnvp()
	for (i = 0; i < argc; i++)
	{
		if (!stricmp(argv[i],"/silent") || !stricmp(argv[i],"-silent"))
		{
			string nologo = "/nologo";
			silent = true;
			args += nologo;
			new_argv[new_argc] = new char[nologo.length()];
			strcpy(new_argv[new_argc++], nologo.c_str());
		}
		else if (!stricmp(argv[i],"/nf") || !stricmp(argv[i],"-nf"))
		{
			filtering = false;
			silent = true;
		}
		else if (!strnicmp(argv[i], "/iter:", 6)  || !strnicmp(argv[i], "-iter:", 6))
		{
			iterator_policy = &argv[i][6];
		}
		else if (!strnicmp(argv[i], "/alloc:", 7)  || !strnicmp(argv[i], "-alloc:", 7))
		{
			allocator_policy = &argv[i][7];
		}
		else if (!strnicmp(argv[i], "/func:", 6)  || !strnicmp(argv[i], "-func:", 6))
		{
			functor_policy = &argv[i][6];
		}
		else if (!strnicmp(argv[i], "/with:", 5)  || !strnicmp(argv[i], "-with:", 5))
		{
			with_policy = &argv[i][6];
		}
		else if (!strnicmp(argv[i], "/break:", 7)  || !strnicmp(argv[i], "-break:", 7))
		{
			break_algorithm = &argv[i][7];
		}
		else if (!strnicmp(argv[i], "/cbreak:", 8)  || !strnicmp(argv[i], "-cbreak:", 8))
		{
			cbreak = &argv[i][8];
		}
		else if (!strnicmp(argv[i], "/closewrap:", 11)  || !strnicmp(argv[i], "-closewrap:", 11))
		{
			closewrap = &argv[i][11];
		}
		else if (!strnicmp(argv[i], "/meta:", 6)  || !strnicmp(argv[i], "-meta:", 6))
		{
			meta = &argv[i][6];
			use_meta = true;
		}
		else if (!strnicmp(argv[i], "/meta", 5) || !strnicmp(argv[i], "-meta", 5))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品影视av免费| 欧美日韩免费电影| 欧美自拍偷拍一区| 欧美一级在线观看| 亚洲女性喷水在线观看一区| 美国十次了思思久久精品导航| 福利一区福利二区| 欧美一区二区黄| 亚洲天天做日日做天天谢日日欢 | 国产色一区二区| 亚洲国产一区二区三区| 高清国产一区二区| www激情久久| 日韩专区欧美专区| 色婷婷综合中文久久一本| 精品剧情在线观看| 日本欧美韩国一区三区| 在线影院国内精品| 中文字幕一区二区三区在线播放 | 性做久久久久久免费观看欧美| 国产成人一区在线| 日韩一区二区高清| 亚洲sss视频在线视频| 97精品视频在线观看自产线路二 | 日韩欧美精品在线视频| 亚洲国产欧美一区二区三区丁香婷 | 99久久精品一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩激情中文字幕| 欧美吻胸吃奶大尺度电影| 亚洲精品v日韩精品| 91啪九色porn原创视频在线观看| 国产人成一区二区三区影院| 久久99精品国产91久久来源| 日韩一区二区免费视频| 毛片一区二区三区| 欧美va在线播放| 国产麻豆精品theporn| 久久亚洲免费视频| 国产美女在线精品| 久久午夜电影网| 国产精品18久久久久久久久| 日韩一级精品视频在线观看| 秋霞午夜鲁丝一区二区老狼| 精品欧美久久久| 久99久精品视频免费观看| 精品国产一区二区三区忘忧草| 蜜臂av日日欢夜夜爽一区| 日韩精品一区二区在线观看| 精品一区二区三区蜜桃| 久久精品人人做人人爽人人| 国产精品1区二区.| 亚洲欧美国产77777| 欧美日韩情趣电影| 久久国产人妖系列| 国产精品视频一二| 色婷婷久久久久swag精品| 亚洲成人在线免费| 精品免费视频.| 99免费精品在线| 亚洲综合图片区| 欧美www视频| 不卡视频一二三四| 亚洲国产一区二区视频| 精品欧美久久久| 色哟哟国产精品免费观看| 日韩国产精品91| 国产精品女同互慰在线看| 在线免费观看日本一区| 久久99在线观看| ●精品国产综合乱码久久久久 | 成人av资源在线观看| 一区二区三区在线视频免费 | 男人操女人的视频在线观看欧美| 久久精品一区二区三区四区| av动漫一区二区| 琪琪久久久久日韩精品| 久久久99久久| 欧美精品久久久久久久久老牛影院| 久久激情五月激情| 一区二区三区精品| 国产午夜久久久久| 日韩午夜小视频| 色综合天天综合网天天看片| 久久国产精品色| 亚洲国产视频一区二区| 国产精品美女www爽爽爽| 欧美日韩大陆一区二区| 粉嫩嫩av羞羞动漫久久久| 亚洲一区成人在线| 国产精品网站在线播放| 精品国产免费久久| 欧美丰满少妇xxxxx高潮对白| 成人自拍视频在线观看| 麻豆一区二区在线| 亚洲午夜日本在线观看| 国产精品美女视频| 国产日韩av一区二区| 在线不卡一区二区| 欧洲视频一区二区| 国产999精品久久久久久绿帽| 久久99精品久久久久久久久久久久| 亚洲一区日韩精品中文字幕| 国产精品欧美极品| 国产精品天天看| 久久久三级国产网站| 精品久久久三级丝袜| 欧美一区二区三区性视频| 欧日韩精品视频| 91久久精品国产91性色tv| www.亚洲国产| av亚洲精华国产精华| 国产成人久久精品77777最新版本| 久久国产剧场电影| 久久99国产精品久久99| 美国十次综合导航| 麻豆国产91在线播放| 美女网站在线免费欧美精品| 日本欧美在线看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲综合无码一区二区| 一区二区三区免费看视频| 中文字幕亚洲精品在线观看| ...xxx性欧美| 一区二区在线观看视频 | 欧美视频在线播放| 精品视频一区二区不卡| 在线播放国产精品二区一二区四区 | 欧美一区二区精美| 精品国内片67194| 久久香蕉国产线看观看99| 精品欧美乱码久久久久久1区2区| 2022国产精品视频| 久久精品视频一区| 中文字幕制服丝袜一区二区三区 | 一区二区三区精品久久久| 亚洲综合色在线| 麻豆传媒一区二区三区| 国产美女视频91| 99精品桃花视频在线观看| 在线观看国产一区二区| 欧美二区在线观看| 国产亚洲欧洲一区高清在线观看| 国产蜜臀av在线一区二区三区| 中文字幕综合网| 日韩一区精品字幕| 国产精品一区二区男女羞羞无遮挡 | 国产欧美精品一区二区色综合朱莉| 国产女同互慰高潮91漫画| 亚洲精品视频在线观看免费| 三级在线观看一区二区| 韩国女主播成人在线观看| 91香蕉视频在线| 制服丝袜日韩国产| 欧美国产精品v| 午夜欧美一区二区三区在线播放| 麻豆国产欧美日韩综合精品二区| 成人涩涩免费视频| 欧美福利一区二区| 国产精品久久久一区麻豆最新章节| 亚洲第一精品在线| 风流少妇一区二区| 91麻豆精品久久久久蜜臀| 国产精品视频麻豆| 日本不卡的三区四区五区| 97久久精品人人做人人爽50路| 日韩一级完整毛片| 中文字幕在线不卡一区二区三区| 污片在线观看一区二区| 高清不卡一区二区在线| 91 com成人网| 亚洲综合图片区| 成人av在线影院| 欧美tickling挠脚心丨vk| 亚洲一区二区三区不卡国产欧美| 国产一区二区按摩在线观看| 欧美日韩一区二区三区在线 | 国产一区二区三区香蕉| 欧美区一区二区三区| 成人免费在线视频观看| 国产伦精品一区二区三区在线观看| 欧美色老头old∨ideo| 国产精品成人网| 国产福利精品一区二区| 91精品福利在线一区二区三区| 中文字幕在线视频一区| 国产九色精品成人porny | 色婷婷久久综合| 亚洲国产高清在线观看视频| 另类小说图片综合网| 911精品产国品一二三产区| 亚洲午夜国产一区99re久久| 色综合久久久久综合99| 国产欧美日韩在线| 国产99久久久国产精品潘金| 久久精品亚洲精品国产欧美kt∨| 蜜臀久久久99精品久久久久久| 欧美喷潮久久久xxxxx| 一级日本不卡的影视| 欧美综合久久久|