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

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

?? zippie.cpp

?? 一款最完整的工業組態軟源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 	if (szDir.IsEmpty())
// 		if (!ZipPlatform::GetCurrentDirectory(szDir))
// 			return;
	struct AddDirectoryInfo adi(l);
	adi.m_bAddEmpty = bAddEmpty;
	adi.m_bRecursive = bRecursive;
	adi.m_lpszFile = zpc.GetFileName();
	AddDirectory(szDir, adi, !bFullPath); // when not full path is specified for a single file with a path, do not add a directory then

		
}


void FindInZip(CZipArchive& zip, FILELIST& l, CZipWordArray& n)
{

	for (FILELISTIT it = l.begin(); it != l.end(); ++it)
		zip.FindMatches(*it, n);
}

void ProcessData(CZipArchive& zip, CCmdLine& cmd, CZipWordArray& vRevised, bool bExtract)
{
		
		if (cmd.HasSwitch(bExtract ? "-xa" : "-da"))
		{
			int iMax = zip.GetCount();
			for (int i = 0; i < iMax; i++)
				vRevised.Add(i);
		}
		else
		{
			CZipWordArray numbers;
			CZipString temp = bExtract ? "-x" : "-d";
			int iCount = cmd.GetArgumentCount(temp);
			if (iCount > 0)
			{
				FILELIST lFiles;
				for (int i = 0; i < iCount; i++)
					lFiles.push_back(cmd.GetArgument(temp, i));
				FindInZip(zip, lFiles, numbers);
			}
			temp = bExtract ? "-xf" : "-df";
			if (cmd.GetArgumentCount(temp) > 0)
			{
				FILELIST lFiles;
				FillFromFile(lFiles, cmd.GetArgument(temp, 0), false);
				FindInZip(zip, lFiles, numbers);
			}

			temp = bExtract ? "-xr" : "-dr";
			iCount = cmd.GetArgumentCount(temp);
			CZipWordArray notNumbers;
			if (iCount > 0)
			{
				for (int i = 0; i < iCount; i++)
				{
					CZipString sz = cmd.GetArgument(temp, i);
					bool bNot = !sz.IsEmpty() && sz[0] == '!';
					CZipWordArray& vN = bNot ? notNumbers : numbers;
					if (bNot)
						sz.TrimLeft('!');
					size_t pos = strcspn(sz, "-");
					if (pos == sz.GetLength() )
						vN.Add(atoi(sz) - 1);
					else
					{
						int b = atoi (sz.Left(pos));
						int e = atoi (sz.Mid(pos + 1));
						for (int i = b; i <= e ; i++)
							vN.Add(i - 1);
					}
				}
				
			}
			int iSize = notNumbers.GetSize();
			if (iSize)
			{
				for (int j = 0; j < iSize; ++j)
					for (int i = numbers.GetSize() ; i >= 0 ;i--)
						if (numbers[i] == notNumbers[j])
							numbers.RemoveAt(i);
			}
			
			int iMax = zip.GetCount() - 1;
			for (int i = 0; i < numbers.GetSize(); ++i)
			{
				int x = numbers[i];
				if (x < 0 || x > iMax)
					continue;
				bool bNew = true;
				for (int j = 0; j < vRevised.GetSize(); ++j)
					if (vRevised[j] == numbers[i])
					{
						bNew = false;
						break;
					}
				if (bNew)
					vRevised.Add(x);
			}
		}
		

}


int main(int argc, char* argv[])
{
#ifndef __GNUC__
	// set the locale the same as the system locale
	// to handle local characters (non-English) properly by CZipString
	std::locale::global(std::locale(""));
#endif
	int iRet = 0;	
	
	CCmdLine cmd;
	CZipArchive zip;
	CZipString szArchive;
	try
	{
		
		if (cmd.SplitLine(argc, argv) < 1)
			throw 0;
		if (cmd.GetArgumentCount("-f") <= 0)
			throw 0;
		int iVolumeSize = 0;
		int iMode = CZipArchive::zipOpen;
		bool bIsAdding = cmd.GetArgumentCount("-a") > 0 || cmd.GetArgumentCount("-af") > 0;
		bool bIsExtracting = cmd.GetArgumentCount("-x") > 0 || cmd.GetArgumentCount("-xr") > 0
			|| cmd.GetArgumentCount("-xf") > 0 || cmd.HasSwitch("-xa");
		bool bIsDeleting = cmd.GetArgumentCount("-d") > 0 || cmd.GetArgumentCount("-dr") > 0 
			|| cmd.GetArgumentCount("-df") > 0 || cmd.HasSwitch("-da");

		szArchive = cmd.GetArgument("-f", 0);
		CZipPathComponent zpc(szArchive);
		if (zpc.GetFileExt().IsEmpty())
			szArchive += ".zip";
		bool bUpdateMode = cmd.HasSwitch("-u");
		bool bSetComment = cmd.GetArgumentCount("-g") > 0;
		bool bIsListing = cmd.HasSwitch("-l") || cmd.HasSwitch("-ll") || 
			cmd.HasSwitch("-lr");
		bool bOnlyErrors = cmd.HasSwitch("-dse");
		if (bIsAdding)
		{
			if (cmd.GetArgumentCount("-v") > 0)
			{
				iMode = CZipArchive::zipCreateSpan;
				iVolumeSize = atoi(cmd.GetArgument("-v", 0));
			}
			else
			{
				if (!bUpdateMode || !ZipPlatform::FileExists(szArchive))
					iMode = CZipArchive::zipCreate;
			}
		}
		else if (bIsExtracting || cmd.HasSwitch("-t") || bIsListing)
		{
			if (cmd.HasSwitch("-st"))
				iVolumeSize = 1;
		}
		else if (!bSetComment && !bIsDeleting)
			throw 0;

		SpanCallback span;
		zip.SetSpanCallback(&span);

		bool bAddEmpty = cmd.HasSwitch("-re");
		bool bRecursive = cmd.HasSwitch("-r") || bAddEmpty;
		
		
		

		bool bCaseSensitiveInZip = cmd.HasSwitch("-cs");
		pZipComp = GetCZipStrCompFunc(bCaseSensitiveInZip);
	
		zip.SetCaseSensitivity(bCaseSensitiveInZip);
		try
		{
			zip.Open(szArchive, iMode, iVolumeSize);
			if (cmd.GetArgumentCount("-p") > 0)
				zip.SetPassword(cmd.GetArgument("-p", 0));
		}
		catch(...)
		{
			bool bContinue = false;
			if (iMode == CZipArchive::zipOpen && !bIsDeleting && !bSetComment)
			{
				try
				{
					// try to open in read only mode (required if there is no write access to the storage)
					zip.Open(szArchive, CZipArchive::zipOpenReadOnly, iVolumeSize);
					bContinue = true;
				}
				catch(...)
				{
					throw;					
				}
			}
			if (!bContinue)
				throw;
		}

		if (cmd.GetArgumentCount("-rp") > 0)
			zip.SetRootPath(cmd.GetArgument("-rp", 0));

		bool bFullPath = !cmd.HasSwitch("-nfp") && zip.GetRootPath().IsEmpty();

		bool bIsSpan = zip.GetSpanMode() != 0;
		if (bSetComment && !bIsSpan)
		{
			CZipString sz = cmd.GetArgument("-g", 0);
			sz.TrimLeft("\"");
			sz.TrimRight("\"");
			zip.SetGlobalComment(sz);
		}

		if (bIsAdding)
		{
			if (bUpdateMode && bIsSpan)
			{
				printf ("Cannot update an existing disk spanning archive\n");
				zip.Close();
				return 1;
			}
			int iLevel = atoi(cmd.GetSafeArgument("-c", 0, "5"));
			int iSmartLevel;
			if (cmd.HasSwitch("-as"))
			{
				iSmartLevel = CZipArchive::zipsmSmartest;
				zip.SetTempPath(cmd.GetSafeArgument("-as", 0, ""));
			}
			else
				iSmartLevel = CZipArchive::zipsmSafeSmart;

			FILELIST lFiles;
			int iCount = cmd.GetArgumentCount("-a");
			if (iCount > 0)
			{
				
				for (int i = 0; i < iCount; i++)
					
					ExpandFile(lFiles, cmd.GetArgument("-a", i), bRecursive,
					bAddEmpty, bFullPath);
			}
			
			iCount = cmd.GetArgumentCount("-af");
			if (iCount > 0)
				FillFromFile(lFiles, cmd.GetArgument("-af", 0), true);

			FILELIST excl;

			iCount = cmd.GetArgumentCount("-ax");
			if (iCount > 0)
			{
				for (int i = 0; i < iCount; i++)
					
					ExpandFile(excl, cmd.GetArgument("-ax", i), bRecursive,
					bAddEmpty, bFullPath);
			}
			
			iCount = cmd.GetArgumentCount("-afx");
			if (iCount > 0)
				FillFromFile(excl, cmd.GetArgument("-afx", 0), true);

			FILELISTADD rev;
			for (FILELISTIT it = lFiles.begin(); it != lFiles.end(); ++it)				
			{
				// that is how the filename will look in the archive
				CZipString sz = zip.PredictFileNameInZip(*it, bFullPath);
				if (!sz.IsEmpty())
				{
					bool bAdd = true;
					for (FILELISTIT itt = excl.begin(); itt != excl.end(); ++itt)
					{
						if (!((*itt).*pZipComp)(*it))
						{
							bAdd = false;
							break;
						}
					}
					if (bAdd)
						rev.push_back(CZipAddFileInfo(*it, sz));
				}
			}
			lFiles.clear();
			excl.clear();
	
			// remove duplicates
			FILELISTADDIT it1;
			for (it1 = rev.begin(); it1 != rev.end();)
			{
				bool bErase = false;
				FILELISTADDIT it2 = it1;
				for (++it2; it2 != rev.end(); ++it2)
				{					
					int x = ((*it1).m_szFileNameInZip.*pZipComp)((*it2).m_szFileNameInZip);
					if (x == 0)
					{
						bErase = true;
						break;
					}
				}
				if (bErase)
					rev.erase(it1++);
				else
					++it1;
			}
					
			
			// sort
			rev.sort(std::greater<CZipAddFileInfo>());
			printf ("\n");
			for (it1 = rev.begin(); it1 != rev.end(); ++it1)
			{	
				if (zip.AddNewFile((*it1).m_szFilePath, iLevel, bFullPath, iSmartLevel))
				{
					if (!bOnlyErrors)
						printf ("%s added\n", (LPCTSTR)(*it1).m_szFileNameInZip);
				}
				else
					printf ("%s not added\n", (LPCTSTR)(*it1).m_szFilePath);
			}

		}
		else if (bIsExtracting)
		{
			CZipString szPath = cmd.GetSafeArgument("-xp", 0, ".");
			
			CZipWordArray vRevised;
			ProcessData(zip, cmd, vRevised, true);
			printf ("\n");
			for (int k = 0; k < vRevised.GetSize(); ++k)
			{
				int iFile = vRevised[k];
				try
				{
					zip.ExtractFile(iFile, szPath, bFullPath);
					CZipFileHeader fh;
					if (zip.GetFileInfo(fh, iFile))
					{
						if (!bOnlyErrors )
							printf ("%s extracted\n", (LPCTSTR)fh.GetFileName());
					}

				}
				catch (...)
				{
					CZipFileHeader fh;
					if (zip.GetFileInfo(fh, iFile))
						printf("Error extracting file %s\n", (LPCTSTR)fh.GetFileName());
					else
						printf("There are troubles with getting info from file number %d\n", iFile);

				}
			}
			printf("\n");
		}
		else if (bIsDeleting)
		{
			if (bIsSpan)
			{
				printf ("Cannot delete from an existing disk spanning archive\n");
				zip.Close();
				return 1;
			}
			CZipWordArray vRevised;
			ProcessData(zip, cmd, vRevised, false);			
			try
			{
				zip.DeleteFiles(vRevised);
			}
			catch (...)
			{
				printf("Error occured while deleting files\n");
			}
		}
		else if (cmd.HasSwitch("-t"))
		{
			FILELIST lFiles;
			int iCount = zip.GetCount();
			for (int i = 0; i < iCount; i++)
			{
				bool bOK = false;
				try	
				{
					bOK = zip.TestFile(i);
					printf("Tested: %d of %d                \r", i, iCount);
				}
				catch (...)
				{
					
				}
				if (!bOK)
				{	
					CZipFileHeader fh;
					if (zip.GetFileInfo(fh, i))
						lFiles.push_back(fh.GetFileName());
					else
					{
						char buf[50];
						sprintf(buf, "There are troubles with getting info from file number %d", i);
						lFiles.push_back(buf);
					}
				}
			}
			printf("\n");
			if (lFiles.size())
			{
				printf ("There were errors found in the following files:\n");
				for (FILELISTIT it = lFiles.begin(); it != lFiles.end(); ++it)
					printf("%s\n", (LPCTSTR)(*it));
			}
			else
				printf ("There were no errors found in the archive\n");
		}
		else if (bIsListing)
		{
			bool bNumbers = cmd.HasSwitch("-lr");
			bool bDescription = !cmd.HasSwitch("-ll");
			int iCount = zip.GetCount();
			if (bDescription)
				printf("\n  File name\tSize\t\tRatio\tTime Stamp\n\n");
			for (int i = 0; i < iCount; i++)
			{
				CZipFileHeader fh;
				if (zip.GetFileInfo(fh, i))
				{
					if (bNumbers)
						printf("%d.  " ,i + 1);

					printf("%s\n", (LPCTSTR)fh.GetFileName());
					if (bDescription)
					{
						printf("\t\t");
						if (fh.IsDirectory())
							printf("<DIR>\t\t");
						else
						{
							printf("%u Bytes\t", fh.m_uUncomprSize);
							printf("%.2f%%", fh.GetCompressionRatio());
						}
						time_t t = fh.GetTime();
						printf ("\t%s", ctime(&t));
					}
				}
				else
					printf("There are troubles with getting info from file number %d\n", i);

			}
			printf("\n");
			CZipString sz = zip.GetGlobalComment();
			if (!sz.IsEmpty())
				printf("Global archive comment:\n%s\n", (LPCTSTR)sz);
		}

		zip.Close();
	}
	catch (int)
	{
		DisplayUsage();
		iRet = 1;
	}
	catch (CZipException e)
	{
		printf ("Error while processing archive %s\n%s\n", (LPCTSTR) szArchive, (LPCTSTR)e.GetErrorDescription());
		if (e.m_szFileName.IsEmpty())
			printf("\n");
		else
			printf("Filename in error object: %s\n\n", (LPCTSTR)e.m_szFileName);
		zip.Close(true);
		iRet = 1;
	}
	catch (...)
	{
		printf ("Unknown error while processing archive %s\n\n", (LPCTSTR) szArchive);
		zip.Close(true);
		iRet = 1;

	}

	if (cmd.HasSwitch("-w"))
	{
		printf("\nPress <ENTER> to exit.\n");
		ReadKey();
		printf ("\n");
	}
	return iRet;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色在线视频| 97aⅴ精品视频一二三区| 99久久久精品免费观看国产蜜| 欧美日韩国产小视频在线观看| 欧美精品一区二区三区在线 | 玉米视频成人免费看| 久久99国产精品成人| 欧美三级视频在线播放| 综合自拍亚洲综合图不卡区| 国产乱国产乱300精品| 制服丝袜亚洲网站| 亚洲一区二区中文在线| 北岛玲一区二区三区四区| 精品国产一区二区亚洲人成毛片| 亚洲一区欧美一区| 99精品在线观看视频| 亚洲国产精品99久久久久久久久| 韩国女主播一区| 日韩一区二区精品葵司在线| 性久久久久久久久久久久 | 懂色av一区二区三区蜜臀| 91.com在线观看| 午夜欧美大尺度福利影院在线看| 日本韩国精品一区二区在线观看| 欧美国产日本视频| 成人精品视频一区二区三区尤物| 精品国产乱码久久久久久久| 日本va欧美va欧美va精品| 欧美女孩性生活视频| 亚洲国产精品一区二区www | 99久久免费精品高清特色大片| 久久久99免费| 国产精品一区二区在线观看不卡| 日韩天堂在线观看| 精品一区二区影视| 国产亚洲一二三区| 成人一级片在线观看| 中文字幕在线一区二区三区| 成人app下载| 亚洲精品乱码久久久久久黑人| 91丨九色丨尤物| 亚洲一区在线看| 欧美日韩国产影片| 久国产精品韩国三级视频| 国产亚洲欧美色| 99这里只有精品| 亚洲一区在线视频| 26uuu成人网一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 2017欧美狠狠色| a在线欧美一区| 亚洲电影视频在线| 精品av久久707| 99精品欧美一区二区三区小说| 一区二区三区欧美日韩| 91精品国产福利在线观看 | 99re视频这里只有精品| 一区二区三区中文字幕| 欧美三区在线视频| 久久国产精品色| 中文字幕 久热精品 视频在线| 欧洲国内综合视频| 狠狠色狠狠色综合| 亚洲欧美日韩小说| 日韩欧美成人午夜| 99精品1区2区| 久久电影网电视剧免费观看| 日本一区二区三区四区| 欧美中文字幕一区二区三区亚洲| 久久丁香综合五月国产三级网站| 国产精品视频九色porn| 欧美精品国产精品| 波多野结衣在线一区| 午夜精品久久久久久久久久久| 久久精品一区蜜桃臀影院| 色天使久久综合网天天| 精品一区二区三区蜜桃| 一区二区三区四区精品在线视频| 欧美成人精品二区三区99精品| 99久久免费精品| 国产一区二区中文字幕| 亚洲影院免费观看| 日韩一区在线看| 精品国产一区二区精华| 欧美自拍偷拍午夜视频| 东方欧美亚洲色图在线| 日本在线观看不卡视频| 亚洲综合激情另类小说区| 亚洲国产精品高清| 久久久国产精品午夜一区ai换脸| 欧美疯狂性受xxxxx喷水图片| 色综合中文综合网| 美国欧美日韩国产在线播放| 中文字幕第一页久久| 精品国产一区二区三区av性色 | jlzzjlzz国产精品久久| 毛片av一区二区三区| 亚洲成人av资源| 亚洲高清不卡在线| 亚洲午夜久久久久久久久电影网| 国产精品电影一区二区| 欧美高清一级片在线观看| 国产亚洲一区二区在线观看| 欧美精品一区二区三区视频| 日韩一区二区三区精品视频 | 一本到不卡精品视频在线观看| 国产成人精品www牛牛影视| 激情综合一区二区三区| 蜜臀va亚洲va欧美va天堂| 日韩有码一区二区三区| 日韩成人免费电影| 日韩不卡在线观看日韩不卡视频| 亚洲一线二线三线久久久| 一区二区三区在线视频免费观看| 综合久久久久久| 亚洲欧美偷拍三级| 亚洲网友自拍偷拍| 亚洲成人动漫在线免费观看| 亚洲bt欧美bt精品| 美女网站视频久久| 国产一区在线精品| 国产精品69毛片高清亚洲| 国产99久久久国产精品潘金网站| 成人中文字幕合集| 一本久道久久综合中文字幕 | 日韩高清不卡一区二区| 婷婷国产v国产偷v亚洲高清| 日韩精品一区第一页| 男女视频一区二区| 国产精品影视网| 北条麻妃一区二区三区| 91精品国产91久久久久久最新毛片 | 久久99国产精品免费| 国产精品一区二区久激情瑜伽| 成人一二三区视频| 日本精品一级二级| 91精品久久久久久久91蜜桃| 精品美女被调教视频大全网站| 久久久久久久久岛国免费| 国产精品国产精品国产专区不蜜 | 亚洲欧美精品午睡沙发| 亚洲资源在线观看| 极品尤物av久久免费看| 99久久精品国产导航| 欧美日韩一区二区三区在线| 欧美一区午夜精品| 国产精品五月天| 天天综合色天天| 国产成人在线电影| 欧美日韩国产影片| 欧美激情资源网| 日韩精品91亚洲二区在线观看| 国产99精品视频| 欧美精品丝袜久久久中文字幕| 国产亚洲欧美日韩俺去了| 一区二区三区国产精品| 久久69国产一区二区蜜臀| 91麻豆免费视频| 精品奇米国产一区二区三区| 日韩美女精品在线| 国产精品一区二区在线观看网站| 欧美日韩午夜精品| 亚洲欧洲99久久| 国产剧情一区在线| 8v天堂国产在线一区二区| 国产精品久久精品日日| 老司机精品视频在线| 91九色02白丝porn| 国产女主播在线一区二区| 天天色综合天天| 欧洲精品一区二区| 成人免费一区二区三区视频| 日本中文字幕一区二区有限公司| 91美女片黄在线观看| 久久久美女毛片| 九九在线精品视频| 在线观看91精品国产麻豆| 国产精品网站在线观看| 久久精品免费观看| 在线播放欧美女士性生活| 亚洲欧美日韩精品久久久久| 国产高清久久久久| 久久久www成人免费毛片麻豆| 免费成人在线视频观看| 欧美老肥妇做.爰bbww视频| 一区二区成人在线视频| 色婷婷综合中文久久一本| 日本一区二区动态图| 国产精品影视天天线| 2023国产精品| 久久成人免费电影| 3atv在线一区二区三区| 亚洲在线视频网站| 91成人免费电影| 亚洲国产乱码最新视频| 欧美日韩一区不卡| 五月天久久比比资源色| 欧美日韩高清一区二区不卡 | 成人激情午夜影院| 国产三级久久久|