From f4911a77f4c94faf344a1dd46ed7a8011cac2c48 Mon Sep 17 00:00:00 2001 From: Marijn Besseling Date: Wed, 18 Mar 2026 15:10:02 +0100 Subject: launch launch --- src/main.zig | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main.zig (limited to 'src') diff --git a/src/main.zig b/src/main.zig new file mode 100644 index 0000000..1b3b689 --- /dev/null +++ b/src/main.zig @@ -0,0 +1,35 @@ +const std = @import("std"); +const Io = std.Io; + +pub fn main(init: std.process.Init) !void { + // This is appropriate for anything that lives as long as the process. + const arena: std.mem.Allocator = init.arena.allocator(); + + // Accessing command line arguments: + const args = try init.minimal.args.toSlice(arena); + const filepath = args[0]; + const filename = std.fs.path.basename(filepath); + + std.log.debug("executable name: {s}", .{filename}); + + const io = init.io; + var words = try tokenizeIntoArraylist(arena, filename); + + const command = try words.toOwnedSlice(arena); + + return std.process.replace(io, .{ + .argv = command, + }); +} + +fn tokenizeIntoArraylist(gpa: std.mem.Allocator, buffer: []const u8) !std.ArrayList([]const u8) { + var it = std.mem.tokenizeScalar(u8, buffer, ' '); + + var words = std.ArrayList([]const u8).empty; + + while (it.next()) |word| { + try words.append(gpa, word); + } + + return words; +} -- cgit v1.2.3