From c118e42111861c727b9af660404dbc631cc5f1cb Mon Sep 17 00:00:00 2001 From: Andy Li <1450947+andy1li@users.noreply.github.com> Date: Thu, 11 Sep 2025 04:15:17 +0800 Subject: [PATCH 1/2] Refactor stdout handling in Zig main function for improved output management - Consolidated stdout buffer and writer initialization. - Replaced stdout.print with std.debug.print for usage message output. - Streamlined code by removing redundant stdout initialization. --- compiled_starters/zig/src/main.zig | 11 ++++------- solutions/zig/01-dr6/code/src/main.zig | 11 ++++------- solutions/zig/01-dr6/diff/src/main.zig.diff | 15 +++++++-------- starter_templates/zig/code/src/main.zig | 11 ++++------- 4 files changed, 19 insertions(+), 29 deletions(-) diff --git a/compiled_starters/zig/src/main.zig b/compiled_starters/zig/src/main.zig index e5d80df..485a9db 100755 --- a/compiled_starters/zig/src/main.zig +++ b/compiled_starters/zig/src/main.zig @@ -1,4 +1,7 @@ const std = @import("std"); +var stdout_buffer: [1024]u8 = undefined; +var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); +const stdout = &stdout_writer.interface; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -8,14 +11,8 @@ pub fn main() !void { const args = try std.process.argsAlloc(allocator); defer std.process.argsFree(allocator, args); - var stdout_buffer: [1024]u8 = undefined; - var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); - const stdout = &stdout_writer.interface; - if (args.len < 3) { - try stdout.print("Usage: {s} \n", .{args[0]}); - try stdout.flush(); - return; + std.debug.print("Usage: {s} \n", .{args[0]}); } const database_file_path: []const u8 = args[1]; diff --git a/solutions/zig/01-dr6/code/src/main.zig b/solutions/zig/01-dr6/code/src/main.zig index 26d9aee..daf4bb6 100755 --- a/solutions/zig/01-dr6/code/src/main.zig +++ b/solutions/zig/01-dr6/code/src/main.zig @@ -1,4 +1,7 @@ const std = @import("std"); +var stdout_buffer: [1024]u8 = undefined; +var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); +const stdout = &stdout_writer.interface; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -8,14 +11,8 @@ pub fn main() !void { const args = try std.process.argsAlloc(allocator); defer std.process.argsFree(allocator, args); - var stdout_buffer: [1024]u8 = undefined; - var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); - const stdout = &stdout_writer.interface; - if (args.len < 3) { - try stdout.print("Usage: {s} \n", .{args[0]}); - try stdout.flush(); - return; + std.debug.print("Usage: {s} \n", .{args[0]}); } const database_file_path: []const u8 = args[1]; diff --git a/solutions/zig/01-dr6/diff/src/main.zig.diff b/solutions/zig/01-dr6/diff/src/main.zig.diff index c05a28a..f584a3e 100644 --- a/solutions/zig/01-dr6/diff/src/main.zig.diff +++ b/solutions/zig/01-dr6/diff/src/main.zig.diff @@ -1,4 +1,9 @@ -@@ -3,37 +3,33 @@ +@@ -1,36 +1,32 @@ + const std = @import("std"); + var stdout_buffer: [1024]u8 = undefined; + var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); + const stdout = &stdout_writer.interface; + pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); @@ -7,14 +12,8 @@ const args = try std.process.argsAlloc(allocator); defer std.process.argsFree(allocator, args); - var stdout_buffer: [1024]u8 = undefined; - var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); - const stdout = &stdout_writer.interface; - if (args.len < 3) { - try stdout.print("Usage: {s} \n", .{args[0]}); - try stdout.flush(); - return; + std.debug.print("Usage: {s} \n", .{args[0]}); } const database_file_path: []const u8 = args[1]; diff --git a/starter_templates/zig/code/src/main.zig b/starter_templates/zig/code/src/main.zig index e5d80df..485a9db 100755 --- a/starter_templates/zig/code/src/main.zig +++ b/starter_templates/zig/code/src/main.zig @@ -1,4 +1,7 @@ const std = @import("std"); +var stdout_buffer: [1024]u8 = undefined; +var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); +const stdout = &stdout_writer.interface; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -8,14 +11,8 @@ pub fn main() !void { const args = try std.process.argsAlloc(allocator); defer std.process.argsFree(allocator, args); - var stdout_buffer: [1024]u8 = undefined; - var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); - const stdout = &stdout_writer.interface; - if (args.len < 3) { - try stdout.print("Usage: {s} \n", .{args[0]}); - try stdout.flush(); - return; + std.debug.print("Usage: {s} \n", .{args[0]}); } const database_file_path: []const u8 = args[1]; From c5cd3685becdbb55cd5ee223108612ad6e9c8579 Mon Sep 17 00:00:00 2001 From: Andy Li <1450947+andy1li@users.noreply.github.com> Date: Thu, 11 Sep 2025 04:26:51 +0800 Subject: [PATCH 2/2] Add exit call for insufficient arguments in Zig main function - Implemented std.process.exit(1) to terminate the program when fewer than 3 arguments are provided. - Ensured proper usage message is displayed before exiting. --- compiled_starters/zig/src/main.zig | 1 + solutions/zig/01-dr6/code/src/main.zig | 1 + solutions/zig/01-dr6/diff/src/main.zig.diff | 3 ++- starter_templates/zig/code/src/main.zig | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/compiled_starters/zig/src/main.zig b/compiled_starters/zig/src/main.zig index 485a9db..29f0041 100755 --- a/compiled_starters/zig/src/main.zig +++ b/compiled_starters/zig/src/main.zig @@ -13,6 +13,7 @@ pub fn main() !void { if (args.len < 3) { std.debug.print("Usage: {s} \n", .{args[0]}); + std.process.exit(1); } const database_file_path: []const u8 = args[1]; diff --git a/solutions/zig/01-dr6/code/src/main.zig b/solutions/zig/01-dr6/code/src/main.zig index daf4bb6..8154bf7 100755 --- a/solutions/zig/01-dr6/code/src/main.zig +++ b/solutions/zig/01-dr6/code/src/main.zig @@ -13,6 +13,7 @@ pub fn main() !void { if (args.len < 3) { std.debug.print("Usage: {s} \n", .{args[0]}); + std.process.exit(1); } const database_file_path: []const u8 = args[1]; diff --git a/solutions/zig/01-dr6/diff/src/main.zig.diff b/solutions/zig/01-dr6/diff/src/main.zig.diff index f584a3e..da3a8fe 100644 --- a/solutions/zig/01-dr6/diff/src/main.zig.diff +++ b/solutions/zig/01-dr6/diff/src/main.zig.diff @@ -1,4 +1,4 @@ -@@ -1,36 +1,32 @@ +@@ -1,37 +1,33 @@ const std = @import("std"); var stdout_buffer: [1024]u8 = undefined; var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer); @@ -14,6 +14,7 @@ if (args.len < 3) { std.debug.print("Usage: {s} \n", .{args[0]}); + std.process.exit(1); } const database_file_path: []const u8 = args[1]; diff --git a/starter_templates/zig/code/src/main.zig b/starter_templates/zig/code/src/main.zig index 485a9db..29f0041 100755 --- a/starter_templates/zig/code/src/main.zig +++ b/starter_templates/zig/code/src/main.zig @@ -13,6 +13,7 @@ pub fn main() !void { if (args.len < 3) { std.debug.print("Usage: {s} \n", .{args[0]}); + std.process.exit(1); } const database_file_path: []const u8 = args[1];