diff options
Diffstat (limited to 'lib/compiler/std-docs.zig')
| -rw-r--r-- | lib/compiler/std-docs.zig | 40 |
1 files changed, 8 insertions, 32 deletions
diff --git a/lib/compiler/std-docs.zig b/lib/compiler/std-docs.zig index c11665101c..4cfdf9b1e3 100644 --- a/lib/compiler/std-docs.zig +++ b/lib/compiler/std-docs.zig @@ -181,7 +181,6 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void { }, }, }); - const w = response.writer(); var std_dir = try context.lib_dir.openDir("std", .{ .iterate = true }); defer std_dir.close(); @@ -189,6 +188,9 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void { var walker = try std_dir.walk(gpa); defer walker.deinit(); + var archiver = std.tar.writer(response.writer()); + archiver.prefix = "std"; + while (try walker.next()) |entry| { switch (entry.kind) { .file => { @@ -199,47 +201,21 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void { }, else => continue, } - - var file = try std_dir.openFile(entry.path, .{}); + var file = try entry.dir.openFile(entry.basename, .{}); defer file.close(); - - const stat = try file.stat(); - const padding = p: { - const remainder = stat.size % 512; - break :p if (remainder > 0) 512 - remainder else 0; - }; - - var file_header = std.tar.output.Header.init(); - file_header.typeflag = .regular; - try file_header.setPath("std", entry.path); - try file_header.setSize(stat.size); - try file_header.updateChecksum(); - try w.writeAll(std.mem.asBytes(&file_header)); - try w.writeFile(file); - try w.writeByteNTimes(0, padding); + try archiver.writeFile(entry.path, file); } { // Since this command is JIT compiled, the builtin module available in // this source file corresponds to the user's host system. const builtin_zig = @embedFile("builtin"); - - var file_header = std.tar.output.Header.init(); - file_header.typeflag = .regular; - try file_header.setPath("builtin", "builtin.zig"); - try file_header.setSize(builtin_zig.len); - try file_header.updateChecksum(); - try w.writeAll(std.mem.asBytes(&file_header)); - try w.writeAll(builtin_zig); - const padding = p: { - const remainder = builtin_zig.len % 512; - break :p if (remainder > 0) 512 - remainder else 0; - }; - try w.writeByteNTimes(0, padding); + archiver.prefix = "builtin"; + try archiver.writeFileBytes("builtin.zig", builtin_zig, .{}); } // intentionally omitting the pointless trailer - //try w.writeByteNTimes(0, 512 * 2); + //try archiver.finish(); try response.end(); } |
