| ... | @@ -80,8 +80,6 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator { | ... | @@ -80,8 +80,6 @@ pub fn parse(k: FlagDashKind) !std.process.ArgIterator { |
| 80 | } | 80 | } |
| 81 | | 81 | |
| 82 | pub fn parseEnv() !void { | 82 | pub fn parseEnv() !void { |
| 83 | const alloc = singles.allocator; | | |
| 84 | | | |
| 85 | for (singles.keys(), singles.values()) |k, *v| { | 83 | for (singles.keys(), singles.values()) |k, *v| { |
| 86 | var buf: [64]u8 = @splat(0); | 84 | var buf: [64]u8 = @splat(0); |
| 87 | for (k, 0..) |c, i| buf[i] = switch (c) { | 85 | for (k, 0..) |c, i| buf[i] = switch (c) { |
| ... | @@ -97,13 +95,17 @@ pub fn parseEnv() !void { | ... | @@ -97,13 +95,17 @@ pub fn parseEnv() !void { |
| 97 | for (multis.keys(), multis.values()) |k, *v| { | 95 | for (multis.keys(), multis.values()) |k, *v| { |
| 98 | var n: usize = 1; | 96 | var n: usize = 1; |
| 99 | while (true) : (n += 1) { | 97 | while (true) : (n += 1) { |
| 100 | const w = try std.fmt.allocPrintZ(alloc, "{s}_{d}", .{ k, n }); | 98 | var buf: [64]u8 = @splat(0); |
| 101 | defer alloc.free(w); | 99 | for (k, 0..) |c, i| buf[i] = switch (c) { |
| 102 | if (sys.getenv(w)) |value| { | 100 | 'A'...'Z', '_', '0'...'9' => |a| a, |
| 103 | try v.append(value); | 101 | 'a'...'z' => |a| a - 'a' + 'A', |
| 104 | continue; | 102 | '-' => '_', |
| 105 | } | 103 | else => unreachable, |
| 106 | break; | 104 | }; |
| | 105 | const buf2 = try std.fmt.bufPrint(buf[k.len..], "_{d}", .{n}); |
| | 106 | const w = buf[0 .. k.len + buf2.len :0]; |
| | 107 | const value = sys.getenv(w) orelse break; |
| | 108 | try v.append(value); |
| 107 | } | 109 | } |
| 108 | } | 110 | } |
| 109 | } | 111 | } |