diff options
Diffstat (limited to 'src/cmd/external.zig')
-rw-r--r-- | src/cmd/external.zig | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/cmd/external.zig b/src/cmd/external.zig index 3aaa7af..befd746 100644 --- a/src/cmd/external.zig +++ b/src/cmd/external.zig @@ -26,12 +26,12 @@ pub const External = struct { .capture => true, }; // Try to execute external command - var child_args = ArrayList([]const u8).init(allocator); - defer child_args.deinit(); + var child_args = ArrayList([]const u8){}; + defer child_args.deinit(allocator); - try child_args.append(external.program); + try child_args.append(allocator, external.program); for (external.args.items) |arg| { - try child_args.append(arg); + try child_args.append(allocator, arg); } var child = std.process.Child.init(child_args.items, allocator); @@ -72,7 +72,9 @@ pub const External = struct { // Handle input redirection if (input_source) |source| { if (child.stdin) |stdin| { - const writer = stdin.writer(); + var writer_buffer: [1024]u8 = undefined; + var file_writer = stdin.writer(&writer_buffer); + const writer = &file_writer.interface; // Reset source position for reading var temp_source = source.*; @@ -82,6 +84,7 @@ pub const External = struct { defer allocator.free(line); try writer.print("{s}\n", .{line}); } + try writer.flush(); child.stdin.?.close(); child.stdin = null; } |