diff --git a/lib/std/crypto/tlcsprng.zig b/lib/std/crypto/tlcsprng.zig index e6c6b56f133ee18df7db72d140807f27152d9e67..cdb3494fc6cf7395b64a8dfdcbeb3dbcfb4f6b52 100644 --- a/lib/std/crypto/tlcsprng.zig +++ b/lib/std/crypto/tlcsprng.zig @@ -35,7 +35,7 @@ const os_has_fork = switch (builtin.os.tag) { }; const os_has_arc4random = builtin.link_libc and @hasDecl(std.c, "arc4random_buf"); const want_fork_safety = os_has_fork and !os_has_arc4random and - (std.meta.globalOption("crypto_fork_safety", bool) orelse true); + std.options.crypto_fork_safety; const maybe_have_wipe_on_fork = builtin.os.isAtLeast(.linux, .{ .major = 4, .minor = 14, diff --git a/lib/std/meta.zig b/lib/std/meta.zig index f77ed6d3445b85537af1d42a561b90062c0e72b7..922324c8c33c4c2841e86911e8d4057773cc1560 100644 --- a/lib/std/meta.zig +++ b/lib/std/meta.zig @@ -1099,13 +1099,6 @@ test "ArgsTuple forwarding" { } } -/// TODO: https://github.com/ziglang/zig/issues/425 -pub fn globalOption(comptime name: []const u8, comptime T: type) ?T { - if (!@hasDecl(root, name)) - return null; - return @as(T, @field(root, name)); -} - /// Returns whether `error_union` contains an error. pub fn isError(error_union: anytype) bool { return if (error_union) |_| false else |_| true; diff --git a/lib/std/std.zig b/lib/std/std.zig index 66e30c4b4ee162fac562348d34f55ee72a40d30b..4500a281b74f355204429c2f61efb262ef44dec4 100644 --- a/lib/std/std.zig +++ b/lib/std/std.zig @@ -264,6 +264,11 @@ pub const options = struct { else false; + pub const crypto_fork_safety: bool = if (@hasDecl(options_override, "crypto_fork_safety")) + options_override.crypto_fork_safety + else + true; + /// By default Zig disables SIGPIPE by setting a "no-op" handler for it. Set this option /// to `true` to prevent that. ///