mirror of
https://github.com/mirror/wget.git
synced 2024-12-29 14:30:48 +08:00
[svn] Check for random.
Published in <sxs4rngh6t2.fsf@florida.arsdigita.de>.
This commit is contained in:
parent
bae3162c03
commit
7175ea4a12
@ -1,3 +1,7 @@
|
||||
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.
|
||||
|
@ -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 usleep)
|
||||
AC_CHECK_FUNCS(uname gethostname random usleep)
|
||||
|
||||
dnl
|
||||
dnl Check if we need to compile in getopt.c.
|
||||
|
@ -1,3 +1,8 @@
|
||||
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.
|
||||
|
35
src/cmpt.c
35
src/cmpt.c
@ -1222,3 +1222,38 @@ 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 */
|
||||
|
@ -168,6 +168,9 @@ 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
|
||||
|
||||
|
@ -166,6 +166,9 @@ 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
|
||||
|
Loading…
Reference in New Issue
Block a user