Function parse [src]

Prototype

pub fn parse(allocator: Allocator, reader: *Reader) !Tz

Parameters

allocator: Allocatorreader: *Reader

Source

pub fn parse(allocator: Allocator, reader: *Reader) !Tz { const legacy_header = try reader.takeStruct(Header, .big); if (!std.mem.eql(u8, &legacy_header.magic, "TZif")) return error.BadHeader; if (legacy_header.version != 0 and legacy_header.version != '2' and legacy_header.version != '3') return error.BadVersion; if (legacy_header.version == 0) return parseBlock(allocator, reader, legacy_header, true); // If the format is modern, just skip over the legacy data const skip_n = legacy_header.counts.timecnt * 5 + legacy_header.counts.typecnt * 6 + legacy_header.counts.charcnt + legacy_header.counts.leapcnt * 8 + legacy_header.counts.isstdcnt + legacy_header.counts.isutcnt; try reader.discardAll(skip_n); var header = try reader.takeStruct(Header, .big); if (!std.mem.eql(u8, &header.magic, "TZif")) return error.BadHeader; if (header.version != '2' and header.version != '3') return error.BadVersion; return parseBlock(allocator, reader, header, false); }