fd_set infd;
struct timeval tv = { 0, 0 };
#endif
+#ifdef HAVE_GETENTROPY
+ size_t nn;
+#endif
#if defined(HAVE_LINUX_RANDOM_H) && \
defined(GRND_NONBLOCK) && \
if (n == sizeof(buf)) goto win;
#endif
+#ifdef HAVE_GETENTROPY
+ /* --- OpenBSD-flavoured shinies --- */
+
+ while (n < sizeof(buf)) {
+ nn = sizeof(buf) - nn;
+ if (nn > 256) nn = 256;
+ if (getentropy(buf + n, nn)) break;
+ n += nn;
+ }
+ if (n == sizeof(buf)) goto win;
+#endif
+
#ifdef __linux__
/* --- Don't take from `/dev/urandom' if `/dev/random' would block --- */