DoxigAlpha

writeFile

Function parameters

Parameters

#
w:*Writer
sub_path:[]const u8
file_reader:*std.fs.File.Reader
stat_mtime:i128

Options for writing file/dir/link.

Types

#
Options
Options for writing file/dir/link.
Header
A struct that is exactly 512 bytes and matches tar file format.

Sets prefix for all other write* method paths.

Functions

#
setRoot
Sets prefix for all other write* method paths.
writeFileStream
Writes file reading file content from `reader`.
writeFileBytes
Writes file using bytes buffer `content` for size and file content.
finishPedantically
According to the specification, tar should finish with two zero blocks, but

Error sets in this namespace

Error Sets

#

Source

Implementation

#
pub fn writeFile(
    w: *Writer,
    sub_path: []const u8,
    file_reader: *std.fs.File.Reader,
    stat_mtime: i128,
) WriteFileError!void {
    const size = try file_reader.getSize();
    const mtime: u64 = @intCast(@divFloor(stat_mtime, std.time.ns_per_s));

    var header: Header = .{};
    try w.setPath(&header, sub_path);
    try header.setSize(size);
    try header.setMtime(mtime);
    try header.updateChecksum();

    try w.underlying_writer.writeAll(@ptrCast((&header)[0..1]));
    _ = try w.underlying_writer.sendFileAll(file_reader, .unlimited);
    try w.writePadding64(size);
}