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
|
|
@ -44,9 +44,6 @@
|
|||
#ifndef uid_t
|
||||
typedef unsigned int uid_t;
|
||||
#endif
|
||||
#ifndef pid_t
|
||||
typedef unsigned int pid_t;
|
||||
#endif
|
||||
#elif defined(__CYGWIN__)
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
#define HAVE_PWD_H 1
|
||||
|
|
@ -145,7 +142,6 @@ char *md_gethomedir(void);
|
|||
char *md_getusername(void);
|
||||
uid_t md_getuid(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);
|
||||
|
|
@ -168,5 +164,6 @@ void md_onsignal_autosave(void);
|
|||
void md_onsignal_exit(void);
|
||||
void md_onsignal_default(void);
|
||||
int md_issymlink(char *sp);
|
||||
unsigned int md_random_seed(void);
|
||||
extern char *xcrypt(const char *key, const char *setting);
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ int
|
|||
main(int argc, char **argv)
|
||||
{
|
||||
char *env;
|
||||
time_t lowtime;
|
||||
|
||||
md_init();
|
||||
|
||||
|
|
@ -77,14 +76,13 @@ main(int argc, char **argv)
|
|||
parse_opts(env);
|
||||
if (!use_savedir && (env == NULL || whoami[0] == '\0'))
|
||||
strucpy(whoami, md_getusername(), strlen(md_getusername()));
|
||||
lowtime = time(NULL);
|
||||
if (getenv("SEED") != NULL)
|
||||
{
|
||||
dnum = atoi(getenv("SEED"));
|
||||
noscore = 1;
|
||||
}
|
||||
else
|
||||
dnum = (unsigned int) lowtime + md_getpid();
|
||||
dnum = md_random_seed();
|
||||
seed = dnum;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@
|
|||
#include <limits.h>
|
||||
#include <sys/stat.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
#include "extern.h"
|
||||
|
||||
#if !defined(PATH_MAX) && defined(_MAX_PATH)
|
||||
|
|
@ -411,16 +412,6 @@ md_getuid(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
pid_t
|
||||
md_getpid(void)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return( _getpid() );
|
||||
#else
|
||||
return( getpid() );
|
||||
#endif
|
||||
}
|
||||
|
||||
char *
|
||||
md_getusername(void)
|
||||
{
|
||||
|
|
@ -1493,6 +1484,19 @@ md_tstpsignal(void)
|
|||
#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;
|
||||
}
|
||||
|
||||
#if defined(CHECKTIME)
|
||||
void
|
||||
md_start_checkout_timer(int time)
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ restore(const char *file)
|
|||
|
||||
strcpy(file_name, file);
|
||||
clearok(curscr, TRUE);
|
||||
srand(md_getpid());
|
||||
srand(md_random_seed());
|
||||
msg("file name: %s", file);
|
||||
playit();
|
||||
/*NOTREACHED*/
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ main(int ac, char *av[])
|
|||
scorefile = "rogue54.scr";
|
||||
else
|
||||
scorefile = av[1];
|
||||
seed = md_getpid();
|
||||
seed = md_random_seed();
|
||||
|
||||
if ((inf = fopen(scorefile, "r+")) < 0) {
|
||||
perror(scorefile);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue