Published in <sxs4rngh6t2.fsf@florida.arsdigita.de>.
+2001-11-27 Hrvoje Niksic <hniksic@arsdigita.com>
+
+ * configure.in: Check for random.
+
2001-11-26 Hrvoje Niksic <hniksic@arsdigita.com>
* configure.in: Check for usleep.
AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk)
AC_CHECK_FUNCS(gettimeofday mktime strptime)
AC_CHECK_FUNCS(strerror snprintf vsnprintf select signal symlink access isatty)
-AC_CHECK_FUNCS(uname gethostname usleep)
+AC_CHECK_FUNCS(uname gethostname random usleep)
dnl
dnl Check if we need to compile in getopt.c.
+2001-11-27 Hrvoje Niksic <hniksic@arsdigita.com>
+
+ * cmpt.c (random): New function, a simple-minded replacement for
+ random() on systems that don't have it.
+
2001-11-26 Hrvoje Niksic <hniksic@arsdigita.com>
* config.h.in: Put a HAVE_USLEEP stub.
return 0;
}
#endif /* not HAVE_USLEEP */
+
+
+#ifndef HAVE_RANDOM
+/* For the systems without random: a really simple congruential RNG,
+ only good enough for what Wget uses it for. Before you panic: this
+ is not used for any kind of cryptography. */
+
+static long random_seed;
+
+#define RANDOM_A 9301
+#define RANDOM_C 49297
+#define RANDOM_M 233280
+
+static int
+random_1 (void)
+{
+ if (!random_seed)
+ random_seed = time (NULL);
+ random_seed = (random_seed * RANDOM_A + RANDOM_C) % RANDOM_M;
+ return random_seed;
+}
+
+long
+random (void)
+{
+ /* Upper bits of random() are a bit more random. Compose random()
+ from higher bits of three call to random(). */
+ unsigned r1 = random_1 () >> 8;
+ unsigned r2 = random_1 () >> 4;
+ unsigned r3 = random_1 ();
+ long result = r1 ^ r2 ^ r3;
+
+ return result;
+}
+#endif /* not HAVE_RANDOM */
/* Define if you have the usleep function. */
#undef HAVE_USLEEP
+/* Define if you have the random function. */
+#undef HAVE_RANDOM
+
/* Define if you have the <string.h> header file. */
#undef HAVE_STRING_H
#ifndef HAVE_USLEEP
int usleep ();
#endif
+#ifndef HAVE_RANDOM
+long random ();
+#endif
/* SunOS brain damage -- for some reason, SunOS header files fail to
declare the functions below, which causes all kinds of problems