zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 6ddb05d996ee23af585ad22c8cdb447d4550f2ea (tree)
parent b28992de7121802f3074d214d015d8bed66b624e
Author: Frank Denis <github@pureftpd.org>
Date:   Sun, 18 Oct 2020 16:28:11 +0200

Darwin has arc4random(), too

Diffstat:
Mlib/std/c/darwin.zig | 2++
Mlib/std/os.zig | 16++++++++--------
2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/lib/std/c/darwin.zig b/lib/std/c/darwin.zig @@ -171,3 +171,5 @@ pub const pthread_attr_t = extern struct { __sig: c_long, __opaque: [56]u8, }; + +pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void; diff --git a/lib/std/os.zig b/lib/std/os.zig @@ -164,17 +164,17 @@ pub fn getrandom(buffer: []u8) GetRandomError!void { } return; } - if (builtin.os.tag == .netbsd or builtin.os.tag == .openbsd) { - system.arc4random_buf(buffer.ptr, buffer.len); - return; - } - if (builtin.os.tag == .wasi) { - switch (wasi.random_get(buffer.ptr, buffer.len)) { + switch (builtin.os.tag) { + .netbsd, .openbsd, .macos, .ios, .tvos, .watchos => { + system.arc4random_buf(buffer.ptr, buffer.len); + return; + }, + .wasi => switch (wasi.random_get(buffer.ptr, buffer.len)) { 0 => return, else => |err| return unexpectedErrno(err), - } + }, + else => return getRandomBytesDevURandom(buffer), } - return getRandomBytesDevURandom(buffer); } fn getRandomBytesDevURandom(buf: []u8) !void {