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 9422... Line 9422...
9422
		archive = new CSpkFile(); // converting to a spk file
9422
		archive = new CSpkFile(); // converting to a spk file
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
 
-
 
9428
	CDirIO outputDir(m_sTempDir + L"/Extract");
-
 
9429
	if (!outputDir.exists())
-
 
9430
		outputDir.create();
9427
 
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 9464... Line 9467...
9464
					f = archive->addFile(CFileIO(fileName).filename(), CFileIO(fileName).dir(), FILETYPE_EXTRA);
9467
					f = archive->addFile(CFileIO(fileName).filename(), CFileIO(fileName).dir(), FILETYPE_EXTRA);
9465
				else
9468
				else
9466
					f = archive->addFile(CFileIO(fileName).filename(), extradir, static_cast<FileType>(type));
9469
					f = archive->addFile(CFileIO(fileName).filename(), extradir, static_cast<FileType>(type));
9467
				f->readFromFile(File.fullFilename());
9470
				f->readFromFile(File.fullFilename());
9468
			}
9471
			}
9469
 
9472
 
9470
			File.remove();
9473
			File.remove();
9471
		}
9474
		}
9472
	}
9475
	}
9473
 
9476
 
9474
	RARCloseArchive(hArcData);
9477
	RARCloseArchive(hArcData);
-
 
9478
 
-
 
9479
	if (outputDir.exists())
-
 
9480
		outputDir.removeDir(L".", true, true);
9475
 
9481
 
9476
	if ( error )
9482
	if ( error )
9477
	{
9483
	{
9478
		delete archive;
9484
		delete archive;
9479
		archive = NULL;
9485
		archive = NULL;