OSDN Git Service

ファイルの属性と作成/参照時刻の復元を行う機能を追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 3 Nov 2010 12:02:25 +0000 (12:02 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 3 Nov 2010 12:02:25 +0000 (12:02 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@414 9df91469-1e22-0410-86e7-ea8537beb833

doc/history.html
src/plugin/7zArc/7zArc.cpp
src/plugin/7zArc/7zArc.vcproj
src/plugin/7zArc/Makefile

index 08c9ae8..d5025c5 100644 (file)
        <li class="fix">Linux上でダイアログでファイルを保存したり複数のファイルを選択したりする機能が動作していなかったバグを修正。</li>\r
       </ul>\r
      </dd>\r
+     <dt>7zArc</dt>\r
+     <dd>\r
+      <ul>\r
+       <li class="add">SquashFS,CramFS,PPMdへの対応を追加。</li>\r
+       <li class="add">ファイルの属性と作成/参照時刻の復元を行う機能を追加。</li>\r
+      </ul>\r
+     </dd>\r
      <dt>cuiWrapper</dt>\r
      <dd>\r
       <ul>\r
index c428739..3d40b42 100644 (file)
@@ -82,18 +82,30 @@ int GetFileInformation2(void * _hArchive, TPI_FILEINFO * _fiInfo, wxULongLong_t
                NWindows::NTime::FileTimeToUnixTime(prop.filetime, t);\r
                _fiInfo->tmModified.Set((time_t) t);\r
        }\r
+       else\r
+       {\r
+               _fiInfo->tmModified.SetToCurrent();\r
+       }\r
        hArc->GetProperty(nIndex, kpidCTime, & prop);\r
        if (prop.vt == VT_FILETIME)\r
        {\r
                NWindows::NTime::FileTimeToUnixTime(prop.filetime, t);\r
                _fiInfo->tmCreate.Set((time_t) t);\r
        }\r
+       else\r
+       {\r
+               _fiInfo->tmCreate.SetToCurrent();\r
+       }\r
        hArc->GetProperty(nIndex, kpidATime, & prop);\r
        if (prop.vt == VT_FILETIME)\r
        {\r
                NWindows::NTime::FileTimeToUnixTime(prop.filetime, t);\r
                _fiInfo->tmAccess.Set((time_t) t);\r
        }\r
+       else\r
+       {\r
+               _fiInfo->tmAccess.SetToCurrent();\r
+       }\r
        hArc->GetProperty(nIndex, kpidPath, & prop);\r
        if (prop.vt == VT_BSTR)\r
        {\r
@@ -498,12 +510,14 @@ STDMETHODIMP CArchiveExtractCallback::SetOperationResult(int nResult)
        default:                                                       this->nErrorCode = TPI_ERROR_UNDEFINED;       break;\r
        }\r
 \r
-       // æ\9b´æ\96°æ\99\82å\88»ã\82\92è¨\98é\8c²ã\80\82\r
+       // 時刻を記録。\r
        if (_outFileStream != NULL)\r
        {\r
-               FILETIME ft;\r
-               NWindows::NTime::UnixTimeToFileTime(this->piInfo.fiInfo.tmModified.GetTicks(), ft);\r
-               _outFileStreamSpec->SetMTime(& ft);\r
+               FILETIME ftAccess, ftCreate, ftModified;\r
+               NWindows::NTime::UnixTimeToFileTime(this->piInfo.fiInfo.tmAccess.GetTicks(),   ftAccess);\r
+               NWindows::NTime::UnixTimeToFileTime(this->piInfo.fiInfo.tmCreate.GetTicks(),   ftCreate);\r
+               NWindows::NTime::UnixTimeToFileTime(this->piInfo.fiInfo.tmModified.GetTicks(), ftModified);\r
+               _outFileStreamSpec->SetTime(& ftCreate, & ftAccess, & ftModified);\r
                _outFileStreamSpec->Close();\r
        }\r
        _outFileStream.Release();\r
@@ -511,7 +525,7 @@ STDMETHODIMP CArchiveExtractCallback::SetOperationResult(int nResult)
        // 属性を記録。\r
        if (this->nMode == NArchive::NExtract::NAskMode::kExtract)\r
        {\r
-//             NWindows::NFile::NDirectory::MySetFileAttributes(this->piInfo.fiInfo.fnFileName.GetFullPath(), this->piInfo.fiInfo.dwAttribute);\r
+               NWindows::NFile::NDirectory::MySetFileAttributes(this->piInfo.fnDestination.GetFullPath(), this->piInfo.fiInfo.dwAttribute);\r
        }\r
 \r
        return S_OK;\r
index e9aaea7..4278bae 100644 (file)
                        Name="7-zip"\r
                        >\r
                        <File\r
+                               RelativePath=".\7-zip\CPP\Windows\FileDir.cpp"\r
+                               >\r
+                       </File>\r
+                       <File\r
                                RelativePath=".\7-zip\cpp\windows\FileFind.cpp"\r
                                >\r
                        </File>\r
index f9bc917..bdd85ae 100644 (file)
@@ -4,5 +4,5 @@ PLUGIN_NAME = 7zArc
 7ZBASE      = 7-zip_linux\r
 CPPFLAGS_ADD= -I$(7ZBASE)/CPP -I$(7ZBASE)/CPP/myWindows -I$(7ZBASE)/CPP/include_windows -I$(7ZBASE)/CPP/7zip/UI/Client7z -DUSE_WIN_FILE\r
 7ZDIR       = ../../plugin/7zArc/$(7ZBASE)/CPP\r
-OBJS_ADD    = $(7ZDIR)/7zip/Common/FileStreams.o $(7ZDIR)/Common/MyString.o $(7ZDIR)/Common/MyVector.o $(7ZDIR)/Common/MyWindows.o $(7ZDIR)/Common/StringConvert.o $(7ZDIR)/myWindows/wine_date_and_time.o $(7ZDIR)/Windows/FileFind.o $(7ZDIR)/Windows/FileIO.o $(7ZDIR)/Windows/PropVariant.o $(7ZDIR)/Windows/Time.o\r
+OBJS_ADD    = $(7ZDIR)/7zip/Common/FileStreams.o $(7ZDIR)/Common/MyString.o $(7ZDIR)/Common/MyVector.o $(7ZDIR)/Common/MyWindows.o $(7ZDIR)/Common/StringConvert.o $(7ZDIR)/myWindows/wine_date_and_time.o $(7ZDIR)/Windows/FileDir.o $(7ZDIR)/Windows/FileFind.o $(7ZDIR)/Windows/FileIO.o $(7ZDIR)/Windows/PropVariant.o $(7ZDIR)/Windows/Time.o\r
 include ../Makefile.default\r