const std = @import("std"); const Io = std.Io; pub fn main(init: std.process.Init) !void { const io = init.io; const arena = init.arena.allocator(); const args = try init.minimal.args.toSlice(arena); if (args.len != 3) { std.debug.print("Usage: ./remove-pragma ", .{}); std.process.exit(1); } const input_path = args[1]; const output_path = args[2]; const cwd = Io.Dir.cwd(); var input_file = try cwd.openFile(io, input_path, .{ .mode = .read_only }); defer input_file.close(io); var input_buffer: [4*4096]u8 = undefined; var input_file_reader = input_file.reader(io, &input_buffer); const reader = &input_file_reader.interface; var output_file = try cwd.createFile(io, output_path, .{ }); defer output_file.close(io); var output_buffer: [4*4096]u8 = undefined; var output_file_writer = output_file.writer(io, &output_buffer); const writer = &output_file_writer.interface; while (true) { const line = reader.takeDelimiterInclusive('\n') catch |err| switch (err) { error.EndOfStream => break, else => return err, }; const trimmed_line = std.mem.trimStart(u8, line, &std.ascii.whitespace); if (std.mem.startsWith(u8, trimmed_line, "#pragma ")) { continue; } try writer.writeAll(line); } try writer.flush(); }