OSDN Git Service

OpenArchiveでの_nFileCountの値の取得に対応。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sat, 25 Sep 2010 02:56:52 +0000 (02:56 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Sat, 25 Sep 2010 02:56:52 +0000 (02:56 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@354 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/eggArc/eggArc.cpp

index e0b5964..0b72529 100644 (file)
@@ -280,7 +280,7 @@ int __stdcall OpenArchive
 (\r
        const wxString & _szArcName,\r
        void * * _hArchive,\r
-       wxULongLong_t *\r
+       wxULongLong_t * _nFileCount\r
 )\r
 {\r
        FARPROC fpProc = ::GetAPIAddress("IsValidArchive");\r
@@ -312,7 +312,33 @@ int __stdcall OpenArchive
        }\r
 \r
        fpProc = ::GetAPIAddress("OpenArchive");\r
-       return fpProc == NULL ? TPI_ERROR_U_USE_LIBRARY : ErrorCodeConvert(((UINT (__cdecl *)(void *, wchar_t *)) fpProc)(* _hArchive, _szArcName.wchar_str()));\r
+       if (fpProc == NULL)\r
+       {\r
+               return TPI_ERROR_U_USE_LIBRARY;\r
+       }\r
+       nErrorCode = ErrorCodeConvert(((UINT (__cdecl *)(void *, wchar_t *)) fpProc)(* _hArchive, _szArcName.wchar_str()));\r
+       if (nErrorCode != TPI_ERROR_SUCCESS)\r
+       {\r
+               return nErrorCode;\r
+       }\r
+\r
+       if (_nFileCount != NULL)\r
+       {\r
+               fpProc = ::GetAPIAddress("GetFileCount");\r
+               if (fpProc == NULL)\r
+               {\r
+                       return TPI_ERROR_U_USE_LIBRARY;\r
+               }\r
+               unsigned int n;\r
+               nErrorCode = ErrorCodeConvert(((UINT (__cdecl *)(void *, size_t *)) fpProc)(* _hArchive, & n));\r
+               if (nErrorCode != TPI_ERROR_SUCCESS)\r
+               {\r
+                       return nErrorCode;\r
+               }\r
+               * _nFileCount = n;\r
+       }\r
+\r
+       return TPI_ERROR_SUCCESS;\r
 }\r
 \r
 int __stdcall CloseArchive\r