Project

General

Profile

Actions

Bug #8340

closed

rubyzip does not save time of zipped files

Added by Thilo.Opaterny (Thilo Opaterny) about 12 years ago. Updated about 12 years ago.

Status:
Third Party's Issue
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p0 (2013-02-24) [x64-mingw32] rubyzip (0.9.9)
[ruby-core:54623]

Description

I wrote a little test

require 'zip/zip'

zipName = "test.zip"
zipFile = Zip::ZipFile.open( zipName, Zip::ZipFile::CREATE )

file = File.open( "save.rb", "rb")
puts time = Zip::DOSTime.at( file.mtime )
zipEntry = Zip::ZipEntry.new( zipName, file.path, "", "", 0, 0, Zip::ZipEntry::DEFLATED, 0, time ) // I want to keep the time
outputStream = zipFile.get_output_stream( zipEntry );
outputStream << file.read
file.close
outputStream.close

zipFile.close()

Zip::ZipFile.foreach( zipName ){ |zipEntry|
p zipEntry.name
p zipEntry.time
}

it returns

2013-04-08 21:05:20 +0200
"save.rb"
2013-04-27 22:11:36 +0200

obvious it does not keep the time.

I can fix the problem if I change line 34 of c:\win\Ruby200x64\lib\ruby\gems\2.0.0\gems\rubyzip-0.9.9\lib\zip\zip_output_stream.rb
into if entryname.kind_of?(ZipEntry) or entryname.kind_of?( ZipStreamableStream )
but I feel that this is not the right way to do it, because there are at least 4 other kind_of?(ZipEntry) in that lib

c:\win\Ruby200x64\lib\ruby\gems\2.0.0\gems\rubyzip-0.9.9\lib\zip\zip_streamable_stream.rb
tells mee that ZipStreamableStream < DelegateClass(ZipEntry)
so I think the problem should be fixed in there. But how?

Updated by naruse (Yui NARUSE) about 12 years ago

  • Status changed from Open to Third Party's Issue

Report this to rubyzip's tracker.
https://github.com/aussiegeek/rubyzip

Updated by Thilo.Opaterny (Thilo Opaterny) about 12 years ago

Another try to fix this is to add

def kind_of?( arg )
    super( arg ) || __getobj__.kind_of?( arg )
end

to c:\win\Ruby200x64\lib\ruby\gems\2.0.0\gems\rubyzip-0.9.9\lib\zip\zip_streamable_stream.rb

Actions

Also available in: Atom PDF

Like0
Like0Like0