Use getentropy() instead of /dev/urandom on Emscripten

`/dev/urandom` is usually available on Emscripten, except when using
the special `NODERAWFS` filesystem backend, which replaces all normal
filesystem access with direct Node.js operations.

Since this filesystem backend directly access the filesystem on the
OS, it is not recommended to depend on `/dev/urandom`, especially
when trying to run the Wasm binary on OSes that are not Unix-based.

This can be considered a non-functional change, since Emscripten
implements `/dev/urandom` in the same way as `getentropy()` when not
linking with `-sNODERAWFS`.
This commit is contained in:
Kleis Auke Wolthuizen 2023-01-18 10:20:27 +01:00
parent 0058748944
commit e3036613d1

View File

@ -20,7 +20,8 @@ pub fn hashmap_random_keys() -> (u64, u64) {
not(target_os = "netbsd"),
not(target_os = "fuchsia"),
not(target_os = "redox"),
not(target_os = "vxworks")
not(target_os = "vxworks"),
not(target_os = "emscripten")
))]
mod imp {
use crate::fs::File;
@ -174,7 +175,7 @@ mod imp {
}
}
#[cfg(target_os = "openbsd")]
#[cfg(any(target_os = "openbsd", target_os = "emscripten"))]
mod imp {
use crate::sys::os::errno;