]> sjero.net Git - wget/commitdiff
[svn] Use rand instead of random.
authorhniksic <devnull@localhost>
Tue, 27 Nov 2001 19:49:28 +0000 (11:49 -0800)
committerhniksic <devnull@localhost>
Tue, 27 Nov 2001 19:49:28 +0000 (11:49 -0800)
Published in <sxsu1vgataq.fsf@florida.arsdigita.de>.

ChangeLog
configure.in
src/ChangeLog
src/cmpt.c
src/config.h.in
src/retr.c
src/sysdep.h

index 75d5adf6e42b2d15ccf4c3953ea14e449241c05c..cda41480d744f918aaaf40603b72facfd43609df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * configure.in: Don't check for random.
+
 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
 
        * po/hr.po: Updated.
index e853b7706083b87c54aecd28516b0926225a1a06..1cc995a2000e24440fb7b7aa18c34e6d9c478744 100644 (file)
@@ -175,7 +175,7 @@ AC_FUNC_MMAP
 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 random usleep)
+AC_CHECK_FUNCS(uname gethostname usleep)
 
 dnl
 dnl Check if we need to compile in getopt.c.
index 146e89ad0a46c311072ea4234d3c3bab4629299a..4d25068dd070784fa7ac34c060c755e7493c1953 100644 (file)
@@ -1,3 +1,10 @@
+2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * cmpt.c (random): Removed.
+
+       * retr.c (sleep_between_retrievals): Use the more portable rand()
+       instead of random().
+
 2001-11-27  Ian Abbott <abbotti@mev.co.uk>
 
        * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
index 542151315174cd1d5b8c036e6840fc8532457116..7a7add09bd607da57a3b908c5c73b3e1d8ea9d59 100644 (file)
@@ -1222,38 +1222,3 @@ usleep (unsigned long usec)
   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 */
index 62793c2c38e00fb2a3605a0743c2ddbd03368659..1364d27f7fd54efcabe5afbde8d4d3295e38fc40 100644 (file)
@@ -168,9 +168,6 @@ char *alloca ();
 /* 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
 
index e519306e59b9d0e1b4bec7c821c9f0459f9d1120..94fa97b2d76e1d87bbec6fd964a044a7cec40f6c 100644 (file)
@@ -627,6 +627,10 @@ sleep_between_retrievals (int count)
 {
   static int first_retrieval = 1;
 
+  if (first_retrieval && opt.random_wait)
+    /* --random-wait uses the RNG, so seed it. */
+    srand (time (NULL));
+
   if (!first_retrieval && (opt.wait || opt.waitretry))
     {
       if (opt.waitretry && count > 1)
@@ -646,10 +650,16 @@ sleep_between_retrievals (int count)
            sleep (opt.wait);
          else
            {
-             int waitsecs = random() % (opt.wait * 2 + 1);
-             DEBUGP(("sleep_between_retrievals: norm=%ld,random=%ld,sleep=%d\n",
-                     opt.wait, waitsecs - opt.wait, waitsecs));
-             sleep(waitsecs);
+             int waitmax = 2 * opt.wait;
+             /* This is equivalent to rand() % waitmax, but uses the
+                high-order bits for better randomness.  */
+             int waitsecs = (double)waitmax * rand () / (RAND_MAX + 1.0);
+
+             DEBUGP (("sleep_between_retrievals: norm=%ld,fuzz=%ld,sleep=%d\n",
+                      opt.wait, waitsecs - opt.wait, waitsecs));
+
+             if (waitsecs)
+               sleep (waitsecs);
            }
        }
     }
index d4430b2ba5134bea2b3c4428d84f04f57c9566c3..1c5deb1b8290c293e59b69a6b3da24b571ecd77e 100644 (file)
@@ -166,9 +166,6 @@ int vsnprintf ();
 #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