commit ee3c7a9f39b397aa8a1153f5699d9ff39bd9b359 (tree)
parent 6384ac6601b4d0654022786edba0cb775255ebd6
Author: Alex Rønne Petersen <alex@alexrp.com>
Date: Mon, 1 Jun 2026 10:27:10 +0200
std.c: fix some symbol names under the msvc ABI
Diffstat:
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/lib/std/c.zig b/lib/std/c.zig
@@ -11134,14 +11134,23 @@ pub const ioctl = switch (native_os) {
pub extern "c" fn bzero(s: *anyopaque, n: usize) void;
-pub extern "c" fn swab(noalias from: *const anyopaque, noalias to: *anyopaque, n: isize) void;
+pub const swab = switch (builtin.abi) {
+ .msvc => private._swab,
+ else => private.swab,
+};
pub extern "c" fn strncmp(a: [*:0]const c_char, b: [*:0]const c_char, max: usize) c_int;
pub extern "c" fn strcasecmp(a: [*:0]const c_char, b: [*:0]const c_char) c_int;
pub extern "c" fn strncasecmp(a: [*:0]const c_char, b: [*:0]const c_char, max: usize) c_int;
-pub extern "c" fn strdup(s: [*:0]const c_char) ?[*:0]c_char;
+pub const strdup = switch (builtin.abi) {
+ .msvc => private._strdup,
+ else => private.strdup,
+};
pub extern "c" fn strndup(s: [*:0]const c_char, n: usize) ?[*:0]c_char;
-pub extern "c" fn wcsdup(s: [*:0]const wchar_t) ?[*:0]wchar_t;
+pub const wcsdup = switch (builtin.abi) {
+ .msvc => private._wcsdup,
+ else => private.wcsdup,
+};
pub extern "c" fn ffs(i: c_int) c_int;
pub extern "c" fn ffsl(i: c_long) c_long;
@@ -11555,6 +11564,14 @@ pub const setkeymap = serenity.setkeymap;
/// External definitions shared by two or more operating systems.
const private = struct {
+ pub extern "c" fn strdup(s: [*:0]const c_char) ?[*:0]c_char;
+ pub extern "c" fn _strdup(s: [*:0]const c_char) ?[*:0]c_char;
+ pub extern "c" fn wcsdup(s: [*:0]const wchar_t) ?[*:0]wchar_t;
+ pub extern "c" fn _wcsdup(s: [*:0]const wchar_t) ?[*:0]wchar_t;
+
+ pub extern "c" fn swab(noalias from: *const anyopaque, noalias to: *anyopaque, n: isize) void;
+ pub extern "c" fn _swab(noalias from: *const anyopaque, noalias to: *anyopaque, n: isize) void;
+
extern "c" fn close(fd: fd_t) c_int;
extern "c" fn clock_getres(clk_id: clockid_t, tp: *timespec) c_int;
extern "c" fn clock_gettime(clk_id: clockid_t, tp: *timespec) c_int;