def parse_central(data)
unless data.size == 5 || data.size == 9 || data.size == 13 then
raise Zip::ExtraFieldError,
"invalid size for extended timestamp: #{data.size}"
end
flags, *times = data.unpack('CV*')
mtime = nil
atime = nil
crtime = nil
if flags & 0b001 != 0 then
if times.size == 0 then
raise Zip::ExtraFieldError,
'corrupt extended timestamp: last modified time field not present'
end
mtime = Time.at(times.shift)
end
if flags & 0b010 != 0 then
if times.size > 0 then
atime = Time.at(times.shift)
end
end
if flags & 0b100 != 0 then
if times.size > 0 then
crtime = Time.at(times.shift)
end
end
new(mtime, atime, crtime)
end