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
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
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