sokoban-v2/libs/miniz/scripts/remove-pragma.zig

49 lines
1.4 KiB
Zig

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 <input> <output>", .{});
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();
}