AC_CHECK_FUNCS([strerror])
AC_FUNC_STRERROR_R
AC_CHECK_FUNCS([socket])
+AC_CHECK_FUNCS([srandomdev])
AC_CHECK_FUNCS([strlcat])
AC_CHECK_FUNCS([strlcpy])
cli_common.h \
cli_priv.h \
compat/asprintf.h \
+ compat/srandomdev.h \
compat/strlcat.h \
compat/strlcpy.h \
compat/vasprintf.h \
--- /dev/null
+/*
+ * $Id$
+ */
+
+#ifndef COMPAT_SRANDOMDEV_H_INCLUDED
+#define COMPAT_SRANDOMDEV_H_INCLUDED
+
+#ifndef HAVE_SRANDOMDEV
+void srandomdev(void);
+#endif
+
+#endif
libcompat_a_SOURCES = \
asprintf.c \
vasprintf.c \
+ srandomdev.c \
strlcat.c \
strlcpy.c
--- /dev/null
+/*
+ * $Id$
+ */
+
+#ifndef HAVE_SRANDOMDEV
+
+#include <sys/time.h>
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "compat/srandomdev.h"
+
+void
+srandomdev(void)
+{
+ struct timeval tv;
+ unsigned int seed;
+ int fd;
+
+ if ((fd = open("/dev/random", O_RDONLY)) >= 0) {
+ read(fd, &seed, sizeof seed);
+ close(fd);
+ } else {
+ gettimeofday(&tv, NULL);
+ /* NOTE: intentional use of uninitialized variable */
+ seed ^= (getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec;
+ }
+ srandom(seed);
+}
+#endif