Use more portable random seed generation.

The new function md_random_seed() has replaced time() + getpid() and
similar methods.  Putting everything in mdport.c slightly reduces the
warnings and workarounds.
This commit is contained in:
John "Elwin" Edwards 2017-01-28 15:49:41 -05:00
parent c194ec3dc9
commit 62047972cc
29 changed files with 123 additions and 81 deletions

View file

@ -166,7 +166,7 @@ main(int argc, char *argv[], char *envp[])
seed = atoi(getenv("SEED"));
}
else {
seed = (int) time(&now) + getpid();
seed = md_random_seed();
}
if (wizard)
printf("Hello %s, welcome to dungeon #%d\n", whoami, seed);

View file

@ -1505,6 +1505,7 @@ int md_getuid(void);
long md_memused(void);
int md_normaluser(void);
int md_rand(int range);
unsigned int md_random_seed(void);
void md_setup(void);
int md_shellescape(void);
int md_srand(int seed);

View file

@ -3619,3 +3619,16 @@ md_unlink(char *file)
return(unlink(file));
#endif
}
unsigned int
md_random_seed(void)
{
unsigned int seed;
seed = (unsigned int) time((time_t *) NULL);
#ifdef _WIN32
seed += _getpid();
#else
seed += getpid();
#endif
return seed;
}