class ZipTricks::Streamer::Entry

Is used internally by Streamer to keep track of entries in the archive during writing. Normally you will not have to use this class directly

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/zip_tricks/streamer/entry.rb, line 8
def initialize(*)
  super
  filename.force_encoding(Encoding::UTF_8)
  @requires_efs_flag = !(begin
                           filename.encode(Encoding::ASCII)
                         rescue
                           false
                         end)
end

Public Instance Methods

gp_flags() click to toggle source

Set the general purpose flags for the entry. We care about is the EFS bit (bit 11) which should be set if the filename is UTF8. If it is, we need to set the bit so that the unarchiving application knows that the filename in the archive is UTF-8 encoded, and not some DOS default. For ASCII entries it does not matter. Additionally, we care about bit 3 which toggles the use of the postfix data descriptor.

# File lib/zip_tricks/streamer/entry.rb, line 27
def gp_flags
  flag = 0b00000000000
  flag |= 0b100000000000 if @requires_efs_flag # bit 11
  flag |= 0x0008 if use_data_descriptor        # bit 3
  flag
end
total_bytes_used() click to toggle source
# File lib/zip_tricks/streamer/entry.rb, line 18
def total_bytes_used
  bytes_used_for_local_header + compressed_size + bytes_used_for_data_descriptor
end