class Metasm::ZIP::LocalHeader
zip file format:
- local header 1
-
compressed data 1
- local header 2
-
compressed data 2
- central header 1
- central header 2
- end of central directory
- central header 2
- central header 1
Attributes
compressed_off[RW]
extra[RW]
fname[RW]
Public Class Methods
from_central(f)
click to toggle source
return a new LocalHeader
with all fields copied from a CentralHeader
# File metasm/exe_format/zip.rb, line 74 def self.from_central(f) l = new l.verneed = f.verneed l.flags = f.flags l.compress_method = f.compress_method l.mtime = f.mtime l.mdate = f.mdate l.crc32 = f.crc32 l.compressed_sz = f.compressed_sz l.uncompressed_sz = f.uncompressed_sz l.fname = f.fname l.extra = f.extra l end
Public Instance Methods
decode(zip)
click to toggle source
Calls superclass method
Metasm::SerialStruct#decode
# File metasm/exe_format/zip.rb, line 54 def decode(zip) super(zip) raise "Invalid ZIP signature #{@signature.to_s(16)}" if @signature != MAGIC_LOCALHEADER @fname = zip.encoded.read(@fname_len) if @fname_len > 0 @extra = zip.encoded.read(@extra_len) if @extra_len > 0 @compressed_off = zip.encoded.ptr end
encode(zip)
click to toggle source
Calls superclass method
Metasm::SerialStruct#encode
# File metasm/exe_format/zip.rb, line 68 def encode(zip) ed = super(zip) ed << fname << extra end
set_default_values(zip)
click to toggle source
Calls superclass method
Metasm::SerialStruct#set_default_values
# File metasm/exe_format/zip.rb, line 62 def set_default_values(zip) @fname_len = fname ? @fname.length : 0 @extra_len = extra ? @extra.length : 0 super(zip) end