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 › compiler/ › Maker/ › WebServer.zig › serveTarFile
serveTarFile
WebServer.serveTarFile
pub fn serveTarFile (ws : *WebServer , request : *http .Server .Request , paths : []const Cache .Path ) !void
File
Code
pub fn serveTarFile (ws : *WebServer , request : *http .Server .Request , paths : []const Cache .Path ) !void {
const graph = ws .graph ;
const io = graph .io ;
var send_buffer : [0x4000 ]u8 = undefined ;
var response = try request .respondStreaming (&send_buffer , .{
.respond_options = .{
.extra_headers = &.{
.{ .name = "Content-Type" , .value = "application/x-tar" },
cache_control_header ,
},
},
});
var archiver : std .tar .Writer = .{ .underlying_writer = &response .writer };
for (paths ) |path | {
var file = path .root_dir .handle .openFile (io , path .sub_path , .{}) catch |err | {
log .err ("failed to open '{f}': {s}" , .{ path , @errorName (err ) });
continue ;
};
defer file .close (io );
const stat = try file .stat (io );
var read_buffer : [1024 ]u8 = undefined ;
var file_reader : Io .File .Reader = .initSize (file , io , &read_buffer , stat .size );
archiver .prefix = path .root_dir .path orelse graph .cache .cwd ;
try archiver .writeFile (path .sub_path , &file_reader , @intCast (stat .mtime .toSeconds ()));
}
try response .end ();
}