AC_DEFINE_UNQUOTED(MEM_ALIGN_SIZE, $mem_align, Required memory alignment)
dnl * find random source
-AC_MSG_CHECKING([for /dev/urandom])
-if test -c /dev/urandom || test -s /dev/urandom; then
+AC_MSG_CHECKING([for OpenBSD /dev/arandom])
+if test -c /dev/arandom; then
AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_DEV_URANDOM,, Define if you have /dev/urandom)
+ AC_DEFINE(DEV_URANDOM_PATH, "/dev/arandom", Path to /dev/urandom)
have_random_source=yes
else
AC_MSG_RESULT(no)
+ AC_MSG_CHECKING([for /dev/urandom])
+ if test -c /dev/urandom || test -s /dev/urandom; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(DEV_URANDOM_PATH, "/dev/urandom", Path to /dev/urandom)
+ have_random_source=yes
+ else
+ AC_MSG_RESULT(no)
+ fi
+fi
+if test "$have_random_source" != "yes"; then
AC_CHECK_HEADER(openssl/rand.h, [
AC_DEFINE(HAVE_OPENSSL_RAND_H,, Define if you have openssl/rand.h)
LIBS="$LIBS -lcrypto"
#include <stdlib.h>
-#ifdef HAVE_DEV_URANDOM
-
-#define URANDOM_PATH "/dev/urandom"
+#ifdef DEV_URANDOM_PATH
#include "fd-close-on-exec.h"
#include <unistd.h>
ret = read(urandom_fd, (char *) buf + pos, size - pos);
if (unlikely(ret <= 0)) {
if (ret == 0)
- i_fatal("EOF when reading from "URANDOM_PATH);
+ i_fatal("EOF when reading from "DEV_URANDOM_PATH);
else if (errno != EINTR)
- i_fatal("read("URANDOM_PATH") failed: %m");
+ i_fatal("read("DEV_URANDOM_PATH") failed: %m");
} else {
pos += ret;
}
if (init_refcount++ > 0)
return;
- urandom_fd = open(URANDOM_PATH, O_RDONLY);
+ urandom_fd = open(DEV_URANDOM_PATH, O_RDONLY);
if (urandom_fd == -1) {
if (errno == ENOENT) {
- i_fatal(URANDOM_PATH" doesn't exist, "
+ i_fatal(DEV_URANDOM_PATH" doesn't exist, "
"currently we require it");
} else {
- i_fatal("Can't open "URANDOM_PATH": %m");
+ i_fatal("Can't open "DEV_URANDOM_PATH": %m");
}
}