} g_LibInfo, g_LibInfoAlt;\r
\r
TPI_PROC g_prProc;\r
-bool g_fExistUnicodeMode;\r
\r
//******************************************************************************\r
-// Entry\r
+// Inside Functions\r
//******************************************************************************\r
\r
-BOOL __stdcall DllMain(HMODULE, DWORD fdwReason, void *)\r
-{\r
- switch (fdwReason)\r
- {\r
- case DLL_PROCESS_DETACH:\r
- ::FreeLibrary(g_LibInfo.hLib);\r
- break;\r
- }\r
- return TRUE;\r
-}\r
-\r
wxDateTime FileTimeToWxDateTime(FILETIME * pft)\r
{\r
FILETIME ftLocal;\r
\r
// 構造体を初期化。\r
TPI_PROCESSINFO piInfo;\r
- piInfo.uMessage = TPI_MESSAGE_STATUS;\r
+ piInfo.eMessage = TPI_MESSAGE_STATUS;\r
\r
if (_lpEis != NULL)\r
{\r
// EXTRACTINGINFOEXW -> TPI_FILEINFO変換。\r
piInfo.fiInfo.dwCRC32 = ex->dwCRC;\r
piInfo.fiInfo.tmModified.SetFromDOS(ex->wTime | (ex->wDate << 16));\r
- piInfo.fiInfo.llPackedSize = ex->dwCompressedSize;\r
- piInfo.fiInfo.llUnpackedSize = ex->exinfo.dwFileSize;\r
- piInfo.fiInfo.uOSType = ex->uOSType;\r
+ piInfo.fiInfo.nPackedSize = ex->dwCompressedSize;\r
+ piInfo.fiInfo.nUnpackedSize = ex->exinfo.dwFileSize;\r
+ piInfo.fiInfo.eOSType = ex->eOSType;\r
piInfo.fiInfo.wCompressRatio = ex->wRatio;\r
piInfo.fiInfo.szStoredName = WC2String(ex->exinfo.szSourceFileName);\r
piInfo.fiInfo.szMethod = WC2String(ex->szMode);\r
\r
// EXTRACTINGINFOEXW -> TPI_PROCESSINFO変換。\r
- piInfo.llProcessedSize = ex->exinfo.dwWriteSize;\r
+ piInfo.nProcessedSize = ex->exinfo.dwWriteSize;\r
piInfo.fnDestination = wxFileName(WC2String(ex->exinfo.szDestFileName));\r
}\r
else\r
// EXTRACTINGINFOEX -> TPI_FILEINFO変換。\r
piInfo.fiInfo.dwCRC32 = ex->dwCRC;\r
piInfo.fiInfo.tmModified.SetFromDOS(ex->wTime | (ex->wDate << 16));\r
- piInfo.fiInfo.llPackedSize = ex->dwCompressedSize;\r
- piInfo.fiInfo.llUnpackedSize = ex->exinfo.dwFileSize;\r
- piInfo.fiInfo.uOSType = ex->uOSType;\r
+ piInfo.fiInfo.nPackedSize = ex->dwCompressedSize;\r
+ piInfo.fiInfo.nUnpackedSize = ex->exinfo.dwFileSize;\r
+ piInfo.fiInfo.eOSType = ex->eOSType;\r
piInfo.fiInfo.wCompressRatio = ex->wRatio;\r
piInfo.fiInfo.szStoredName = UTF82String(ex->exinfo.szSourceFileName);\r
piInfo.fiInfo.szMethod = UTF82String(ex->szMode);\r
\r
// EXTRACTINGINFOEX -> TPI_PROCESSINFO変換。\r
- piInfo.llProcessedSize = ex->exinfo.dwWriteSize;\r
+ piInfo.nProcessedSize = ex->exinfo.dwWriteSize;\r
piInfo.fnDestination = wxFileName(UTF82String(ex->exinfo.szDestFileName));\r
}\r
piInfo.fiInfo.dwAttribute = 0;\r
piInfo.fiInfo.tmAccess = FileTimeToWxDateTime(& ex->ftAccessTime);\r
piInfo.fiInfo.tmCreate = FileTimeToWxDateTime(& ex->ftCreateTime);\r
piInfo.fiInfo.tmModified = FileTimeToWxDateTime(& ex->ftWriteTime);\r
- piInfo.fiInfo.llPackedSize = ex->llCompressedSize;\r
- piInfo.fiInfo.llUnpackedSize = ex->llFileSize;\r
- piInfo.fiInfo.uOSType = ex->uOSType;\r
+ piInfo.fiInfo.nPackedSize = ex->llCompressedSize;\r
+ piInfo.fiInfo.nUnpackedSize = ex->llFileSize;\r
+ piInfo.fiInfo.eOSType = ex->eOSType;\r
piInfo.fiInfo.wCompressRatio = ex->wRatio;\r
piInfo.fiInfo.szStoredName = WC2String(ex->exinfo.szSourceFileName);\r
piInfo.fiInfo.szMethod = WC2String(ex->szMode);\r
\r
// EXTRACTINGINFOEX64 -> TPI_PROCESSINFO変換。\r
- piInfo.llProcessedSize = ex->llWriteSize;\r
+ piInfo.nProcessedSize = ex->llWriteSize;\r
piInfo.fnDestination = wxFileName(WC2String(ex->exinfo.szDestFileName));\r
}\r
else\r
piInfo.fiInfo.tmAccess = FileTimeToWxDateTime(& ex->ftAccessTime);\r
piInfo.fiInfo.tmCreate = FileTimeToWxDateTime(& ex->ftCreateTime);\r
piInfo.fiInfo.tmModified = FileTimeToWxDateTime(& ex->ftWriteTime);\r
- piInfo.fiInfo.llPackedSize = ex->llCompressedSize;\r
- piInfo.fiInfo.llUnpackedSize = ex->llFileSize;\r
- piInfo.fiInfo.uOSType = ex->uOSType;\r
+ piInfo.fiInfo.nPackedSize = ex->llCompressedSize;\r
+ piInfo.fiInfo.nUnpackedSize = ex->llFileSize;\r
+ piInfo.fiInfo.eOSType = ex->eOSType;\r
piInfo.fiInfo.wCompressRatio = ex->wRatio;\r
piInfo.fiInfo.szStoredName = UTF82String(ex->exinfo.szSourceFileName);\r
piInfo.fiInfo.szMethod = UTF82String(ex->szMode);\r
\r
// EXTRACTINGINFOEX64 -> TPI_PROCESSINFO変換。\r
- piInfo.llProcessedSize = ex->llWriteSize;\r
+ piInfo.nProcessedSize = ex->llWriteSize;\r
piInfo.fnDestination = wxFileName(UTF82String(ex->exinfo.szDestFileName));\r
}\r
}\r
{\r
case ARCEXTRACT_OPEN:\r
// 当該書庫の処理を開始。\r
- piInfo.uStatus = TPI_STATUS_OPENARCHIVE;\r
+ piInfo.eStatus = TPI_STATUS_OPENARCHIVE;\r
break;\r
case 5:\r
// 当該ファイルの検索中。\r
- piInfo.uStatus = TPI_STATUS_SEEKFILE;\r
+ piInfo.eStatus = TPI_STATUS_SEEKFILE;\r
break;\r
case ARCEXTRACT_BEGIN:\r
// 当該ファイルの処理を開始。\r
- piInfo.uStatus = TPI_STATUS_BEGINPROCESS;\r
+ piInfo.eStatus = TPI_STATUS_BEGINPROCESS;\r
break;\r
case ARCEXTRACT_INPROCESS:\r
// 当該ファイルの処理を実行中。\r
- piInfo.uStatus = TPI_STATUS_INPROCESS;\r
+ piInfo.eStatus = TPI_STATUS_INPROCESS;\r
break;\r
case 6:\r
// 当該ファイルの処理を終了。\r
- piInfo.uStatus = TPI_STATUS_ENDPROCESS;\r
+ piInfo.eStatus = TPI_STATUS_ENDPROCESS;\r
break;\r
case 7:\r
// 当該書庫の検査中。\r
- piInfo.uStatus = TPI_STATUS_TESTARCHIVE;\r
+ piInfo.eStatus = TPI_STATUS_TESTARCHIVE;\r
break;\r
case ARCEXTRACT_COPY:\r
// 当該書庫の書き戻し中。\r
- piInfo.uStatus = TPI_STATUS_COPYARCHIVE;\r
+ piInfo.eStatus = TPI_STATUS_COPYARCHIVE;\r
break;\r
case ARCEXTRACT_END:\r
// 当該書庫の処理を終了。\r
- piInfo.uStatus = TPI_STATUS_CLOSEARCHIVE;\r
+ piInfo.eStatus = TPI_STATUS_CLOSEARCHIVE;\r
break;\r
}\r
\r
int __stdcall GetPluginInformation\r
(\r
unsigned int _uInfoId,\r
- wxULongLong,\r
+ wxULongLong_t,\r
void * _pPtr\r
)\r
{\r
\r
int __stdcall GetFormatInformation(TPI_FORMATINFO * _fiInfo, bool _bFirst)\r
{\r
- static unsigned int s_uFileId;\r
+ static wxULongLong_t s_nFileId;\r
wxStandardPaths p;\r
wxXmlDocument config(wxPathOnly(p.GetExecutablePath()) + wxT("/lib/calLibrary.xml"));\r
// 一気に先頭のライブラリの情報を取得。\r
if (_bFirst)\r
{\r
// xml解析開始。\r
- s_uFileId = 0;\r
+ s_nFileId = 0;\r
}\r
else\r
{\r
- for (unsigned int i = 0; i < s_uFileId && xmlLibrary != NULL; i++)\r
+ for (wxULongLong_t i = 0; i < s_nFileId && xmlLibrary != NULL; i++)\r
{\r
xmlLibrary = xmlLibrary->GetNext();\r
}\r
return TPI_ERROR_S_ENDOFDATA;\r
}\r
\r
- MakeFormatInfo(wxT("calLibrary"), _fiInfo, xmlLibrary, s_uFileId++);\r
+ MakeFormatInfo(wxT("calLibrary"), _fiInfo, xmlLibrary, s_nFileId++);\r
\r
return TPI_ERROR_SUCCESS;\r
}\r
int __stdcall LoadPlugin\r
(\r
const wxString & _szArcName,\r
- wxULongLong _llTypeId\r
+ wxULongLong_t _llTypeId\r
)\r
{\r
// xml解析開始。\r
\r
// 対象が存在するならば対応するライブラリを調査、\r
// 対象が存在しないならば指示されたライブラリをロード。\r
+ ::RemoveCwdFromSearchPath();\r
if (! ::wxFileExists(_szArcName))\r
{\r
// 適当な位置まで移動。\r
// xml文法エラー。\r
return TPI_ERROR_UNDEFINED;\r
}\r
- g_LibInfo.node = * xmlLibrary;\r
\r
// ライブラリをロード。\r
- g_LibInfo.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetPropVal(wxT("name"), wxEmptyString).c_str());\r
+ g_LibInfo.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetAttribute(wxT("name"), wxEmptyString).c_str());\r
if (g_LibInfo.hLib == NULL)\r
{\r
return TPI_ERROR_U_LOAD_LIBRARY;\r
}\r
- g_LibInfo.szPrefix = xmlLibrary->GetPropVal(wxT("prefix"), wxEmptyString);\r
- g_LibInfo.fUnicode = xmlLibrary->GetPropVal(wxT("unicode"), wxT("0")) == wxT("1");\r
+ g_LibInfo.szPrefix = xmlLibrary->GetAttribute(wxT("prefix"), wxEmptyString);\r
+ g_LibInfo.fUnicode = xmlLibrary->GetAttribute(wxT("unicode"), wxT("0")) == wxT("1");\r
+ g_LibInfo.node = * xmlLibrary;\r
\r
// 代替ライブラリもロード。ロードできなくてもエラーにはしない。\r
- g_LibInfoAlt.szPrefix = xmlLibrary->GetPropVal(wxT("prefix-alt"), wxEmptyString);\r
- g_LibInfoAlt.fUnicode = xmlLibrary->GetPropVal(wxT("unicode-alt"), wxT("0")) == wxT("1");\r
- g_LibInfoAlt.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetPropVal(wxT("name-alt"), wxEmptyString).c_str());\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
\r
return TPI_ERROR_SUCCESS;\r
}\r
for (g_LibInfo.nLibIndex = 0; g_LibInfo.nLibIndex < 300 && xmlLibrary != NULL; g_LibInfo.nLibIndex++)\r
{\r
// ライブラリをロード。\r
- g_LibInfo.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetPropVal(wxT("name"), wxEmptyString).c_str());\r
+ g_LibInfo.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetAttribute(wxT("name"), wxEmptyString).c_str());\r
if (g_LibInfo.hLib == NULL)\r
{\r
xmlLibrary = xmlLibrary->GetNext();\r
continue;\r
}\r
- g_LibInfo.szPrefix = xmlLibrary->GetPropVal(wxT("prefix"), wxEmptyString);\r
- g_LibInfo.fUnicode = xmlLibrary->GetPropVal(wxT("unicode"), wxT("0")) == wxT("1");\r
+ g_LibInfo.szPrefix = xmlLibrary->GetAttribute(wxT("prefix"), wxEmptyString);\r
+ g_LibInfo.fUnicode = xmlLibrary->GetAttribute(wxT("unicode"), wxT("0")) == wxT("1");\r
\r
// 代替ライブラリもロード。ロードできなくてもエラーにはしない。\r
- g_LibInfoAlt.szPrefix = xmlLibrary->GetPropVal(wxT("prefix-alt"), wxEmptyString);\r
- g_LibInfoAlt.fUnicode = xmlLibrary->GetPropVal(wxT("unicode-alt"), wxT("0")) == wxT("1");\r
- g_LibInfoAlt.hLib = ::LoadLibrary((const WCHAR *) xmlLibrary->GetPropVal(wxT("name-alt"), wxEmptyString).c_str());\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_LibInfo.node = * xmlLibrary;\r
\r
// 書庫に対応しているかチェック。\r
- if (CheckArchive(_szArcName, NULL) == TPI_ERROR_SUCCESS)\r
+ if (CheckArchive(_szArcName) == TPI_ERROR_SUCCESS)\r
{\r
// 対応していれば処理を終了。\r
return TPI_ERROR_SUCCESS;\r
\r
int __stdcall CheckArchive\r
(\r
- const wxString & _szArcName,\r
- wxULongLong * _llFileCount\r
+ const wxString & _szArcName\r
)\r
{\r
// Unicodeモードに設定。\r
FARPROC fpProc = ::GetAPIAddress("SetUnicodeMode", false);\r
- g_fExistUnicodeMode = fpProc != NULL;\r
- if (g_fExistUnicodeMode)\r
+ if (fpProc != NULL)\r
{\r
((BOOL (__stdcall *)(BOOL)) fpProc)(TRUE);\r
}\r
return TPI_ERROR_D_UNSUPPORTED;\r
}\r
\r
- if (_llFileCount != NULL)\r
+ return TPI_ERROR_SUCCESS;\r
+}\r
+\r
+int __stdcall OpenArchive\r
+(\r
+ const wxString & _szArcName,\r
+ void * * _hArchive,\r
+ wxULongLong_t * _nFileCount\r
+)\r
+{\r
+ // ファイル数を取得。\r
+ FARPROC fpProc;\r
+ if (_nFileCount != NULL)\r
{\r
fpProc = ::GetAPIAddress("GetFileCount", true);\r
if (fpProc == NULL)\r
return TPI_ERROR_U_USE_LIBRARY;\r
}\r
\r
- int nFileCount = g_LibInfo.fUnicode\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 (nFileCount == -1)\r
+ if (n == -1)\r
{\r
return TPI_ERROR_ARC_UNSUPPORTED;\r
}\r
- * _llFileCount = nFileCount;\r
+ * _nFileCount = n;\r
}\r
\r
- return TPI_ERROR_SUCCESS;\r
-}\r
-\r
-int __stdcall OpenArchive\r
-(\r
- const wxString & _szArcName,\r
- void * * _hArchive\r
-)\r
-{\r
- FARPROC fpProc = ::GetAPIAddress("OpenArchive", true);\r
+ fpProc = ::GetAPIAddress("OpenArchive", true);\r
if (fpProc == NULL)\r
{\r
return TPI_ERROR_U_USE_LIBRARY;\r
bool _bFirst\r
)\r
{\r
- static unsigned int s_uFileId;\r
+ static wxULongLong_t s_nFileId;\r
static FARPROC fpNext, fpAttr;\r
int nErrorCode;\r
INDIVIDUALINFO iiInfo;\r
\r
if (_bFirst)\r
{\r
- s_uFileId = 0;\r
+ s_nFileId = 0;\r
FARPROC fpProc = ::GetAPIAddress("FindFirst", true);\r
fpNext = ::GetAPIAddress("FindNext", true);\r
fpAttr = ::GetAPIAddress("GetAttribute", false);\r
if (nErrorCode == TPI_ERROR_SUCCESS)\r
{\r
_fiInfo->dwAttribute = (fpAttr == NULL) ? 0 : ((int (__stdcall *)(void *)) fpAttr)(_hArchive);\r
- if ((signed) _fiInfo->dwAttribute == -1)\r
+ if (_fiInfo->dwAttribute == (unsigned) -1)\r
{\r
_fiInfo->dwAttribute = 0;\r
}\r
if (g_LibInfo.fUnicode)\r
{\r
_fiInfo->dwCRC32 = iiInfoW.dwCRC;\r
- _fiInfo->uOSType = iiInfoW.uOSType;\r
- _fiInfo->llPackedSize = iiInfoW.dwCompressedSize;\r
- _fiInfo->llUnpackedSize = iiInfoW.dwOriginalSize;\r
+ _fiInfo->eOSType = iiInfoW.eOSType;\r
+ _fiInfo->nPackedSize = iiInfoW.dwCompressedSize;\r
+ _fiInfo->nUnpackedSize = iiInfoW.dwOriginalSize;\r
_fiInfo->tmModified.SetFromDOS(MAKELONG(iiInfoW.wTime, iiInfoW.wDate));\r
_fiInfo->szStoredName = WC2String(iiInfoW.szFileName);\r
_fiInfo->szMethod = WC2String(iiInfoW.szMode);\r
else\r
{\r
_fiInfo->dwCRC32 = iiInfo.dwCRC;\r
- _fiInfo->uOSType = iiInfo.uOSType;\r
- _fiInfo->llPackedSize = iiInfo.dwCompressedSize;\r
- _fiInfo->llUnpackedSize = iiInfo.dwOriginalSize;\r
+ _fiInfo->eOSType = iiInfo.eOSType;\r
+ _fiInfo->nPackedSize = iiInfo.dwCompressedSize;\r
+ _fiInfo->nUnpackedSize = iiInfo.dwOriginalSize;\r
_fiInfo->tmModified.SetFromDOS(MAKELONG(iiInfo.wTime, iiInfo.wDate));\r
_fiInfo->szStoredName = UTF82String(iiInfo.szFileName);\r
_fiInfo->szMethod = UTF82String(iiInfo.szMode);\r
_fiInfo->wCompressRatio = iiInfo.wRatio;\r
}\r
- _fiInfo->llFileId = s_uFileId++;\r
+ _fiInfo->nFileId = s_nFileId++;\r
_fiInfo->fnFileName = wxFileName(_fiInfo->szStoredName);\r
// _fiInfo->ftAccessTime = 0;\r
// _fiInfo->ftCreateTime = 0;\r
if (g_LibInfo.fUnicode)\r
{\r
wchar_t sz[2049];\r
+ memset(sz, 0, sizeof(sz));\r
((int (__stdcall *)(void *, wchar_t *, const int)) fpProc)(_hArchive, sz, 2048);\r
s = WC2String(sz);\r
}\r
else\r
{\r
char sz[2049];\r
+ memset(sz, 0, sizeof(sz));\r
((int (__stdcall *)(void *, char *, const int)) fpProc)(_hArchive, sz, 2048);\r
s = UTF82String(sz);\r
}\r
fpProc = ::GetAPIAddress("GetArcFileSizeEx", false);\r
if (fpProc != NULL)\r
{\r
- ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->llFileSize);\r
+ ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->nFileSize);\r
}\r
else\r
{\r
fpProc = ::GetAPIAddress("GetArcFileSize", false);\r
if (fpProc != NULL)\r
{\r
- _aiInfo->llFileSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
+ _aiInfo->nFileSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
}\r
}\r
\r
fpProc = ::GetAPIAddress("GetArcOriginalSizeEx", false);\r
if (fpProc != NULL)\r
{\r
- ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->llUnpackedSize);\r
+ ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->nUnpackedSize);\r
}\r
else\r
{\r
fpProc = ::GetAPIAddress("GetArcOriginalSize", false);\r
if (fpProc != NULL)\r
{\r
- _aiInfo->llUnpackedSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
+ _aiInfo->nUnpackedSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
}\r
}\r
\r
fpProc = ::GetAPIAddress("GetArcCompressedSizeEx", false);\r
if (fpProc != NULL)\r
{\r
- ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->llPackedSize);\r
+ ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->nPackedSize);\r
}\r
else\r
{\r
fpProc = ::GetAPIAddress("GetArcCompressedSize", false);\r
if (fpProc != NULL)\r
{\r
- _aiInfo->llPackedSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
+ _aiInfo->nPackedSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
}\r
}\r
\r
fpProc = ::GetAPIAddress("GetArcReadSizeEx", false);\r
if (fpProc != NULL)\r
{\r
- ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->llReadSize);\r
+ ((BOOL (__stdcall *)(void *, LONGLONG *)) fpProc)(_hArchive, (LONGLONG *) & _aiInfo->nReadSize);\r
}\r
else\r
{\r
fpProc = ::GetAPIAddress("GetArcReadSize", false);\r
if (fpProc != NULL)\r
{\r
- _aiInfo->llReadSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
+ _aiInfo->nReadSize = ((DWORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
}\r
}\r
\r
fpProc = ::GetAPIAddress("GetArcOSType", false);\r
if (fpProc != NULL)\r
{\r
- _aiInfo->uOSType = ((UINT (__stdcall *)(void *)) fpProc)(_hArchive);\r
+ _aiInfo->eOSType = ((UINT (__stdcall *)(void *)) fpProc)(_hArchive);\r
}\r
\r
fpProc = ::GetAPIAddress("IsSFXFile", false);\r
- if (fpProc != NULL)\r
- {\r
- _aiInfo->nSFXType = ((int (__stdcall *)(void *)) fpProc)(_hArchive);\r
- }\r
- if (fpProc == NULL || _aiInfo->nSFXType < 0)\r
- {\r
- // エラーの場合はとりあえず通常の書庫とみなす。\r
- _aiInfo->nSFXType = 0;\r
- }\r
+ _aiInfo->fSFX = fpProc != NULL && ((int (__stdcall *)(void *)) fpProc)(_hArchive) > 0;\r
\r
// 形式に関する情報を取得。\r
MakeFormatInfo(wxT("calLibrary"), & _aiInfo->fiInfo, & g_LibInfo.node, 0);\r
\r
int __stdcall Command\r
(\r
- unsigned int _uCommand,\r
+ wxULongLong_t _eCommand,\r
TPI_SWITCHES * _swInfo,\r
const wxString & _szArcName,\r
const wxArrayString & _szFiles\r
)\r
{\r
- // Iniからコマンドラインを取得。\r
+ // xmlからコマンドラインを取得。\r
wxString szPath, szCommandLine;\r
\r
// APIアドレス取得。\r
g_LibInfoAlt.fRunning\r
- = g_LibInfo.node.GetPropVal(\r
- _uCommand == TPI_COMMAND_CREATE ? wxT("create-alt") :\r
- _uCommand == TPI_COMMAND_ADD ? wxT("add-alt") :\r
- _uCommand == TPI_COMMAND_EXTRACT ? wxT("extract-alt") : \r
- _uCommand == TPI_COMMAND_DELETE ? wxT("delete-alt") : \r
- _uCommand == TPI_COMMAND_UPDATE ? wxT("update-alt") : \r
- _uCommand == TPI_COMMAND_TEST ? wxT("test-alt") : \r
- _uCommand == TPI_COMMAND_REPAIR ? wxT("repair-alt") : \r
- _uCommand == TPI_COMMAND_MOVE ? wxT("move-alt") : \r
- _uCommand == TPI_COMMAND_SFX ? wxT("sfx-alt") : \r
- _uCommand == TPI_COMMAND_UNSFX ? wxT("unsfx-alt") : wxEmptyString, & szCommandLine);\r
+ = g_LibInfo.node.GetAttribute(\r
+ _eCommand == TPI_COMMAND_CREATE ? wxT("create-alt") :\r
+ _eCommand == TPI_COMMAND_ADD ? wxT("add-alt") :\r
+ _eCommand == TPI_COMMAND_EXTRACT ? wxT("extract-alt") : \r
+ _eCommand == TPI_COMMAND_DELETE ? wxT("delete-alt") : \r
+ _eCommand == TPI_COMMAND_UPDATE ? wxT("update-alt") : \r
+ _eCommand == TPI_COMMAND_TEST ? wxT("test-alt") : \r
+ _eCommand == TPI_COMMAND_REPAIR ? wxT("repair-alt") : \r
+ _eCommand == TPI_COMMAND_MOVE ? wxT("move-alt") : \r
+ _eCommand == TPI_COMMAND_SFX ? wxT("sfx-alt") : \r
+ _eCommand == TPI_COMMAND_UNSFX ? wxT("unsfx-alt") : wxEmptyString, & szCommandLine);\r
g_LibInfo.fRunning\r
- = g_LibInfo.node.GetPropVal(\r
- _uCommand == TPI_COMMAND_CREATE ? wxT("create") :\r
- _uCommand == TPI_COMMAND_ADD ? wxT("add") :\r
- _uCommand == TPI_COMMAND_EXTRACT ? wxT("extract") : \r
- _uCommand == TPI_COMMAND_DELETE ? wxT("delete") : \r
- _uCommand == TPI_COMMAND_UPDATE ? wxT("update") : \r
- _uCommand == TPI_COMMAND_TEST ? wxT("test") : \r
- _uCommand == TPI_COMMAND_REPAIR ? wxT("repair") : \r
- _uCommand == TPI_COMMAND_MOVE ? wxT("move") : \r
- _uCommand == TPI_COMMAND_SFX ? wxT("sfx") : \r
- _uCommand == TPI_COMMAND_UNSFX ? wxT("unsfx") : wxEmptyString, & szCommandLine);\r
+ = g_LibInfo.node.GetAttribute(\r
+ _eCommand == TPI_COMMAND_CREATE ? wxT("create") :\r
+ _eCommand == TPI_COMMAND_ADD ? wxT("add") :\r
+ _eCommand == TPI_COMMAND_EXTRACT ? wxT("extract") : \r
+ _eCommand == TPI_COMMAND_DELETE ? wxT("delete") : \r
+ _eCommand == TPI_COMMAND_UPDATE ? wxT("update") : \r
+ _eCommand == TPI_COMMAND_TEST ? wxT("test") : \r
+ _eCommand == TPI_COMMAND_REPAIR ? wxT("repair") : \r
+ _eCommand == TPI_COMMAND_MOVE ? wxT("move") : \r
+ _eCommand == TPI_COMMAND_SFX ? wxT("sfx") : \r
+ _eCommand == TPI_COMMAND_UNSFX ? wxT("unsfx") : wxEmptyString, & szCommandLine);\r
\r
FARPROC fpProc =\r
g_LibInfo.fRunning ? ::GetAPIAddress( "", true) :\r
\r
// コマンドライン・レスポンスファイル作成。\r
wxString\r
- szResponceFileName = MakeResponceFile(_szFiles, g_LibInfo.node.GetPropVal(wxT("quote-resp"), wxT("1")) == wxT("1")),\r
+ szResponceFileName = g_LibInfo.fRunning ?\r
+ MakeResponceFile(_szFiles, g_LibInfo.node.GetAttribute( wxT("quote-resp"), wxT("1")) == wxT("1"), g_LibInfo.fUnicode) :\r
+ MakeResponceFile(_szFiles, g_LibInfoAlt.node.GetAttribute(wxT("quote-resp"), wxT("1")) == wxT("1"), g_LibInfoAlt.fUnicode),\r
szCommandLineSend = MakeCommandLineSend(szCommandLine, _szArcName, _swInfo, _szFiles, szResponceFileName);\r
\r
// コマンドライン実行。\r
\r
if (nErrorCode != 0)\r
{\r
- ::wxLogError(L"Error :\n%x\n\nCommandLine:\n%s\n\nOutput:\n%s", nErrorCode, szCommandLineSend.c_str(), szOutput.c_str());\r
+ wxLogError(L"Error :\n%x\n\nCommandLine:\n%s\n\nOutput:\n%s", nErrorCode, szCommandLineSend.c_str(), szOutput.c_str());\r
}\r
return ErrorCodeConvert(nErrorCode);\r
}\r