hArc->GetProperty(nIndex, kpidATime, & prop);\r
NWindows::NTime::FileTimeToUnixTime(prop.filetime, t);\r
_fiInfo->tmAccess.Set((time_t) t);\r
-// _fiInfo->uOSType = hdInfo.HostOS;\r
hArc->GetProperty(nIndex, kpidPath, & prop);\r
if (prop.vt == VT_BSTR)\r
{\r
_fiInfo->szSuffix = wxT("bz2");\r
_fiInfo->llSupportedCommand |= TPI_COMMAND_CREATE;\r
_fiInfo->fArchive = false;\r
- _fiInfo->sCompressLevelMin = 0;\r
+ _fiInfo->sCompressLevelMin = 1;\r
_fiInfo->sCompressLevelMax = 9;\r
}\r
#if 0\r
_fiInfo->szSuffix = wxT("gz");\r
_fiInfo->llSupportedCommand |= TPI_COMMAND_CREATE;\r
_fiInfo->fArchive = false;\r
- _fiInfo->sCompressLevelMin = 0;\r
+ _fiInfo->sCompressLevelMin = 1;\r
_fiInfo->sCompressLevelMax = 9;\r
}\r
else\r
case TPI_COMMAND_CREATE:\r
// case TPI_COMMAND_ADD:\r
{\r
+ // 入力リストを作成。\r
CObjectVector<NWindows::NFile::NFind::CFileInfoW> fiItems;\r
for (unsigned int i = 0; i < _szFiles.GetCount(); i++)\r
{\r
fiItems.Add(fi);\r
}\r
\r
+ // 書庫を作成。\r
COutFileStream * outFileStreamSpec = new COutFileStream;\r
CMyComPtr<IOutStream> outFileStream = outFileStreamSpec;\r
if (! outFileStreamSpec->Create(_szArcName.c_str(), false))\r
return TPI_ERROR_IO_ARC_OPEN;\r
}\r
\r
+ // エンジンを読み込み。\r
IOutArchive * hArc;\r
if (((unsigned int (__stdcall *)(const GUID *, const GUID *, void **)) g_fpProc)(& guidList[g_llEngineId.ToULong()], & IID_IOutArchive, (void **) & hArc) != S_OK)\r
{\r
return TPI_ERROR_ARC_UNSUPPORTED;\r
}\r
\r
+ // 形式情報を取得。\r
+ TPI_FORMATINFO fiInfo;\r
+ unsigned int nIndex = g_llEngineId.ToULong();\r
+ GetFormatInformation2(& fiInfo, nIndex);\r
+\r
+ // パラメータを設定。\r
+ ISetProperties * setProp;\r
+ if (hArc->QueryInterface(IID_ISetProperties, (void **) & setProp) == S_OK)\r
+ {\r
+ CRecordVector<const wchar_t *> szProps;\r
+ NWindows::NCOM::CPropVariant propValues[100];\r
+ wxString szProp;\r
+ // 圧縮レベル。\r
+ if (fiInfo.sCompressLevelMin != fiInfo.sCompressLevelMax)\r
+ {\r
+ szProp = wxString::Format(wxT("x%d"), _swInfo->sCompressLevel);\r
+ szProps.Add(szProp.c_str());\r
+ }\r
+ // Solid圧縮。\r
+ if (fiInfo.fSolid)\r
+ {\r
+ propValues[szProps.Size()] = _swInfo->fSolid;\r
+ szProps.Add(wxT("s"));\r
+ }\r
+ // ヘッダ圧縮。\r
+/* if (fiInfo.fCompressHeader)\r
+ {\r
+ propValues[szProps.Size()] = _swInfo->fCompressHeader;\r
+ szProps.Add(wxT("hc"));\r
+ }\r
+*/ // ヘッダ暗号化。\r
+ if (fiInfo.fEncryptHeader)\r
+ {\r
+ propValues[szProps.Size()] = _swInfo->fEncryptHeader;\r
+ szProps.Add(wxT("he"));\r
+ }\r
+\r
+// szProp = wxString::Format(wxT("m"));\r
+// propValues[szProps.Size()] = L"Deflate";\r
+// szProps.Add(szProp.c_str());\r
+\r
+// szProp = wxString::Format(wxT("fb%d"), );\r
+// szProps.Add(szProp.c_str());\r
+\r
+ setProp->SetProperties(& szProps.Front(), propValues, szProps.Size());\r
+ }\r
+\r
+ // 更新処理を実行。\r
CArchiveUpdateCallback * updateCallbackSpec = new CArchiveUpdateCallback;\r
CMyComPtr<IArchiveUpdateCallback2> updateCallback(updateCallbackSpec);\r
updateCallbackSpec->fiItems = & fiItems;\r