From da1ce22d592a480c7103d850b4d82d72a99ca066 Mon Sep 17 00:00:00 2001 From: sirakaba Date: Wed, 24 Feb 2010 05:40:07 +0000 Subject: [PATCH] =?utf8?q?while=E3=82=92do-while=E3=81=AB=E5=A4=89?= =?utf8?q?=E6=9B=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@255 9df91469-1e22-0410-86e7-ea8537beb833 --- src/plugin/spiLibrary/spiLibrary.cpp | 52 +++++++++++----------- src/plugin/xpiLibrary/xpiLibrary.cpp | 83 +++++++++++++++++------------------- 2 files changed, 63 insertions(+), 72 deletions(-) diff --git a/src/plugin/spiLibrary/spiLibrary.cpp b/src/plugin/spiLibrary/spiLibrary.cpp index 2abf903..32ca549 100644 --- a/src/plugin/spiLibrary/spiLibrary.cpp +++ b/src/plugin/spiLibrary/spiLibrary.cpp @@ -137,38 +137,36 @@ int __stdcall LoadPlugin wxStandardPaths p; wxString szSPIPath = wxPathOnly(p.GetExecutablePath()) + wxT("/lib/"), szSPIName; wxDir fs(szSPIPath); - bool b = fs.GetFirst(& szSPIName, wxT("*.spi")); - while (b) + if (fs.GetFirst(& szSPIName, wxT("*.spi"))) { - // SPIをロード。 - wxString szLibName = szSPIPath + szSPIName; - g_hLib = ::LoadLibrary(szLibName.wchar_str()); - if (g_hLib == NULL) + do { - b = fs.GetNext(& szSPIName); - continue; - } + // SPIをロード。 + g_hLib = ::LoadLibrary((szSPIPath + szSPIName).wchar_str()); + if (g_hLib == NULL) + { + continue; + } - // GetPluginInfoを実行。 - FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo"); - char szPluginType[5]; // 種類4bytes + NULL - if (fpProc == NULL - || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szPluginType, sizeof(szPluginType)) <= 0 - || szPluginType[2] != 'A' || szPluginType[3] != 'M') - { - ::FreeLibrary(g_hLib); - b = fs.GetNext(& szSPIName); - continue; - } + // GetPluginInfoを実行。 + FARPROC fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo"); + char szPluginType[5]; // 種類4bytes + NULL + if (fpProc == NULL + || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szPluginType, sizeof(szPluginType)) <= 0 + || szPluginType[2] != 'A' || szPluginType[3] != 'M') + { + ::FreeLibrary(g_hLib); + continue; + } - // 書庫に対応しているかチェック。 - if (CheckArchive(_szArcName, NULL) == TPI_ERROR_SUCCESS) - { - // 対応していれば処理を終了。 - return TPI_ERROR_SUCCESS; + // 書庫に対応しているかチェック。 + if (CheckArchive(_szArcName, NULL) == TPI_ERROR_SUCCESS) + { + // 対応していれば処理を終了。 + return TPI_ERROR_SUCCESS; + } } - - b = fs.GetNext(& szSPIName); + while (fs.GetNext(& szSPIName)); } return TPI_ERROR_U_LOAD_LIBRARY; } diff --git a/src/plugin/xpiLibrary/xpiLibrary.cpp b/src/plugin/xpiLibrary/xpiLibrary.cpp index 4c00967..01dad01 100644 --- a/src/plugin/xpiLibrary/xpiLibrary.cpp +++ b/src/plugin/xpiLibrary/xpiLibrary.cpp @@ -257,7 +257,6 @@ int __stdcall GetFileInformation static wxString szXPIPath, szXPIName, szArcName = * (wxString *) _hArchive; static int nColorDepth; static wxDir fs; - bool b; if (_bFirst) { wxStandardPaths p; @@ -279,55 +278,49 @@ int __stdcall GetFileInformation nColorDepth = picInfo.colorDepth; ::LocalUnlock(picInfo.hInfo); ::LocalFree(picInfo.hInfo); - - b = fs.GetFirst(& szXPIName, wxT("*.xpi")); - } - else - { - b = fs.GetNext(& szXPIName); } - while (b) - { - // XPIをロード。 - wxString szLibName = szXPIPath + szXPIName; - HMODULE hXPI = ::LoadLibrary(szLibName.wchar_str()); - if (hXPI == NULL) - { - b = fs.GetNext(& szXPIName); - continue; - } - // GetPluginInfoを実行。 - FARPROC fpProc = ::GetProcAddress(hXPI, "GetPluginInfo"); - char szTemp[20]; - if (fpProc == NULL - || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szTemp, sizeof(szTemp)) <= 0 - || szTemp[2] != 'X' || szTemp[3] != 'N' - || ((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp)) <= 0) - { - ::FreeLibrary(hXPI); - b = fs.GetNext(& szXPIName); - continue; - } - - // 対応確認。 - fpProc = ::GetProcAddress(hXPI, "IsSupported"); - if (fpProc == NULL || ! ((BOOL (PASCAL *)(int)) fpProc)(nColorDepth)) + if (_bFirst ? fs.GetFirst(& szXPIName, wxT("*.xpi")) : fs.GetNext(& szXPIName)) + { + do { - ::FreeLibrary(hXPI); - b = fs.GetNext(& szXPIName); - continue; + // XPIをロード。 + wxString szLibName = szXPIPath + szXPIName; + HMODULE hXPI = ::LoadLibrary(szLibName.wchar_str()); + if (hXPI == NULL) + { + continue; + } + + // GetPluginInfoを実行。 + FARPROC fpProc = ::GetProcAddress(hXPI, "GetPluginInfo"); + char szTemp[20]; + if (fpProc == NULL + || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szTemp, sizeof(szTemp)) <= 0 + || szTemp[2] != 'X' || szTemp[3] != 'N' + || ((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp)) <= 0) + { + ::FreeLibrary(hXPI); + continue; + } + + // 対応確認。 + fpProc = ::GetProcAddress(hXPI, "IsSupported"); + if (fpProc == NULL || ! ((BOOL (PASCAL *)(int)) fpProc)(nColorDepth)) + { + ::FreeLibrary(hXPI); + continue; + } + + _fiInfo->fnFileName = wxFileName(szArcName); + _fiInfo->fnFileName.SetVolume(wxEmptyString); + _fiInfo->fnFileName.SetPath(szXPIName); + _fiInfo->fnFileName.SetExt(MB2String(szTemp)); + _fiInfo->szStoredName = _fiInfo->fnFileName.GetFullPath(); + return TPI_ERROR_SUCCESS; } - - _fiInfo->fnFileName = wxFileName(szArcName); - _fiInfo->fnFileName.SetVolume(wxEmptyString); - _fiInfo->fnFileName.SetPath(szXPIName); - _fiInfo->fnFileName.SetExt(MB2String(szTemp)); - _fiInfo->szStoredName = _fiInfo->fnFileName.GetFullPath(); - - return TPI_ERROR_SUCCESS; + while (fs.GetNext(& szXPIName)); } - return TPI_ERROR_S_ENDOFDATA; } -- 2.11.0