if (_nFileCount != NULL)\r
{\r
fpProc = ::GetAPIAddress("GetFileCount", true);\r
- if (fpProc == NULL)\r
- {\r
- return TPI_ERROR_U_USE_LIBRARY;\r
- }\r
-\r
- int n = g_LibInfo.fUnicode\r
- ? ((int (__stdcall *)(const wchar_t *)) fpProc)(_szArcName.wchar_str())\r
- : ((int (__stdcall *)(const char *)) fpProc)(_szArcName.ToUTF8());\r
- if (n == -1)\r
+ if (fpProc != NULL)\r
{\r
- return TPI_ERROR_ARC_UNSUPPORTED;\r
+ int n = g_LibInfo.fUnicode\r
+ ? ((int (__stdcall *)(const wchar_t *)) fpProc)(_szArcName.wchar_str())\r
+ : ((int (__stdcall *)(const char *)) fpProc)(_szArcName.ToUTF8());\r
+ * _nFileCount = n < 0 ? 0 : n;\r
}\r
- * _nFileCount = n;\r
}\r
\r
fpProc = ::GetAPIAddress("OpenArchive", true);\r
MySetArcSize(GetArcOriginalSize, nUnpackedSize);\r
MySetArcSize(GetArcCompressedSize, nPackedSize);\r
MySetArcSize(GetArcReadSize, nReadSize);\r
+ if (_aiInfo->nPackedSize == (DWORD) -1)\r
+ {\r
+ // 圧縮後サイズの取得に対応していない場合、書庫のサイズで代替。\r
+ _aiInfo->nPackedSize = _aiInfo->nFileSize;\r
+ }\r
\r
FILETIME ft;\r
MySetArcTime(GetArcAccessTime, tmAccess, false);\r
if (fpProc != NULL)\r
{\r
_aiInfo->wCompressRatio = ((WORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
+ if (_aiInfo->wCompressRatio == (WORD) -1)\r
+ {\r
+ // エラーなら0にしておく。\r
+ _aiInfo->wCompressRatio = 0;\r
+ }\r
}\r
\r
fpProc = ::GetAPIAddress("GetArcOSType", false);\r