Skip to content

Commit

Permalink
Add support for multiple .res inputs when using cvtres subcommand
Browse files Browse the repository at this point in the history
  • Loading branch information
squeek502 committed Nov 6, 2024
1 parent 8f139fa commit d12ed12
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const parse = @import("parse.zig");
const lex = @import("lex.zig");
const preprocess = @import("preprocess.zig");
const renderErrorMessage = @import("utils.zig").renderErrorMessage;
const openFileNotDir = @import("utils.zig").openFileNotDir;
const auto_includes = @import("auto_includes.zig");
const hasDisjointCodePage = @import("disjoint_code_page.zig").hasDisjointCodePage;
const cvtres = @import("cvtres.zig");
Expand Down Expand Up @@ -371,6 +372,26 @@ pub fn main() !void {
};
defer resources.deinit();

for (options.additional_inputs.items) |additional_res| {
const additional_file = openFileNotDir(std.fs.cwd(), additional_res, .{}) catch |err| {
try renderErrorMessage(stderr.writer(), stderr_config, .err, "unable to read res file path '{s}': {s}", .{ additional_res, @errorName(err) });
std.process.exit(1);
};
defer additional_file.close();

const file_len = additional_file.getEndPos() catch |err| {
try renderErrorMessage(stderr.writer(), stderr_config, .err, "unable to determine size of res file '{s}': {s}", .{ additional_res, @errorName(err) });
std.process.exit(1);
};

var buffered_reader = std.io.bufferedReader(additional_file.reader());
cvtres.parseResInto(&resources, buffered_reader.reader(), .{ .max_size = file_len }) catch |err| {
// TODO: Better errors
try renderErrorMessage(stderr.writer(), stderr_config, .err, "unable to parse res file '{s}': {s}", .{ additional_res, @errorName(err) });
std.process.exit(1);
};
}

const coff_output_filename = options.output_filename;
var coff_output_file = std.fs.cwd().createFile(coff_output_filename, .{}) catch |err| {
try renderErrorMessage(stderr.writer(), stderr_config, .err, "unable to create output file '{s}': {s}", .{ coff_output_filename, @errorName(err) });
Expand Down

0 comments on commit d12ed12

Please # to comment.