OSDN Git Service

whileをdo-whileに変更。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 24 Feb 2010 05:40:07 +0000 (05:40 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 24 Feb 2010 05:40:07 +0000 (05:40 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@255 9df91469-1e22-0410-86e7-ea8537beb833

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

index 2abf903..32ca549 100644 (file)
@@ -137,38 +137,36 @@ int __stdcall LoadPlugin
        wxStandardPaths p;\r
        wxString szSPIPath = wxPathOnly(p.GetExecutablePath()) + wxT("/lib/"), szSPIName;\r
        wxDir fs(szSPIPath);\r
-       bool b = fs.GetFirst(& szSPIName, wxT("*.spi"));\r
-       while (b)\r
+       if (fs.GetFirst(& szSPIName, wxT("*.spi")))\r
        {\r
-               // SPIをロード。\r
-               wxString szLibName = szSPIPath + szSPIName;\r
-               g_hLib = ::LoadLibrary(szLibName.wchar_str());\r
-               if (g_hLib == NULL)\r
+               do\r
                {\r
-                       b = fs.GetNext(& szSPIName);\r
-                       continue;\r
-               }\r
+                       // SPIをロード。\r
+                       g_hLib = ::LoadLibrary((szSPIPath + szSPIName).wchar_str());\r
+                       if (g_hLib == NULL)\r
+                       {\r
+                               continue;\r
+                       }\r
 \r
-               // GetPluginInfoを実行。\r
-               FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo");\r
-               char szPluginType[5]; // 種類4bytes + NULL\r
-               if (fpProc == NULL\r
-                       || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szPluginType, sizeof(szPluginType)) <= 0\r
-                       || szPluginType[2] != 'A' || szPluginType[3] != 'M')\r
-               {\r
-                       ::FreeLibrary(g_hLib);\r
-                       b = fs.GetNext(& szSPIName);\r
-                       continue;\r
-               }\r
+                       // GetPluginInfoを実行。\r
+                       FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo");\r
+                       char szPluginType[5]; // 種類4bytes + NULL\r
+                       if (fpProc == NULL\r
+                               || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szPluginType, sizeof(szPluginType)) <= 0\r
+                               || szPluginType[2] != 'A' || szPluginType[3] != 'M')\r
+                       {\r
+                               ::FreeLibrary(g_hLib);\r
+                               continue;\r
+                       }\r
 \r
-               // 書庫に対応しているかチェック。\r
-               if (CheckArchive(_szArcName, NULL) == TPI_ERROR_SUCCESS)\r
-               {\r
-                       // 対応していれば処理を終了。\r
-                       return TPI_ERROR_SUCCESS;\r
+                       // 書庫に対応しているかチェック。\r
+                       if (CheckArchive(_szArcName, NULL) == TPI_ERROR_SUCCESS)\r
+                       {\r
+                               // 対応していれば処理を終了。\r
+                               return TPI_ERROR_SUCCESS;\r
+                       }\r
                }\r
-\r
-               b = fs.GetNext(& szSPIName);\r
+               while (fs.GetNext(& szSPIName));\r
        }\r
        return TPI_ERROR_U_LOAD_LIBRARY;\r
 }\r
index 4c00967..01dad01 100644 (file)
@@ -257,7 +257,6 @@ int __stdcall GetFileInformation
        static wxString szXPIPath, szXPIName, szArcName = * (wxString *) _hArchive;\r
        static int nColorDepth;\r
        static wxDir fs;\r
-       bool b;\r
        if (_bFirst)\r
        {\r
                wxStandardPaths p;\r
@@ -279,55 +278,49 @@ int __stdcall GetFileInformation
                nColorDepth = picInfo.colorDepth;\r
                ::LocalUnlock(picInfo.hInfo);\r
                ::LocalFree(picInfo.hInfo);\r
-\r
-               b = fs.GetFirst(& szXPIName, wxT("*.xpi"));\r
-       }\r
-       else\r
-       {\r
-               b = fs.GetNext(& szXPIName);\r
        }\r
-       while (b)\r
-       {\r
-               // XPIをロード。\r
-               wxString szLibName = szXPIPath + szXPIName;\r
-               HMODULE hXPI = ::LoadLibrary(szLibName.wchar_str());\r
-               if (hXPI == NULL)\r
-               {\r
-                       b = fs.GetNext(& szXPIName);\r
-                       continue;\r
-               }\r
 \r
-               // GetPluginInfoを実行。\r
-               FARPROC fpProc = ::GetProcAddress(hXPI, "GetPluginInfo");\r
-               char szTemp[20];\r
-               if (fpProc == NULL\r
-                       || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szTemp, sizeof(szTemp)) <= 0\r
-                       || szTemp[2] != 'X' || szTemp[3] != 'N'\r
-                       || ((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp)) <= 0)\r
-               {\r
-                       ::FreeLibrary(hXPI);\r
-                       b = fs.GetNext(& szXPIName);\r
-                       continue;\r
-               }\r
-\r
-               // 対応確認。\r
-               fpProc = ::GetProcAddress(hXPI, "IsSupported");\r
-               if (fpProc == NULL || ! ((BOOL (PASCAL *)(int)) fpProc)(nColorDepth))\r
+       if (_bFirst ? fs.GetFirst(& szXPIName, wxT("*.xpi")) : fs.GetNext(& szXPIName))\r
+       {\r
+               do\r
                {\r
-                       ::FreeLibrary(hXPI);\r
-                       b = fs.GetNext(& szXPIName);\r
-                       continue;\r
+                       // XPIをロード。\r
+                       wxString szLibName = szXPIPath + szXPIName;\r
+                       HMODULE hXPI = ::LoadLibrary(szLibName.wchar_str());\r
+                       if (hXPI == NULL)\r
+                       {\r
+                               continue;\r
+                       }\r
+\r
+                       // GetPluginInfoを実行。\r
+                       FARPROC fpProc = ::GetProcAddress(hXPI, "GetPluginInfo");\r
+                       char szTemp[20];\r
+                       if (fpProc == NULL\r
+                               || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szTemp, sizeof(szTemp)) <= 0\r
+                               || szTemp[2] != 'X' || szTemp[3] != 'N'\r
+                               || ((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp)) <= 0)\r
+                       {\r
+                               ::FreeLibrary(hXPI);\r
+                               continue;\r
+                       }\r
+\r
+                       // 対応確認。\r
+                       fpProc = ::GetProcAddress(hXPI, "IsSupported");\r
+                       if (fpProc == NULL || ! ((BOOL (PASCAL *)(int)) fpProc)(nColorDepth))\r
+                       {\r
+                               ::FreeLibrary(hXPI);\r
+                               continue;\r
+                       }\r
+\r
+                       _fiInfo->fnFileName = wxFileName(szArcName);\r
+                       _fiInfo->fnFileName.SetVolume(wxEmptyString);\r
+                       _fiInfo->fnFileName.SetPath(szXPIName);\r
+                       _fiInfo->fnFileName.SetExt(MB2String(szTemp));\r
+                       _fiInfo->szStoredName = _fiInfo->fnFileName.GetFullPath();\r
+                       return TPI_ERROR_SUCCESS;\r
                }\r
-\r
-               _fiInfo->fnFileName = wxFileName(szArcName);\r
-               _fiInfo->fnFileName.SetVolume(wxEmptyString);\r
-               _fiInfo->fnFileName.SetPath(szXPIName);\r
-               _fiInfo->fnFileName.SetExt(MB2String(szTemp));\r
-               _fiInfo->szStoredName = _fiInfo->fnFileName.GetFullPath();\r
-\r
-               return TPI_ERROR_SUCCESS;\r
+               while (fs.GetNext(& szXPIName));\r
        }\r
-\r
        return TPI_ERROR_S_ENDOFDATA;\r
 }\r
 \r