OSDN Git Service

gz形式など、拡張子が空の場合の格納ファイル名生成処理を改善。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Tue, 9 Nov 2010 13:29:41 +0000 (13:29 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Tue, 9 Nov 2010 13:29:41 +0000 (13:29 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@430 9df91469-1e22-0410-86e7-ea8537beb833

src/lychee/frm_main.cpp
src/plugin/7zArc/7zArc.cpp

index f464461..31d304a 100644 (file)
@@ -402,7 +402,11 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                        // 拡張子のみ設定されている場合。\r
                        if (piInfo.fiInfo.szStoredName.IsEmpty())\r
                        {\r
-                               piInfo.fiInfo.szStoredName = this->fnArchive.GetName() + wxT('.') + piInfo.fiInfo.fnFileName.GetExt();\r
+                               piInfo.fiInfo.szStoredName = this->fnArchive.GetName();\r
+                               if (piInfo.fiInfo.fnFileName.HasExt())\r
+                               {\r
+                                       piInfo.fiInfo.szStoredName += wxT('.') + piInfo.fiInfo.fnFileName.GetExt();\r
+                               }\r
                                piInfo.fiInfo.fnFileName = wxFileName(piInfo.fiInfo.szStoredName);\r
                        }\r
 \r
index 57faf06..170b644 100644 (file)
@@ -123,7 +123,7 @@ int GetFileInformation2(void * _hArchive, TPI_FILEINFO * _fiInfo, wxULongLong_t
        {\r
                hArc->GetProperty(nIndex, kpidExtension, & prop);\r
                _fiInfo->szStoredName.Empty();\r
-               _fiInfo->fnFileName.SetExt(WC2String(prop.bstrVal));\r
+               _fiInfo->fnFileName.SetExt(prop.vt == VT_BSTR ? WC2String(prop.bstrVal) : (wxString) wxEmptyString);\r
        }\r
        hArc->GetProperty(nIndex, kpidMethod,  & prop); _fiInfo->szMethod   = prop.vt == VT_BSTR ? WC2String(prop.bstrVal) : (wxString) wxEmptyString;\r
        hArc->GetProperty(nIndex, kpidComment, & prop); _fiInfo->szComment  = prop.vt == VT_BSTR ? WC2String(prop.bstrVal) : (wxString) wxEmptyString;\r
@@ -448,7 +448,11 @@ STDMETHODIMP CArchiveExtractCallback::GetStream(unsigned int nIndex, ISequential
        GetFileInformation2(this->hArc, & this->piInfo.fiInfo, nIndex);\r
        if (this->piInfo.fiInfo.szStoredName.IsEmpty())\r
        {\r
-               this->piInfo.fiInfo.szStoredName = this->fnArchive.GetName() + wxT('.') + this->piInfo.fiInfo.fnFileName.GetExt();\r
+               this->piInfo.fiInfo.szStoredName = this->fnArchive.GetName();\r
+               if (this->piInfo.fiInfo.fnFileName.HasExt())\r
+               {\r
+                       this->piInfo.fiInfo.szStoredName += wxT('.') + this->piInfo.fiInfo.fnFileName.GetExt();\r
+               }\r
                this->piInfo.fiInfo.fnFileName = wxFileName(this->piInfo.fiInfo.szStoredName);\r
        }\r
 \r
@@ -983,7 +987,11 @@ int __stdcall Command
                        {\r
                                if (fiInfo.szStoredName.IsEmpty())\r
                                {\r
-                                       fiInfo.szStoredName = fnArchive.GetName() + wxT('.') + fiInfo.fnFileName.GetExt();\r
+                                       fiInfo.szStoredName = fnArchive.GetName();\r
+                                       if (fiInfo.fnFileName.HasExt())\r
+                                       {\r
+                                               fiInfo.szStoredName += wxT('.') + fiInfo.fnFileName.GetExt();\r
+                                       }\r
                                }\r
                                if (_szFiles.Index(fiInfo.szStoredName) != wxNOT_FOUND)\r
                                {\r