authorgravatar for me@gasinfinity.devGasInfinity <me@gasinfinity.dev> 2026-01-20 23:18:34+01:00
committergravatar for me@gasinfinity.devGasInfinity <me@gasinfinity.dev> 2026-01-21 00:06:42+01:00
log4f652fb4e36c7f2791bb4c7fb1909a897a662c3b
tree056163215715c5551f6463f8feb115d2d2dc3e71
parent9d3e9054a7a154730261d5fae96631cc04bdef93
signaturebadge-check Signed by SSH key SHA256:p3IHbr0lyK2ekfDC1Zi7dOEV/9T6lGghNawhl5sBnM4

feat(libzigc): use common implementations for `sys/utsname.h`

* and remove their musl/wasi implementation

7 files changed, 45 insertions(+), 41 deletions(-)

lib/c.zig+2
...@@ -25,6 +25,8 @@ comptime {...@@ -25,6 +25,8 @@ comptime {
25 _ = @import("c/strings.zig");25 _ = @import("c/strings.zig");
26 _ = @import("c/wchar.zig");26 _ = @import("c/wchar.zig");
2727
28 _ = @import("c/sys.zig");
29
28 if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) {30 if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) {
29 // Files specific to musl and wasi-libc.31 // Files specific to musl and wasi-libc.
30 }32 }
lib/c/sys.zig created+3
...@@ -0,0 +1,3 @@
1comptime {
2 _ = @import("sys/utsname.zig");
3}
lib/c/sys/utsname.zig created+40
...@@ -0,0 +1,40 @@
1const std = @import("std");
2const common = @import("../common.zig");
3const builtin = @import("builtin");
4
5comptime {
6 if (builtin.target.isMuslLibC()) {
7 @export(&unameLinux, .{ .name = "uname", .linkage = common.linkage, .visibility = common.visibility });
8 }
9
10 if (builtin.target.isWasiLibC()) {
11 @export(&unameWasi, .{ .name = "uname", .linkage = common.linkage, .visibility = common.visibility });
12 }
13}
14
15fn unameLinux(uts: *std.os.linux.utsname) callconv(.c) c_int {
16 const linux = std.os.linux;
17
18 return switch (linux.errno(linux.uname(uts))) {
19 .SUCCESS => 0,
20 else => |err| blk: {
21 std.c._errno().* = @intFromEnum(err);
22 break :blk -1;
23 },
24 };
25}
26
27fn unameWasi(uts: *std.c.utsname) callconv(.c) c_int {
28 // note the @bitCast's for NUL termination!
29 uts.sysname[0..5].* = @bitCast("wasi".*);
30 uts.nodename[0..7].* = @bitCast("(none)".*);
31 uts.release[0..6].* = @bitCast("0.0.0".*);
32 uts.version[0..6].* = @bitCast("0.0.0".*);
33 uts.machine[0..7].* = @bitCast(switch (builtin.target.cpu.arch) {
34 .wasm32 => "wasm32",
35 .wasm64 => "wasm64",
36 else => comptime unreachable,
37 }.*);
38 uts.domainname[0..7].* = @bitCast("(none)".*);
39 return 0;
40}
lib/libc/musl/src/misc/uname.c deleted-7
...@@ -1,7 +0,0 @@
1#include <sys/utsname.h>
2#include "syscall.h"
3
4int uname(struct utsname *uts)
5{
6 return syscall(SYS_uname, uts);
7}
lib/libc/wasi/libc-top-half/musl/src/misc/uname.c deleted-32
...@@ -1,32 +0,0 @@
1#include <sys/utsname.h>
2#ifdef __wasilibc_unmodified_upstream // Implement uname with placeholders
3#include "syscall.h"
4#else
5#include <string.h>
6#endif
7
8int uname(struct utsname *uts)
9{
10#ifdef __wasilibc_unmodified_upstream // Implement uname with placeholders
11 return syscall(SYS_uname, uts);
12#else
13 // Just fill in the fields with placeholder values.
14 strcpy(uts->sysname, "wasi");
15 strcpy(uts->nodename, "(none)");
16 strcpy(uts->release, "0.0.0");
17 strcpy(uts->version, "0.0.0");
18#if defined(__wasm32__)
19 strcpy(uts->machine, "wasm32");
20#elif defined(__wasm64__)
21 strcpy(uts->machine, "wasm64");
22#else
23 strcpy(uts->machine, "unknown");
24#endif
25#ifdef _GNU_SOURCE
26 strcpy(uts->domainname, "(none)");
27#else
28 strcpy(uts->__domainname, "(none)");
29#endif
30 return 0;
31#endif
32}
src/libs/musl.zig-1
...@@ -1156,7 +1156,6 @@ const src_files = [_][]const u8{...@@ -1156,7 +1156,6 @@ const src_files = [_][]const u8{
1156 "musl/src/misc/setrlimit.c",1156 "musl/src/misc/setrlimit.c",
1157 "musl/src/misc/syscall.c",1157 "musl/src/misc/syscall.c",
1158 "musl/src/misc/syslog.c",1158 "musl/src/misc/syslog.c",
1159 "musl/src/misc/uname.c",
1160 "musl/src/misc/wordexp.c",1159 "musl/src/misc/wordexp.c",
1161 "musl/src/mman/madvise.c",1160 "musl/src/mman/madvise.c",
1162 "musl/src/mman/mincore.c",1161 "musl/src/mman/mincore.c",
src/libs/wasi_libc.zig-1
...@@ -1054,7 +1054,6 @@ const libc_top_half_src_files = [_][]const u8{...@@ -1054,7 +1054,6 @@ const libc_top_half_src_files = [_][]const u8{
1054 "wasi/libc-top-half/musl/src/math/sinhf.c",1054 "wasi/libc-top-half/musl/src/math/sinhf.c",
1055 "wasi/libc-top-half/musl/src/misc/fmtmsg.c",1055 "wasi/libc-top-half/musl/src/misc/fmtmsg.c",
1056 "wasi/libc-top-half/musl/src/misc/nftw.c",1056 "wasi/libc-top-half/musl/src/misc/nftw.c",
1057 "wasi/libc-top-half/musl/src/misc/uname.c",
1058 "wasi/libc-top-half/musl/src/prng/random.c",1057 "wasi/libc-top-half/musl/src/prng/random.c",
1059 "wasi/libc-top-half/musl/src/regex/glob.c",1058 "wasi/libc-top-half/musl/src/regex/glob.c",
1060 "wasi/libc-top-half/musl/src/regex/regcomp.c",1059 "wasi/libc-top-half/musl/src/regex/regcomp.c",