int __stdcall CallbackProc(int _nNow, int _nMax, long _lData)\r
{\r
// \8d\\91¢\91Ì\82ð\8f\89\8aú\89»\81B\r
- TPI_PROCESSINFO piInfo;\r
- piInfo.uMessage = TPI_MESSAGE_STATUS;\r
- piInfo.uStatus = _nNow == 0 ? TPI_STATUS_BEGINPROCESS\r
- : _nNow == _nMax ? TPI_STATUS_ENDPROCESS\r
- : _nNow < 0 ? TPI_STATUS_OPENARCHIVE : TPI_STATUS_INPROCESS;\r
- piInfo.llProcessedSize = _nNow;\r
- piInfo.fiInfo.llUnpackedSize = _nMax;\r
- piInfo.fiInfo.fnFileName = * (wxFileName *) _lData;\r
+ TPI_PROCESSINFO * piInfo = (TPI_PROCESSINFO *) _lData;\r
+ piInfo->llProcessedSize = _nNow;\r
+ piInfo->fiInfo.llUnpackedSize = _nMax;\r
\r
// \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82É\91\97\90M\81B\r
- return g_prProc != NULL && g_prProc(TPI_NOTIFY_COMMON, & piInfo) == TPI_CALLBACK_CANCEL;\r
+ return g_prProc != NULL && g_prProc(TPI_NOTIFY_COMMON, piInfo) == TPI_CALLBACK_CANCEL;\r
}\r
\r
//******************************************************************************\r
{\r
// SPI\82ð\83\8d\81[\83h\81B\r
wxString szLibName = szSPIPath + szSPIName;\r
- g_hLib = ::LoadLibraryA(szLibName.ToUTF8());\r
+ g_hLib = ::LoadLibrary(szLibName.wchar_str());\r
if (g_hLib == NULL)\r
{\r
b = fs.GetNext(& szSPIName);\r
_aiInfo->fiInfo.szTypeName = MB2String(szTemp);\r
}\r
}\r
- _aiInfo->fiInfo.szTPIName = wxT("spiLibrary");\r
+ _aiInfo->fiInfo.szTPIName = wxT("spiLibrary");\r
_aiInfo->fiInfo.llSupportedCommand = TPI_COMMAND_EXTRACT;\r
\r
return TPI_ERROR_SUCCESS;\r
return nErrorCode;\r
}\r
\r
- // \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\95Ö\8bX\8fã-1\82ð\91\97\90M\81B\r
+ // \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\r
wxFileName _fnArcName(_szArcName);\r
- if (CallbackProc(-1, 0, (long) & _fnArcName))\r
+ TPI_PROCESSINFO piInfo;\r
+ piInfo.uMessage = TPI_MESSAGE_STATUS;\r
+ piInfo.uStatus = TPI_STATUS_OPENARCHIVE;\r
+ piInfo.fiInfo.fnFileName = _fnArcName;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
{\r
return TPI_ERROR_D_SKIPPED;\r
}\r
\r
// \8f\88\97\9d\8eÀ\8ds\81B\r
- TPI_FILEINFO fiInfo;\r
- nErrorCode = GetFileInformation(hArchive, & fiInfo, TRUE);\r
+ piInfo.uStatus = TPI_STATUS_INPROCESS;\r
+ nErrorCode = GetFileInformation(hArchive, & piInfo.fiInfo, TRUE);\r
if (nErrorCode == TPI_ERROR_SUCCESS)\r
{\r
do\r
{\r
// \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\r
- if (CallbackProc(0, fiInfo.llUnpackedSize.ToULong(), (long) & fiInfo.fnFileName))\r
+ piInfo.uStatus = TPI_STATUS_BEGINPROCESS;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
{\r
nErrorCode = TPI_ERROR_D_SKIPPED;\r
break;\r
}\r
+ piInfo.uStatus = TPI_STATUS_INPROCESS;\r
\r
// \8f\88\97\9d\91Î\8fÛ\82©\82Ç\82¤\82©\94»\92è\81B\r
- if ((! _szFiles.IsEmpty()) && _szFiles.Index(fiInfo.szStoredName) == wxNOT_FOUND)\r
+ if ((! _szFiles.IsEmpty()) && _szFiles.Index(piInfo.fiInfo.szStoredName) == wxNOT_FOUND)\r
{\r
continue;\r
}\r
if (_swInfo->fStoreDirectoryPathes)\r
{\r
// \93W\8aJ\90æ\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬\81B\r
- szTargetPath += fiInfo.fnFileName.GetFullPath();\r
+ szTargetPath += piInfo.fiInfo.fnFileName.GetFullPath();\r
wxFileName fnDest(szTargetPath);\r
if (! fnDest.Mkdir(0777, wxPATH_MKDIR_FULL) || ::wxDirExists(fnDest.GetFullPath()))\r
{\r
}\r
else\r
{\r
- szTargetPath += fiInfo.fnFileName.GetFullName();\r
+ szTargetPath += piInfo.fiInfo.fnFileName.GetFullName();\r
}\r
\r
// \83t\83@\83C\83\8b\8fo\97Í\82É\82Í\91Î\89\9e\82µ\82Ä\82È\82¢\82Ì\82Å\83\81\83\82\83\8a\8fo\97Í\82Å\91ã\8ds\81B\r
HLOCAL hMemory = NULL;\r
- nErrorCode = SpiErrorCodeConvert(((int (PASCAL *)(const char *, long, char *, unsigned int, FARPROC, long)) fpProc)(_szArcName.ToUTF8(), (long) fiInfo.pCustomInfo, (char *) & hMemory, 0x0100, (FARPROC) CallbackProc, (long) & fiInfo.fnFileName));\r
+ nErrorCode = SpiErrorCodeConvert(((int (PASCAL *)(const char *, long, char *, unsigned int, FARPROC, long)) fpProc)(_szArcName.ToUTF8(), (long) piInfo.fiInfo.pCustomInfo, (char *) & hMemory, 0x0100, (FARPROC) CallbackProc, (long) & piInfo));\r
if (nErrorCode == TPI_ERROR_SUCCESS && hMemory == NULL)\r
{\r
nErrorCode = TPI_ERROR_UNDEFINED;\r
break;\r
}\r
\r
- bool bErrorOccured = hFile.Write(::LocalLock(hMemory), (size_t) fiInfo.llUnpackedSize.GetValue()) != fiInfo.llUnpackedSize;\r
+ bool bErrorOccured = hFile.Write(::LocalLock(hMemory), (size_t) piInfo.fiInfo.llUnpackedSize.GetValue()) != piInfo.fiInfo.llUnpackedSize;\r
::LocalUnlock(hMemory);\r
::LocalFree(hMemory);\r
hFile.Close();\r
nErrorCode = TPI_ERROR_SUCCESS;\r
\r
// \83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\r
- if (CallbackProc(fiInfo.llUnpackedSize.ToULong(), fiInfo.llUnpackedSize.ToULong(), (long) & fiInfo.fnFileName))\r
+ piInfo.uStatus = TPI_STATUS_ENDPROCESS;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
{\r
nErrorCode = TPI_ERROR_D_SKIPPED;\r
break;\r
}\r
}\r
- while ((nErrorCode = GetFileInformation(hArchive, & fiInfo, FALSE)) != TPI_ERROR_S_ENDOFDATA);\r
+ while ((nErrorCode = GetFileInformation(hArchive, & piInfo.fiInfo, FALSE)) != TPI_ERROR_S_ENDOFDATA);\r
if (nErrorCode == TPI_ERROR_S_ENDOFDATA)\r
{\r
// \8fI\92[\82É\92B\82µ\82½\8fê\8d\87\81B\r
{\r
// \8d\\91¢\91Ì\82ð\8f\89\8aú\89»\81B\r
TPI_PROCESSINFO * piInfo = (TPI_PROCESSINFO *) _lData;\r
- piInfo->uStatus = _nNow == 0 ? TPI_STATUS_BEGINPROCESS\r
- : _nNow == _nMax ? TPI_STATUS_ENDPROCESS : TPI_STATUS_INPROCESS;\r
piInfo->llProcessedSize = _nNow;\r
piInfo->fiInfo.llUnpackedSize = _nMax;\r
\r
wxStandardPaths p;\r
wxString szSPIPath = wxPathOnly(p.GetExecutablePath()) + wxT("/lib/"), szSPIName;\r
wxDir fs(szSPIPath);\r
-\r
bool b = fs.GetFirst(& szSPIName, wxT("*.spi"));\r
while (b)\r
{\r
\r
// \83\81\83\82\83\8a\8fo\97Í\81B\r
HANDLE hInfo, hMemory;\r
- piInfo.uStatus = TPI_STATUS_INPROCESS;\r
// \8fo\97Í\96¼\8dì\90¬\81B\r
+ piInfo.uStatus = TPI_STATUS_BEGINPROCESS;\r
piInfo.fnDestination = _fnArcName;\r
piInfo.fnDestination.SetPath(_swInfo->fnDestinationDirectory.GetPath());\r
piInfo.fnDestination.SetExt(wxT("bmp"));\r
piInfo.fiInfo.fnFileName = wxFileName(piInfo.fnDestination.GetFullName());\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
+ {\r
+ return TPI_ERROR_D_SKIPPED;\r
+ }\r
+ piInfo.uStatus = TPI_STATUS_INPROCESS;\r
nErrorCode = XpiErrorCodeConvert(((int (PASCAL *)(const char *, long, unsigned int, HANDLE *, HANDLE *, FARPROC, long)) fpProc)(_szArcName.ToUTF8(), 0, 0, & hInfo, & hMemory, (FARPROC) CallbackProc, (long) & piInfo));\r
if (nErrorCode == TPI_ERROR_SUCCESS && (hMemory == NULL || hInfo == NULL))\r
{\r
::FreeLibrary(hXPI);\r
\r
// \8dÅ\8cã\82É\83R\81[\83\8b\83o\83b\83N\82ð\91\97\90M\81B\r
+ piInfo.uStatus = TPI_STATUS_ENDPROCESS;\r
+ if (CallbackProc(0, 0, (long) & piInfo))\r
+ {\r
+ return TPI_ERROR_D_SKIPPED;\r
+ }\r
piInfo.uStatus = TPI_STATUS_CLOSEARCHIVE;\r
piInfo.fiInfo.fnFileName = _fnArcName;\r
if (CallbackProc(0, 0, (long) & piInfo))\r