Subversion Repositories spk

Rev

Rev 263 | Rev 271 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 263 Rev 266
Line 9423... Line 9423...
9423
 
9423
 
9424
 
9424
 
9425
	HeaderData.CmtBuf=NULL;
9425
	HeaderData.CmtBuf=NULL;
9426
	memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
9426
	memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
9427
 
9427
 
-
 
9428
	CDirIO outputDir(m_sTempDir + L"/Extract");
-
 
9429
	if (!outputDir.exists())
-
 
9430
		outputDir.create();
-
 
9431
 
9428
	bool error = false;
9432
	bool error = false;
9429
	Utils::WString extractedFile = CDirIO(m_sTempDir).file(L"extracted.tst").findReplace(L"/", L"\\").findReplace(L"\\\\", L"\\");
-
 
9430
	while ((RHCode=RARReadHeaderEx(hArcData,&HeaderData))==0)
9433
	while ((RHCode=RARReadHeaderEx(hArcData,&HeaderData))==0)
9431
	{
9434
	{
9432
		Utils::WString fileName(HeaderData.FileNameW);
9435
		Utils::WString fileName(HeaderData.FileNameW);
9433
 
9436
 
9434
		if ( HeaderData.FileAttr == 16 )
9437
		if ( HeaderData.FileAttr == 16 )
9435
			continue;
9438
			continue;
9436
		PFCode=RARProcessFileW(hArcData, RAR_EXTRACT, NULL, NULL);
9439
		PFCode = RARProcessFileW(hArcData, RAR_EXTRACT, outputDir.dir(), NULL);
9437
		if (PFCode!=0)
9440
		if (PFCode!=0)
9438
		{
9441
		{
9439
			error = true;
9442
			error = true;
9440
			break;
9443
			break;
9441
		}
9444
		}
9442
 
9445
 
9443
		CFileIO File(fileName);
9446
		CFileIO File(outputDir.file(fileName));
9444
		if ( File.exists() )
9447
		if ( File.exists() )
9445
		{
9448
		{
9446
			if ( fileName.Compare(L"pluginmanager.txt") )
9449
			if ( fileName.Compare(L"pluginmanager.txt") )
9447
				this->readArchiveData(File.fullFilename(), archive);
9450
				this->readArchiveData(File.fullFilename(), archive);
9448
			else
9451
			else
Line 9471... Line 9474...
9471
		}
9474
		}
9472
	}
9475
	}
9473
 
9476
 
9474
	RARCloseArchive(hArcData);
9477
	RARCloseArchive(hArcData);
9475
 
9478
 
-
 
9479
	if (outputDir.exists())
-
 
9480
		outputDir.removeDir(L".", true, true);
-
 
9481
 
9476
	if ( error )
9482
	if ( error )
9477
	{
9483
	{
9478
		delete archive;
9484
		delete archive;
9479
		archive = NULL;
9485
		archive = NULL;
9480
	}
9486
	}