authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-11 17:42:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-11 17:42:13-07:00
log6ab5bebed1d0808ad8153097332519088d5af95a
treec379dc481b9d8cce57e008f2931a20992b9da2d0
parent52bc1442d6e48438a1f8fb155a4174e41d02090f

stage2: proper file extension stripping

Previously it used mem.split on "." and took the first iterated item. Now it uses fs.path.extension and strips off that number of bytes. Closes #7404

3 files changed, 7 insertions(+), 7 deletions(-)

src/Compilation.zig+2-2
......@@ -1762,7 +1762,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_comp_progress_node: *
17621762 const o_basename_noext = if (direct_o)
17631763 comp.bin_file.options.root_name
17641764 else
1765 mem.split(c_source_basename, ".").next().?;
1765 c_source_basename[0 .. c_source_basename.len - std.fs.path.extension(c_source_basename).len];
17661766 const o_basename = try std.fmt.allocPrint(arena, "{s}{s}", .{ o_basename_noext, comp.getTarget().oFileExt() });
17671767
17681768 const digest = if (!comp.disable_c_depfile and try man.hit()) man.final() else blk: {
......@@ -2731,7 +2731,7 @@ fn buildOutputFromZig(
27312731 },
27322732 .root_src_path = src_basename,
27332733 };
2734 const root_name = mem.split(src_basename, ".").next().?;
2734 const root_name = src_basename[0 .. src_basename.len - std.fs.path.extension(src_basename).len];
27352735 const target = comp.getTarget();
27362736 const fixed_output_mode = if (target.cpu.arch.isWasm()) .Obj else output_mode;
27372737 const bin_basename = try std.zig.binNameAlloc(comp.gpa, .{
src/main.zig+4-4
......@@ -1339,16 +1339,16 @@ fn buildOutputType(
13391339 break :blk "test";
13401340 } else if (root_src_file) |file| {
13411341 const basename = fs.path.basename(file);
1342 break :blk mem.split(basename, ".").next().?;
1342 break :blk basename[0 .. basename.len - fs.path.extension(basename).len];
13431343 } else if (c_source_files.items.len >= 1) {
13441344 const basename = fs.path.basename(c_source_files.items[0].src_path);
1345 break :blk mem.split(basename, ".").next().?;
1345 break :blk basename[0 .. basename.len - fs.path.extension(basename).len];
13461346 } else if (link_objects.items.len >= 1) {
13471347 const basename = fs.path.basename(link_objects.items[0]);
1348 break :blk mem.split(basename, ".").next().?;
1348 break :blk basename[0 .. basename.len - fs.path.extension(basename).len];
13491349 } else if (emit_bin == .yes) {
13501350 const basename = fs.path.basename(emit_bin.yes);
1351 break :blk mem.split(basename, ".").next().?;
1351 break :blk basename[0 .. basename.len - fs.path.extension(basename).len];
13521352 } else if (show_builtin) {
13531353 break :blk "builtin";
13541354 } else if (arg_mode == .run) {
src/musl.zig+1-1
......@@ -140,7 +140,7 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
140140
141141 const dirname = path.dirname(src_file).?;
142142 const basename = path.basename(src_file);
143 const noextbasename = mem.split(basename, ".").next().?;
143 const noextbasename = basename[0 .. basename.len - std.fs.path.extension(basename).len];
144144 const before_arch_dir = path.dirname(dirname).?;
145145 const dirbasename = path.basename(dirname);
146146