Fix #2993 - use getrandom on freebsd
parent
8aa87ec441
commit
7b8c96612f
|
@ -6,3 +6,4 @@ pub const _errno = __error;
|
|||
|
||||
pub extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) usize;
|
||||
pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
|
||||
pub extern "c" fn getrandom(buf_ptr: [*]u8, buf_len: usize, flags: c_uint) c_int;
|
||||
|
|
13
std/os.zig
13
std/os.zig
|
@ -120,6 +120,19 @@ pub fn getrandom(buf: []u8) GetRandomError!void {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (freebsd.is_the_target) {
|
||||
while (true) {
|
||||
const err = std.c.getErrno(std.c.getrandom(buf.ptr, buf.len, 0));
|
||||
|
||||
switch (err) {
|
||||
0 => return,
|
||||
EINVAL => unreachable,
|
||||
EFAULT => unreachable,
|
||||
EINTR => continue,
|
||||
else => return unexpectedErrno(err),
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wasi.is_the_target) {
|
||||
switch (wasi.random_get(buf.ptr, buf.len)) {
|
||||
0 => return,
|
||||
|
|
Loading…
Reference in New Issue