Skip to content

Commit ccaf82d

Browse files
committed
CLI: simpler semantics for prefixed integer args
1 parent 513389b commit ccaf82d

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

src/main.zig

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,10 +1638,10 @@ fn buildOutputType(
16381638
linker_z_relro = true;
16391639
} else if (mem.eql(u8, z_arg, "norelro")) {
16401640
linker_z_relro = false;
1641-
} else if (mem.chompPrefix(u8, z_arg, "common-page-size=")) |rest| {
1642-
linker_z_common_page_size = parseIntSuffix(rest, 0);
1643-
} else if (mem.chompPrefix(u8, z_arg, "max-page-size=")) |rest| {
1644-
linker_z_max_page_size = parseIntSuffix(rest, 0);
1641+
} else if (prefixedIntArg(z_arg, "common-page-size=")) |int| {
1642+
linker_z_common_page_size = int;
1643+
} else if (prefixedIntArg(z_arg, "max-page-size=")) |int| {
1644+
linker_z_max_page_size = int;
16451645
} else {
16461646
fatal("unsupported linker extension flag: -z {s}", .{z_arg});
16471647
}
@@ -1662,14 +1662,14 @@ fn buildOutputType(
16621662
linker_import_table = true;
16631663
} else if (mem.eql(u8, arg, "--export-table")) {
16641664
linker_export_table = true;
1665-
} else if (mem.chompPrefix(u8, arg, "--initial-memory=")) |rest| {
1666-
linker_initial_memory = parseIntSuffix(rest, 0);
1667-
} else if (mem.chompPrefix(u8, arg, "--max-memory=")) |rest| {
1668-
linker_max_memory = parseIntSuffix(rest, 0);
1665+
} else if (prefixedIntArg(arg, "--initial-memory=")) |int| {
1666+
linker_initial_memory = int;
1667+
} else if (prefixedIntArg(arg, "--max-memory=")) |int| {
1668+
linker_max_memory = int;
16691669
} else if (mem.eql(u8, arg, "--shared-memory")) {
16701670
create_module.opts.shared_memory = true;
1671-
} else if (mem.chompPrefix(u8, arg, "--global-base=")) |rest| {
1672-
linker_global_base = parseIntSuffix(rest, 0);
1671+
} else if (prefixedIntArg(arg, "--global-base=")) |int| {
1672+
linker_global_base = int;
16731673
} else if (mem.chompPrefix(u8, arg, "--export=")) |rest| {
16741674
try linker_export_symbol_names.append(arena, rest);
16751675
} else if (mem.eql(u8, arg, "-Bsymbolic")) {
@@ -2555,10 +2555,10 @@ fn buildOutputType(
25552555
linker_z_relro = false;
25562556
} else if (mem.chompPrefix(u8, z_arg, "stack-size=")) |rest| {
25572557
stack_size = parseStackSize(rest);
2558-
} else if (mem.chompPrefix(u8, z_arg, "common-page-size=")) |rest| {
2559-
linker_z_common_page_size = parseIntSuffix(rest, 0);
2560-
} else if (mem.chompPrefix(u8, z_arg, "max-page-size=")) |rest| {
2561-
linker_z_max_page_size = parseIntSuffix(rest, 0);
2558+
} else if (prefixedIntArg(z_arg, "common-page-size=")) |int| {
2559+
linker_z_common_page_size = int;
2560+
} else if (prefixedIntArg(z_arg, "max-page-size=")) |int| {
2561+
linker_z_max_page_size = int;
25622562
} else {
25632563
fatal("unsupported linker extension flag: -z {s}", .{z_arg});
25642564
}
@@ -6617,10 +6617,9 @@ fn eatIntPrefix(arg: []const u8, base: u8) []const u8 {
66176617
return arg;
66186618
}
66196619

6620-
fn parseIntSuffix(arg: []const u8, prefix_len: usize) u64 {
6621-
return std.fmt.parseUnsigned(u64, arg[prefix_len..], 0) catch |err| {
6622-
fatal("unable to parse '{s}': {s}", .{ arg, @errorName(err) });
6623-
};
6620+
fn prefixedIntArg(arg: []const u8, prefix: []const u8) ?u64 {
6621+
const number = mem.chompPrefix(u8, arg, prefix) orelse return null;
6622+
return std.fmt.parseUnsigned(u64, number, 0) catch |err| fatal("unable to parse '{s}': {t}", .{ arg, err });
66246623
}
66256624

66266625
fn warnAboutForeignBinaries(

0 commit comments

Comments
 (0)