OSDN Git Service

CheckArchiveをOpenArchiveに統合。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 23 Sep 2010 07:32:10 +0000 (07:32 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 23 Sep 2010 07:32:10 +0000 (07:32 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@338 9df91469-1e22-0410-86e7-ea8537beb833

13 files changed:
doc/history.html
src/common/handle/TPIHandle.cpp
src/common/handle/TPIHandle.h
src/common/header/plugin.def
src/common/header/plugin.h
src/lychee/frm_main.cpp
src/plugin/7zArc/7zArc.cpp
src/plugin/calLibrary/calLibrary.cpp
src/plugin/cuiWrapper/cuiWrapper.cpp
src/plugin/eggArc/eggArc.cpp
src/plugin/rarArc/rarArc.cpp
src/plugin/spiLibrary/spiLibrary.cpp
src/plugin/xpiLibrary/xpiLibrary.cpp

index de43f9f..c92e3df 100644 (file)
@@ -27,6 +27,7 @@
       <ul>\r
        <li class="chg">Windows上でVisual Studio 2008へ移行。</li>\r
        <li class="chg">Windows上でwxWidgets2.9.1に移行。</li>\r
+       <li class="chg">CheckArchiveをOpenArchiveに統合。</li>\r
       </ul>\r
      </dd>\r
      <dt>Lychee</dt>\r
index 91959b9..3180243 100644 (file)
@@ -129,14 +129,6 @@ bool TPIHandle::GetFormatInformation(TPI_FORMATINFO * _fiInfo, bool _bFirst)
        return this->nErrorCode == TPI_ERROR_SUCCESS;\r
 }\r
 \r
-bool TPIHandle::CheckArchive(const wxString & _szArcName)\r
-{\r
-       this->nErrorCode = TPI_ERROR_SUCCESS;\r
-       GetAPIAddress("CheckArchive", p);\r
-       this->nErrorCode = ((int (__stdcall *)(const wxString &)) p)(_szArcName);\r
-       return this->nErrorCode == TPI_ERROR_SUCCESS;\r
-}\r
-\r
 bool TPIHandle::OpenArchive(const wxString & _szArcName, wxULongLong_t * _llFileCount)\r
 {\r
        this->nErrorCode = TPI_ERROR_SUCCESS;\r
index d83e844..75674de 100644 (file)
@@ -40,7 +40,6 @@ class TPIHandle
                bool GetPluginInformation(unsigned int _uInfoId, wxULongLong_t _llSubOption, void * _pPtr);\r
                bool GetFormatInformation(TPI_FORMATINFO * _fiInfo, bool _bFirst = false);\r
 \r
-               bool CheckArchive(const wxString & _szArcName);\r
                bool OpenArchive(const wxString & _szArcName, wxULongLong_t * _llFileCount = NULL);\r
                bool CloseArchive(void);\r
                bool GetFileInformation(TPI_FILEINFO * _fiInfo, bool _bFirst = false);\r
index 62c8d05..ce4cb1e 100644 (file)
@@ -6,7 +6,6 @@ EXPORTS
        GetFormatInformation            @2
        LoadPlugin                                      @3
        FreePlugin                                      @4
-       CheckArchive                            @10
        OpenArchive                                     @20
        CloseArchive                            @21
        GetFileInformation                      @22
index 11c42c7..e6425cd 100644 (file)
@@ -434,15 +434,6 @@ int __stdcall FreePlugin
        void * _pReserved = NULL\r
 );\r
 \r
-/** プラグインが対応しているファイルかどうか確認する。\r
- * @param  _szArcName   確認する対象となる書庫名。\r
- * @return エラーコード。\r
- */\r
-int __stdcall CheckArchive\r
-(\r
-       const wxString & _szArcName\r
-);\r
-\r
 /** 書庫のハンドルを取得する。\r
  * @param  _szArcName   操作する対象となる書庫名。\r
  * @param  _hArchive    取得したハンドルを格納するためのポインタ。\r
index 26bf6a0..0ba4533 100644 (file)
@@ -1017,7 +1017,7 @@ bool MainFrame::LoadTPI(wxString szFileName, wxULongLong_t * llFileCount)
                        tpi.SetCallbackProc(TPICallbackProc);\r
 \r
                        // 対応確認。\r
-                       if (! tpi.CheckArchive(szFileName) || ! tpi.OpenArchive(szFileName, llFileCount))\r
+                       if (! tpi.OpenArchive(szFileName, llFileCount))\r
                        {\r
                                tpi.FreeLibrary();\r
                                * llFileCount = 0;\r
index b5ec44e..fec9acd 100644 (file)
@@ -793,14 +793,6 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
-(\r
-       const wxString &\r
-)\r
-{\r
-       return TPI_ERROR_SUCCESS;\r
-}\r
-\r
 int __stdcall OpenArchive\r
 (\r
        const wxString & _szArcName,\r
index 9ee8207..25a41a9 100644 (file)
@@ -72,7 +72,7 @@ wxDateTime FileTimeToWxDateTime(FILETIME * pft)
 \r
 BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void * _lpEis)\r
 {\r
-       if (_uMsg != ::RegisterWindowMessage((const wchar_t *) WM_ARCEXTRACT))\r
+       if (_uMsg != ::RegisterWindowMessage(WM_ARCEXTRACT))\r
        {\r
                // 独自仕様などに対する予備コード。\r
                return TRUE;\r
@@ -469,7 +469,7 @@ int __stdcall LoadPlugin
                }\r
 \r
                // ライブラリをロード。\r
-               g_LibInfo.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetAttribute(wxT("name"), wxEmptyString).c_str());\r
+               g_LibInfo.hLib = ::LoadLibrary(xmlLibrary->GetAttribute(wxT("name"), wxEmptyString).wchar_str());\r
                if (g_LibInfo.hLib == NULL)\r
                {\r
                        return TPI_ERROR_U_LOAD_LIBRARY;\r
@@ -481,7 +481,7 @@ int __stdcall LoadPlugin
                // 代替ライブラリもロード。ロードできなくてもエラーにはしない。\r
                g_LibInfoAlt.szPrefix = xmlLibrary->GetAttribute(wxT("prefix-alt"), wxEmptyString);\r
                g_LibInfoAlt.fUnicode = xmlLibrary->GetAttribute(wxT("unicode-alt"), wxT("0")) == wxT("1");\r
-               g_LibInfoAlt.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetAttribute(wxT("name-alt"), wxEmptyString).c_str());\r
+               g_LibInfoAlt.hLib = ::LoadLibrary(xmlLibrary->GetAttribute(wxT("name-alt"), wxEmptyString).wchar_str());\r
 \r
                return TPI_ERROR_SUCCESS;\r
        }\r
@@ -490,7 +490,7 @@ int __stdcall LoadPlugin
        for (g_LibInfo.nLibIndex = 0; g_LibInfo.nLibIndex < 300 && xmlLibrary != NULL; g_LibInfo.nLibIndex++)\r
        {\r
                // ライブラリをロード。\r
-               g_LibInfo.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetAttribute(wxT("name"), wxEmptyString).c_str());\r
+               g_LibInfo.hLib = ::LoadLibrary(xmlLibrary->GetAttribute(wxT("name"), wxEmptyString).wchar_str());\r
                if (g_LibInfo.hLib == NULL)\r
                {\r
                        xmlLibrary = xmlLibrary->GetNext();\r
@@ -502,13 +502,22 @@ int __stdcall LoadPlugin
                // 代替ライブラリもロード。ロードできなくてもエラーにはしない。\r
                g_LibInfoAlt.szPrefix = xmlLibrary->GetAttribute(wxT("prefix-alt"), wxEmptyString);\r
                g_LibInfoAlt.fUnicode = xmlLibrary->GetAttribute(wxT("unicode-alt"), wxT("0")) == wxT("1");\r
-               g_LibInfoAlt.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetAttribute(wxT("name-alt"), wxEmptyString).c_str());\r
+               g_LibInfoAlt.hLib = ::LoadLibrary(xmlLibrary->GetAttribute(wxT("name-alt"), wxEmptyString).wchar_str());\r
                g_LibInfo.node = * xmlLibrary;\r
 \r
+               // Unicodeモードに設定。\r
+               FARPROC fpProc = ::GetAPIAddress("SetUnicodeMode", false);\r
+               if (fpProc != NULL)\r
+               {\r
+                       ((BOOL (__stdcall *)(BOOL)) fpProc)(TRUE);\r
+               }\r
+\r
                // 書庫に対応しているかチェック。\r
-               if (CheckArchive(_szArcName) == TPI_ERROR_SUCCESS)\r
+               fpProc = ::GetAPIAddress("CheckArchive", true);\r
+               if (fpProc != NULL && (g_LibInfo.fUnicode\r
+                               ? ((BOOL (__stdcall *)(const wchar_t *, const int)) fpProc)(_szArcName.wchar_str(), 0)\r
+                               : ((BOOL (__stdcall *)(const char    *, const int)) fpProc)(_szArcName.ToUTF8(),    0)))\r
                {\r
-                       // 対応していれば処理を終了。\r
                        return TPI_ERROR_SUCCESS;\r
                }\r
 \r
@@ -529,35 +538,6 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
-(\r
-       const wxString & _szArcName\r
-)\r
-{\r
-       // Unicodeモードに設定。\r
-       FARPROC fpProc = ::GetAPIAddress("SetUnicodeMode", false);\r
-       if (fpProc != NULL)\r
-       {\r
-               ((BOOL (__stdcall *)(BOOL)) fpProc)(TRUE);\r
-       }\r
-\r
-       fpProc = ::GetAPIAddress("CheckArchive", true);\r
-       if (fpProc == NULL)\r
-       {\r
-               return TPI_ERROR_U_USE_LIBRARY;\r
-       }\r
-\r
-       if (! (g_LibInfo.fUnicode\r
-               ? ((BOOL (__stdcall *)(const wchar_t *, const int)) fpProc)(_szArcName.wchar_str(), 0)\r
-               : ((BOOL (__stdcall *)(const char    *, const int)) fpProc)(_szArcName.ToUTF8(),    0)\r
-       ))\r
-       {\r
-               return TPI_ERROR_D_UNSUPPORTED;\r
-       }\r
-\r
-       return TPI_ERROR_SUCCESS;\r
-}\r
-\r
 int __stdcall OpenArchive\r
 (\r
        const wxString & _szArcName,\r
index 9716a91..c771903 100644 (file)
@@ -273,10 +273,21 @@ int __stdcall LoadPlugin
                g_LibInfo.node = * xmlLibrary;\r
 \r
                // 書庫に対応しているかチェック。\r
-               if (CheckArchive(_szArcName) == TPI_ERROR_SUCCESS)\r
+               wxFileName fnArchive(_szArcName);\r
+               wxArrayString asExt = ::wxStringTokenize(g_LibInfo.node.GetAttribute(wxT("suffix"), wxEmptyString), wxT(";"));\r
+               if (! g_LibInfo.node.HasAttribute(wxT("list")))\r
                {\r
-                       // 対応していれば処理を終了。\r
-                       return TPI_ERROR_SUCCESS;\r
+                       return TPI_ERROR_ARC_UNSUPPORTED;\r
+               }\r
+\r
+               for (size_t i = 0; i < asExt.GetCount(); i++)\r
+               {\r
+                       // .tar.XXXなど二重判定への対応。\r
+//                     if (asExt[i].IsSameAs(fnArchive.GetExt(), false))\r
+                       if (fnArchive.GetFullName().EndsWith(wxT('.') + asExt[i]))\r
+                       {\r
+                               return TPI_ERROR_SUCCESS;\r
+                       }\r
                }\r
 \r
                xmlLibrary = xmlLibrary->GetNext();\r
@@ -293,31 +304,6 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
-(\r
-       const wxString & _szArcName\r
-)\r
-{\r
-       wxFileName fnArchive(_szArcName);\r
-       wxArrayString asExt = ::wxStringTokenize(g_LibInfo.node.GetAttribute(wxT("suffix"), wxEmptyString), wxT(";"));\r
-       if (! g_LibInfo.node.HasAttribute(wxT("list")))\r
-       {\r
-               return TPI_ERROR_ARC_UNSUPPORTED;\r
-       }\r
-\r
-       for (size_t i = 0; i < asExt.GetCount(); i++)\r
-       {\r
-               // .tar.XXXなど二重判定への対応。\r
-//             if (asExt[i].IsSameAs(fnArchive.GetExt(), false))\r
-               if (fnArchive.GetFullName().EndsWith(wxT('.') + asExt[i]))\r
-               {\r
-                       return TPI_ERROR_SUCCESS;\r
-               }\r
-       }\r
-\r
-       return TPI_ERROR_ARC_UNSUPPORTED;\r
-}\r
-\r
 int __stdcall OpenArchive\r
 (\r
        const wxString & _szArcName,\r
index e1f3602..bfbfa1b 100644 (file)
@@ -229,9 +229,11 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
+int __stdcall OpenArchive\r
 (\r
-       const wxString & _szArcName\r
+       const wxString & _szArcName,\r
+       void * * _hArchive,\r
+       wxULongLong_t *\r
 )\r
 {\r
        FARPROC fpProc = ::GetAPIAddress("IsValidArchive");\r
@@ -241,22 +243,18 @@ int __stdcall CheckArchive
        }\r
 \r
        egg_type eType;\r
-       return ErrorCodeConvert(((UINT (__cdecl *)(const wchar_t *, egg_type *)) fpProc)(_szArcName.wchar_str(), & eType));\r
-}\r
+       int nErrorCode = ErrorCodeConvert(((UINT (__cdecl *)(const wchar_t *, egg_type *)) fpProc)(_szArcName.wchar_str(), & eType));\r
+       if (nErrorCode != TPI_ERROR_SUCCESS)\r
+       {\r
+               return nErrorCode;\r
+       }\r
 \r
-int __stdcall OpenArchive\r
-(\r
-       const wxString & _szArcName,\r
-       void * * _hArchive,\r
-       wxULongLong_t *\r
-)\r
-{\r
-       FARPROC fpProc = ::GetAPIAddress("CreateEgg");\r
+       fpProc = ::GetAPIAddress("CreateEgg");\r
        if (fpProc == NULL)\r
        {\r
                return TPI_ERROR_U_USE_LIBRARY;\r
        }\r
-       int nErrorCode = ErrorCodeConvert(((UINT (__cdecl *)(void **, eggevent::Proc, void *)) fpProc)(_hArchive, CallbackProc, _hArchive));\r
+       nErrorCode = ErrorCodeConvert(((UINT (__cdecl *)(void **, eggevent::Proc, void *)) fpProc)(_hArchive, CallbackProc, _hArchive));\r
        if (nErrorCode != TPI_ERROR_SUCCESS)\r
        {\r
                return nErrorCode;\r
index d728f97..11d199c 100644 (file)
@@ -210,14 +210,6 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
-(\r
-       const wxString &\r
-)\r
-{\r
-       return TPI_ERROR_SUCCESS;\r
-}\r
-\r
 int __stdcall OpenArchive\r
 (\r
        const wxString & _szArcName,\r
index 894b0ed..c43aff1 100644 (file)
@@ -119,6 +119,23 @@ int __stdcall LoadPlugin
        wxULongLong_t\r
 )\r
 {\r
+       // ファイルを開く。\r
+       wxFile hFile;\r
+       if (! hFile.Exists(_szArcName) || ! hFile.Open(_szArcName, wxFile::read))\r
+       {\r
+               return TPI_ERROR_IO_ARC_OPEN;\r
+       }\r
+\r
+       // 最初の2KBを読み込み。\r
+       char buffer[2050];\r
+       ::ZeroMemory(buffer, sizeof(buffer));\r
+       if (hFile.Read(buffer, sizeof(buffer)) == wxInvalidOffset)\r
+       {\r
+               hFile.Close();\r
+               return TPI_ERROR_IO_ARC_READ;\r
+       }\r
+       hFile.Close();\r
+\r
        wxStandardPaths p;\r
        wxString szSPIPath = wxPathOnly(p.GetExecutablePath()) + wxT("/lib/"), szSPIName;\r
        wxDir fs(szSPIPath);\r
@@ -145,7 +162,14 @@ int __stdcall LoadPlugin
                        }\r
 \r
                        // 書庫に対応しているかチェック。\r
-                       if (CheckArchive(_szArcName) == TPI_ERROR_SUCCESS)\r
+                       fpProc = ::GetProcAddress(g_hLib, "IsSupported");\r
+                       if (fpProc == NULL)\r
+                       {\r
+                               ::FreeLibrary(g_hLib);\r
+                               continue;\r
+                       }\r
+\r
+                       if (((BOOL (PASCAL *)(const char *, unsigned long)) fpProc)(_szArcName.ToUTF8(), (unsigned long) buffer))\r
                        {\r
                                // 対応していれば処理を終了。\r
                                return TPI_ERROR_SUCCESS;\r
@@ -165,34 +189,6 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
-(\r
-       const wxString & _szArcName\r
-)\r
-{\r
-       FARPROC fpProc = ::GetProcAddress(g_hLib, "IsSupported");\r
-       if (fpProc == NULL)\r
-       {\r
-               return TPI_ERROR_U_USE_LIBRARY;\r
-       }\r
-\r
-       wxFile hFile;\r
-       if (! hFile.Exists(_szArcName) || ! hFile.Open(_szArcName, wxFile::read))\r
-       {\r
-               return TPI_ERROR_IO_ARC_OPEN;\r
-       }\r
-\r
-       char buffer[2050];\r
-       ::ZeroMemory(buffer, sizeof(buffer));\r
-       if (hFile.Read(buffer, sizeof(buffer)) == wxInvalidOffset)\r
-       {\r
-               hFile.Close();\r
-               return TPI_ERROR_IO_ARC_READ;\r
-       }\r
-       hFile.Close();\r
-       return ((BOOL (PASCAL *)(const char *, unsigned long)) fpProc)(_szArcName.ToUTF8(), (unsigned long) buffer) ? TPI_ERROR_SUCCESS : TPI_ERROR_D_UNSUPPORTED;\r
-}\r
-\r
 int __stdcall OpenArchive\r
 (\r
        const wxString & _szArcName,\r
index c5f8ae0..3ea81b5 100644 (file)
@@ -124,40 +124,63 @@ int __stdcall LoadPlugin
        wxULongLong_t\r
 )\r
 {\r
+       // ファイルを開く。\r
+       wxFile hFile;\r
+       if (! hFile.Exists(_szArcName) || ! hFile.Open(_szArcName, wxFile::read))\r
+       {\r
+               return TPI_ERROR_IO_ARC_OPEN;\r
+       }\r
+\r
+       // 最初の2KBを読み込み。\r
+       char buffer[2050];\r
+       ::ZeroMemory(buffer, sizeof(buffer));\r
+       if (hFile.Read(buffer, sizeof(buffer)) == wxInvalidOffset)\r
+       {\r
+               hFile.Close();\r
+               return TPI_ERROR_IO_ARC_READ;\r
+       }\r
+       hFile.Close();\r
+\r
        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
-               g_hLib = ::LoadLibrary((szSPIPath + szSPIName).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] != 'I' || szPluginType[3] != 'N')\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] != 'I' || szPluginType[3] != 'N')\r
+                       {\r
+                               ::FreeLibrary(g_hLib);\r
+                               continue;\r
+                       }\r
 \r
-               // 書庫に対応しているかチェック。\r
-               if (CheckArchive(_szArcName) == TPI_ERROR_SUCCESS)\r
-               {\r
-                       // 対応していれば処理を終了。\r
-                       return TPI_ERROR_SUCCESS;\r
-               }\r
+                       // 書庫に対応しているかチェック。\r
+                       fpProc = ::GetProcAddress(g_hLib, "IsSupported");\r
+                       if (fpProc == NULL)\r
+                       {\r
+                               ::FreeLibrary(g_hLib);\r
+                               continue;\r
+                       }\r
 \r
-               b = fs.GetNext(& szSPIName);\r
+                       if (((BOOL (PASCAL *)(const char *, unsigned long)) fpProc)(_szArcName.ToUTF8(), (unsigned long) buffer))\r
+                       {\r
+                               // 対応していれば処理を終了。\r
+                               return TPI_ERROR_SUCCESS;\r
+                       }\r
+               }\r
+               while (fs.GetNext(& szSPIName));\r
        }\r
        return TPI_ERROR_U_LOAD_LIBRARY;\r
 }\r
@@ -171,34 +194,6 @@ int __stdcall FreePlugin
        return TPI_ERROR_SUCCESS;\r
 }\r
 \r
-int __stdcall CheckArchive\r
-(\r
-       const wxString & _szArcName\r
-)\r
-{\r
-       FARPROC fpProc = ::GetProcAddress(g_hLib, "IsSupported");\r
-       if (fpProc == NULL)\r
-       {\r
-               return TPI_ERROR_U_USE_LIBRARY;\r
-       }\r
-\r
-       wxFile hFile;\r
-       if (! hFile.Exists(_szArcName) || ! hFile.Open(_szArcName, wxFile::read))\r
-       {\r
-               return TPI_ERROR_IO_ARC_OPEN;\r
-       }\r
-\r
-       char buffer[2050];\r
-       ::ZeroMemory(buffer, sizeof(buffer));\r
-       if (hFile.Read(buffer, sizeof(buffer)) == wxInvalidOffset)\r
-       {\r
-               hFile.Close();\r
-               return TPI_ERROR_IO_ARC_READ;\r
-       }\r
-       hFile.Close();\r
-       return ((BOOL (PASCAL *)(const char *, unsigned long)) fpProc)(_szArcName.ToUTF8(), (unsigned long) buffer) ? TPI_ERROR_SUCCESS : TPI_ERROR_D_UNSUPPORTED;\r
-}\r
-\r
 int __stdcall OpenArchive\r
 (\r
        const wxString & _szArcName,\r