Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › zip.zig › readZip64FileExtents
readZip64FileExtents
zip.readZip64FileExtents
fn readZip64FileExtents (comptime T : type , header : T , extents : *FileExtents , data : []u8 ) !void
File
Code
fn readZip64FileExtents (comptime T : type , header : T , extents : *FileExtents , data : []u8 ) !void {
var data_offset : usize = 0 ;
if (isMaxInt (header .uncompressed_size )) {
if (data_offset + 8 > data .len )
return error .ZipBadCd64Size ;
extents .uncompressed_size = std .mem .readInt (u64 , data [data_offset ..][0 ..8 ], .little );
data_offset += 8 ;
}
if (isMaxInt (header .compressed_size )) {
if (data_offset + 8 > data .len )
return error .ZipBadCd64Size ;
extents .compressed_size = std .mem .readInt (u64 , data [data_offset ..][0 ..8 ], .little );
data_offset += 8 ;
}
switch (T ) {
CentralDirectoryFileHeader => {
if (isMaxInt (header .local_file_header_offset )) {
if (data_offset + 8 > data .len )
return error .ZipBadCd64Size ;
extents .local_file_header_offset = std .mem .readInt (u64 , data [data_offset ..][0 ..8 ], .little );
data_offset += 8 ;
}
if (isMaxInt (header .disk_number )) {
if (data_offset + 4 > data .len )
return error .ZipInvalid ;
const disk_number = std .mem .readInt (u32 , data [data_offset ..][0 ..4 ], .little );
if (disk_number != 0 )
return error .ZipMultiDiskUnsupported ;
data_offset += 4 ;
}
if (data_offset > data .len )
return error .ZipBadCd64Size ;
},
else => {},
}
}