49 lines
1.4 KiB
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();
|
|
}
|