OSDN Git Service

CallbackProcに関する変更。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 22 Nov 2009 03:24:10 +0000 (03:24 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sun, 22 Nov 2009 03:24:10 +0000 (03:24 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@146 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/spiLibrary/spiLibrary.cpp
src/plugin/xpiLibrary/xpiLibrary.cpp

index 7c79903..92cdc70 100644 (file)
@@ -61,17 +61,12 @@ BOOL __stdcall DllMain(HMODULE, DWORD fdwReason, void *)
 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
@@ -148,7 +143,7 @@ int __stdcall LoadPlugin
        {\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
@@ -334,7 +329,7 @@ int __stdcall GetArchiveInformation
                        _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
@@ -368,29 +363,35 @@ int __stdcall Command
                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
@@ -400,7 +401,7 @@ int __stdcall Command
                        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
@@ -410,12 +411,12 @@ int __stdcall Command
                        }\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
@@ -434,7 +435,7 @@ int __stdcall Command
                                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
@@ -446,13 +447,14 @@ int __stdcall Command
                        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
index ba09e7d..cf8fbad 100644 (file)
@@ -63,8 +63,6 @@ int __stdcall CallbackProc(int _nNow, int _nMax, long _lData)
 {\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
@@ -145,7 +143,6 @@ int __stdcall LoadPlugin
        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
@@ -362,12 +359,17 @@ int __stdcall Command
 \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
@@ -412,6 +414,11 @@ int __stdcall Command
        ::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