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:
parent
c194ec3dc9
commit
62047972cc
29 changed files with 123 additions and 81 deletions
|
|
@ -48,8 +48,6 @@ main(int argc, char *argv[], char *envp[])
|
|||
register struct object *obj;
|
||||
char alldone, wpt;
|
||||
char *getpass(), *xcrypt(), *strrchr();
|
||||
int lowtime;
|
||||
time_t now;
|
||||
char *homedir = roguehome();
|
||||
|
||||
md_init();
|
||||
|
|
@ -102,8 +100,6 @@ main(int argc, char *argv[], char *envp[])
|
|||
}
|
||||
}
|
||||
#endif
|
||||
time(&now);
|
||||
lowtime = (int) now;
|
||||
|
||||
#ifdef SAVEDIR
|
||||
if (argc >= 3 && !strcmp(argv[1], "-n")) {
|
||||
|
|
@ -169,7 +165,7 @@ main(int argc, char *argv[], char *envp[])
|
|||
/* START NEW GAME */
|
||||
|
||||
dnum = (wizard && getenv("SEED") != NULL ?
|
||||
atoi(getenv("SEED")) : lowtime + md_getpid());
|
||||
atoi(getenv("SEED")) : md_random_seed());
|
||||
|
||||
if(wizard)
|
||||
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@
|
|||
#include <limits.h>
|
||||
#include <sys/stat.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
|
||||
#if !defined(PATH_MAX) && defined(_MAX_PATH)
|
||||
#define PATH_MAX _MAX_PATH
|
||||
|
|
@ -431,16 +432,6 @@ md_getgid(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
pid_t
|
||||
md_getpid(void)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return( _getpid() );
|
||||
#else
|
||||
return( getpid() );
|
||||
#endif
|
||||
}
|
||||
|
||||
char *
|
||||
md_getusername(void)
|
||||
{
|
||||
|
|
@ -1564,3 +1555,16 @@ md_srandom(unsigned int seed)
|
|||
srand(seed);
|
||||
#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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,9 +45,6 @@ typedef unsigned int uid_t;
|
|||
#ifndef gid_t
|
||||
typedef unsigned int gid_t;
|
||||
#endif
|
||||
#ifndef pid_t
|
||||
typedef int pid_t;
|
||||
#endif
|
||||
|
||||
int md_chmod(const char *filename, int mode);
|
||||
char *md_crypt(const char *key, const char *salt);
|
||||
|
|
@ -59,7 +56,6 @@ char *md_getusername(void);
|
|||
uid_t md_getuid(void);
|
||||
gid_t md_getgid(void);
|
||||
char *md_getpass(char *prompt);
|
||||
pid_t md_getpid(void);
|
||||
char *md_getrealname(uid_t uid);
|
||||
void md_init(void);
|
||||
int md_killchar(void);
|
||||
|
|
@ -85,6 +81,7 @@ int md_issymlink(char *sp);
|
|||
long md_memused(void);
|
||||
int md_random(void);
|
||||
void md_srandom(unsigned int seed);
|
||||
unsigned int md_random_seed(void);
|
||||
char *xcrypt(const char *key, const char *setting);
|
||||
|
||||
#define reg register /* register abbr. */
|
||||
|
|
|
|||
|
|
@ -302,6 +302,6 @@ restore(char *file, char **envp)
|
|||
strcpy(file_name, file);
|
||||
setup();
|
||||
restscr(cw);
|
||||
md_srandom(md_getpid());
|
||||
md_srandom(md_random_seed());
|
||||
playit();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue