Detect and use available random number generator (bug 8308)

Prefer random over lrand48 over rand
This commit is contained in:
Keith Packard 2006-09-17 14:20:18 -07:00
parent 706a1b367a
commit cc104e6a91
2 changed files with 13 additions and 2 deletions

View File

@ -166,7 +166,7 @@ AC_TYPE_PID_T
# Checks for library functions. # Checks for library functions.
AC_FUNC_VPRINTF AC_FUNC_VPRINTF
AC_FUNC_MMAP AC_FUNC_MMAP
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand_r]) AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48])
# #
# Checks for iconv # Checks for iconv

View File

@ -213,6 +213,17 @@ struct _FcCacheSkip {
static FcCacheSkip *fcCacheChains[FC_CACHE_MAX_LEVEL]; static FcCacheSkip *fcCacheChains[FC_CACHE_MAX_LEVEL];
static int fcCacheMaxLevel; static int fcCacheMaxLevel;
#if HAVE_RANDOM
# define FcRandom() random()
#else
# if HAVE_LRAND48
# define FcRandom() lrand48()
# else
# if HAVE_RAND
# define FcRandom() rand()
# endif
# endif
#endif
/* /*
* Generate a random level number, distributed * Generate a random level number, distributed
* so that each level is 1/4 as likely as the one before * so that each level is 1/4 as likely as the one before
@ -223,7 +234,7 @@ static int
random_level (void) random_level (void)
{ {
/* tricky bit -- each bit is '1' 75% of the time */ /* tricky bit -- each bit is '1' 75% of the time */
long int bits = random () | random (); long int bits = FcRandom () | FcRandom ();
int level = 0; int level = 0;
while (++level < FC_CACHE_MAX_LEVEL) while (++level < FC_CACHE_MAX_LEVEL)