diff options
| author | Isaac Freund <mail@isaacfreund.com> | 2023-10-16 16:18:36 +0200 |
|---|---|---|
| committer | Isaac Freund <mail@isaacfreund.com> | 2023-10-16 16:27:03 +0200 |
| commit | 2e586c706125442b044a3ab329135c859fba956f (patch) | |
| tree | 163c8061b8e14a3762846de07115e8e2327572be /common/flags.zig | |
| parent | 7f30c655c75568ae331ed0243578d91870f3f9c6 (diff) | |
| download | river-2e586c706125442b044a3ab329135c859fba956f.tar.gz river-2e586c706125442b044a3ab329135c859fba956f.tar.xz | |
build: update to Zig 0.11.0
Diffstat (limited to 'common/flags.zig')
| -rw-r--r-- | common/flags.zig | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/common/flags.zig b/common/flags.zig index 1e34ce1..3f75e13 100644 --- a/common/flags.zig +++ b/common/flags.zig @@ -41,14 +41,14 @@ pub fn parser(comptime Arg: type, comptime flags: []const Flag) type { const field: std.builtin.Type.StructField = switch (flag.kind) { .boolean => .{ .name = flag.name, - .field_type = bool, + .type = bool, .default_value = &false, .is_comptime = false, .alignment = @alignOf(bool), }, .arg => .{ .name = flag.name, - .field_type = ?[:0]const u8, + .type = ?[:0]const u8, .default_value = &@as(?[:0]const u8, null), .is_comptime = false, .alignment = @alignOf(?[:0]const u8), @@ -70,8 +70,13 @@ pub fn parser(comptime Arg: type, comptime flags: []const Flag) type { var i: usize = 0; outer: while (i < args.len) : (i += 1) { + const arg = switch (Arg) { + [*:0]const u8 => mem.sliceTo(args[i], 0), + [:0]const u8 => args[i], + else => unreachable, + }; inline for (flags) |flag| { - if (mem.eql(u8, "-" ++ flag.name, mem.span(args[i]))) { + if (mem.eql(u8, "-" ++ flag.name, arg)) { switch (flag.kind) { .boolean => @field(result_flags, flag.name) = true, .arg => { @@ -81,7 +86,11 @@ pub fn parser(comptime Arg: type, comptime flags: []const Flag) type { "' requires an argument but none was provided!", .{}); return error.MissingFlagArgument; } - @field(result_flags, flag.name) = mem.span(args[i]); + @field(result_flags, flag.name) = switch (Arg) { + [*:0]const u8 => mem.sliceTo(args[i], 0), + [:0]const u8 => args[i], + else => unreachable, + }; }, } continue :outer; |
