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
|
|
@ -49,8 +49,6 @@ int
|
||||||
main(int argc, char *argv[], char *envp[])
|
main(int argc, char *argv[], char *envp[])
|
||||||
{
|
{
|
||||||
register char *env;
|
register char *env;
|
||||||
int lowtime;
|
|
||||||
time_t now;
|
|
||||||
char *roguedir;
|
char *roguedir;
|
||||||
|
|
||||||
roguedir = md_getroguedir();
|
roguedir = md_getroguedir();
|
||||||
|
|
@ -100,7 +98,7 @@ main(int argc, char *argv[], char *envp[])
|
||||||
strucpy(whoami, md_getusername(), strlen(md_getusername()));
|
strucpy(whoami, md_getusername(), strlen(md_getusername()));
|
||||||
|
|
||||||
if (env == NULL || fruit[0] == '\0') {
|
if (env == NULL || fruit[0] == '\0') {
|
||||||
md_srand((long)(getpid()+time(0)));
|
md_srand(md_random_seed());
|
||||||
strcpy(fruit, funfruit[rnd(NFRUIT)]);
|
strcpy(fruit, funfruit[rnd(NFRUIT)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,10 +175,9 @@ main(int argc, char *argv[], char *envp[])
|
||||||
else if (argc == 2)
|
else if (argc == 2)
|
||||||
if (!restore(argv[1], envp)) /* Note: restore will never return */
|
if (!restore(argv[1], envp)) /* Note: restore will never return */
|
||||||
exit(1);
|
exit(1);
|
||||||
lowtime = (int) time(&now);
|
|
||||||
dnum = (wizard && getenv("SEED") != NULL ?
|
dnum = (wizard && getenv("SEED") != NULL ?
|
||||||
atoi(getenv("SEED")) :
|
atoi(getenv("SEED")) :
|
||||||
lowtime + getpid());
|
md_random_seed());
|
||||||
if (wizard)
|
if (wizard)
|
||||||
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#define MOD_MOVE(c) (toupper(c) )
|
#define MOD_MOVE(c) (toupper(c) )
|
||||||
|
|
||||||
|
|
@ -1232,3 +1233,16 @@ md_readchar(WINDOW *win)
|
||||||
|
|
||||||
return(ch & 0x7F);
|
return(ch & 0x7F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1198,6 +1198,7 @@ extern int md_srand(int seed);
|
||||||
extern int md_rand(void);
|
extern int md_rand(void);
|
||||||
extern int md_erasechar(void);
|
extern int md_erasechar(void);
|
||||||
extern int md_killchar(void);
|
extern int md_killchar(void);
|
||||||
|
extern unsigned int md_random_seed(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now all the global variables
|
* Now all the global variables
|
||||||
|
|
|
||||||
|
|
@ -255,7 +255,7 @@ restore(char *file, char **envp)
|
||||||
setup();
|
setup();
|
||||||
clearok(curscr, TRUE);
|
clearok(curscr, TRUE);
|
||||||
touchwin(cw);
|
touchwin(cw);
|
||||||
srand(getpid());
|
srand(md_random_seed());
|
||||||
playit();
|
playit();
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,6 @@ int
|
||||||
main(int argc, char *argv[], char *envp[])
|
main(int argc, char *argv[], char *envp[])
|
||||||
{
|
{
|
||||||
register char *env;
|
register char *env;
|
||||||
int lowtime;
|
|
||||||
time_t now;
|
|
||||||
#ifdef PC7300
|
#ifdef PC7300
|
||||||
int hardwindow; /* Do we have a hardware window? */
|
int hardwindow; /* Do we have a hardware window? */
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -179,10 +177,9 @@ main(int argc, char *argv[], char *envp[])
|
||||||
if (argc == 2)
|
if (argc == 2)
|
||||||
if (!restore(argv[1], envp)) /* Note: restore will never return */
|
if (!restore(argv[1], envp)) /* Note: restore will never return */
|
||||||
exit(1);
|
exit(1);
|
||||||
lowtime = (int) time(&now);
|
|
||||||
dnum = (wizard && getenv("SEED") != NULL ?
|
dnum = (wizard && getenv("SEED") != NULL ?
|
||||||
atoi(getenv("SEED")) :
|
atoi(getenv("SEED")) :
|
||||||
lowtime + getpid());
|
md_random_seed());
|
||||||
if (wizard)
|
if (wizard)
|
||||||
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,7 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#define MOD_MOVE(c) (toupper(c) )
|
#define MOD_MOVE(c) (toupper(c) )
|
||||||
|
|
||||||
|
|
@ -1214,3 +1215,16 @@ md_readchar(WINDOW *win)
|
||||||
|
|
||||||
return(ch & 0x7F);
|
return(ch & 0x7F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1418,6 +1418,7 @@ int md_killchar(void);
|
||||||
long md_memused(void);
|
long md_memused(void);
|
||||||
int md_normaluser(void);
|
int md_normaluser(void);
|
||||||
int md_rand(void);
|
int md_rand(void);
|
||||||
|
unsigned int md_random_seed(void);
|
||||||
void md_reopen_score(void);
|
void md_reopen_score(void);
|
||||||
int md_readchar(WINDOW *win);
|
int md_readchar(WINDOW *win);
|
||||||
int md_shellescape(void);
|
int md_shellescape(void);
|
||||||
|
|
|
||||||
|
|
@ -254,7 +254,7 @@ restore(char *file, char *envp[])
|
||||||
setup();
|
setup();
|
||||||
clearok(curscr, TRUE);
|
clearok(curscr, TRUE);
|
||||||
touchwin(cw);
|
touchwin(cw);
|
||||||
srand(getpid());
|
srand(md_random_seed());
|
||||||
playit();
|
playit();
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
return(0);
|
return(0);
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,6 @@ main(int argc, char *argv[], char *envp[])
|
||||||
char *env;
|
char *env;
|
||||||
struct linked_list *item;
|
struct linked_list *item;
|
||||||
struct object *obj;
|
struct object *obj;
|
||||||
int lowtime;
|
|
||||||
time_t now;
|
|
||||||
|
|
||||||
md_init(MD_STRIP_CTRL_KEYPAD);
|
md_init(MD_STRIP_CTRL_KEYPAD);
|
||||||
|
|
||||||
|
|
@ -130,9 +128,6 @@ main(int argc, char *argv[], char *envp[])
|
||||||
if (!use_savedir)
|
if (!use_savedir)
|
||||||
md_normaluser();
|
md_normaluser();
|
||||||
|
|
||||||
time(&now);
|
|
||||||
lowtime = (int) now;
|
|
||||||
|
|
||||||
env = getenv("SEED");
|
env = getenv("SEED");
|
||||||
|
|
||||||
if (env)
|
if (env)
|
||||||
|
|
@ -146,7 +141,7 @@ main(int argc, char *argv[], char *envp[])
|
||||||
dnum = seed;
|
dnum = seed;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dnum = lowtime + md_getpid();
|
dnum = md_random_seed();
|
||||||
|
|
||||||
if (wizard || env)
|
if (wizard || env)
|
||||||
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,7 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#define NOOP(x) (x += 0)
|
#define NOOP(x) (x += 0)
|
||||||
|
|
||||||
|
|
@ -415,16 +416,6 @@ md_getuid(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t
|
|
||||||
md_getpid(void)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
return( _getpid() );
|
|
||||||
#else
|
|
||||||
return( getpid() );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
md_getusername(void)
|
md_getusername(void)
|
||||||
{
|
{
|
||||||
|
|
@ -1612,3 +1603,16 @@ md_unlockfile(FILE *fp)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,9 +65,6 @@
|
||||||
#ifndef uid_t
|
#ifndef uid_t
|
||||||
typedef unsigned int uid_t;
|
typedef unsigned int uid_t;
|
||||||
#endif
|
#endif
|
||||||
#ifndef pid_t
|
|
||||||
typedef unsigned int pid_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#elif defined(__CYGWIN__)
|
#elif defined(__CYGWIN__)
|
||||||
#define HAVE_SYS_TYPES_H 1
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
@ -163,7 +160,6 @@ char * md_gethomedir(void);
|
||||||
char * md_getusername(void);
|
char * md_getusername(void);
|
||||||
uid_t md_getuid(void);
|
uid_t md_getuid(void);
|
||||||
char * md_getpass(char *prompt);
|
char * md_getpass(char *prompt);
|
||||||
pid_t md_getpid(void);
|
|
||||||
char * md_getrealname(uid_t uid);
|
char * md_getrealname(uid_t uid);
|
||||||
void md_init(int options);
|
void md_init(int options);
|
||||||
int md_killchar(void);
|
int md_killchar(void);
|
||||||
|
|
@ -193,3 +189,4 @@ long md_memused(void);
|
||||||
int md_ucount(void);
|
int md_ucount(void);
|
||||||
int md_unlockfile(FILE *fp);
|
int md_unlockfile(FILE *fp);
|
||||||
int md_lockfile(FILE *fp);
|
int md_lockfile(FILE *fp);
|
||||||
|
unsigned int md_random_seed(void);
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,7 @@ restore(char *file, char **envp)
|
||||||
setup();
|
setup();
|
||||||
clearok(curscr, TRUE);
|
clearok(curscr, TRUE);
|
||||||
touchwin(cw);
|
touchwin(cw);
|
||||||
srand(md_getpid());
|
srand(md_random_seed());
|
||||||
status();
|
status();
|
||||||
playit();
|
playit();
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
|
|
|
||||||
|
|
@ -93,3 +93,4 @@ extern int md_shellescape(void);
|
||||||
extern void md_sleep(int s);
|
extern void md_sleep(int s);
|
||||||
extern int md_unlink(char *file);
|
extern int md_unlink(char *file);
|
||||||
extern int md_unlink_open_file(char *file, int inf);
|
extern int md_unlink_open_file(char *file, int inf);
|
||||||
|
extern unsigned int md_random_seed(void);
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ int
|
||||||
main(int argc, char *argv[], char *envp[])
|
main(int argc, char *argv[], char *envp[])
|
||||||
{
|
{
|
||||||
register char *env;
|
register char *env;
|
||||||
int lowtime;
|
|
||||||
|
|
||||||
md_init();
|
md_init();
|
||||||
|
|
||||||
|
|
@ -138,8 +137,6 @@ main(int argc, char *argv[], char *envp[])
|
||||||
if (!use_savedir)
|
if (!use_savedir)
|
||||||
md_normaluser();
|
md_normaluser();
|
||||||
|
|
||||||
lowtime = (int) time(NULL);
|
|
||||||
|
|
||||||
#ifdef WIZARD
|
#ifdef WIZARD
|
||||||
noscore = wizard;
|
noscore = wizard;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -149,7 +146,7 @@ main(int argc, char *argv[], char *envp[])
|
||||||
noscore = TRUE;
|
noscore = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dnum = lowtime + getpid();
|
dnum = md_random_seed();
|
||||||
#ifdef WIZARD
|
#ifdef WIZARD
|
||||||
if (wizard)
|
if (wizard)
|
||||||
printf("Hello %s, welcome to dungeon #%d", whoami, dnum);
|
printf("Hello %s, welcome to dungeon #%d", whoami, dnum);
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ char *strdup(const char *s);
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#define MOD_MOVE(c) (toupper(c) )
|
#define MOD_MOVE(c) (toupper(c) )
|
||||||
|
|
||||||
|
|
@ -1313,3 +1314,16 @@ md_readchar(WINDOW *win)
|
||||||
|
|
||||||
return(ch & 0x7F);
|
return(ch & 0x7F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ new_level(void)
|
||||||
if (i++ > 100)
|
if (i++ > 100)
|
||||||
{
|
{
|
||||||
i = 0;
|
i = 0;
|
||||||
srand(getpid() + (int) time((time_t *) NULL));
|
srand(md_random_seed());
|
||||||
}
|
}
|
||||||
} until (_level[index] == FLOOR);
|
} until (_level[index] == FLOOR);
|
||||||
_level[index] = STAIRS;
|
_level[index] = STAIRS;
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ restore(char *file, char **envp)
|
||||||
setup();
|
setup();
|
||||||
clearok(curscr, TRUE);
|
clearok(curscr, TRUE);
|
||||||
touchwin(stdscr);
|
touchwin(stdscr);
|
||||||
srand(getpid());
|
srand(md_random_seed());
|
||||||
msg("file name: %s", file);
|
msg("file name: %s", file);
|
||||||
status();
|
status();
|
||||||
playit();
|
playit();
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,6 @@
|
||||||
#ifndef uid_t
|
#ifndef uid_t
|
||||||
typedef unsigned int uid_t;
|
typedef unsigned int uid_t;
|
||||||
#endif
|
#endif
|
||||||
#ifndef pid_t
|
|
||||||
typedef unsigned int pid_t;
|
|
||||||
#endif
|
|
||||||
#elif defined(__CYGWIN__)
|
#elif defined(__CYGWIN__)
|
||||||
#define HAVE_SYS_TYPES_H 1
|
#define HAVE_SYS_TYPES_H 1
|
||||||
#define HAVE_PWD_H 1
|
#define HAVE_PWD_H 1
|
||||||
|
|
@ -145,7 +142,6 @@ char *md_gethomedir(void);
|
||||||
char *md_getusername(void);
|
char *md_getusername(void);
|
||||||
uid_t md_getuid(void);
|
uid_t md_getuid(void);
|
||||||
char *md_getpass(char *prompt);
|
char *md_getpass(char *prompt);
|
||||||
pid_t md_getpid(void);
|
|
||||||
char *md_getrealname(uid_t uid);
|
char *md_getrealname(uid_t uid);
|
||||||
void md_init(void);
|
void md_init(void);
|
||||||
int md_killchar(void);
|
int md_killchar(void);
|
||||||
|
|
@ -168,5 +164,6 @@ void md_onsignal_autosave(void);
|
||||||
void md_onsignal_exit(void);
|
void md_onsignal_exit(void);
|
||||||
void md_onsignal_default(void);
|
void md_onsignal_default(void);
|
||||||
int md_issymlink(char *sp);
|
int md_issymlink(char *sp);
|
||||||
|
unsigned int md_random_seed(void);
|
||||||
extern char *xcrypt(const char *key, const char *setting);
|
extern char *xcrypt(const char *key, const char *setting);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char *env;
|
char *env;
|
||||||
time_t lowtime;
|
|
||||||
|
|
||||||
md_init();
|
md_init();
|
||||||
|
|
||||||
|
|
@ -77,14 +76,13 @@ main(int argc, char **argv)
|
||||||
parse_opts(env);
|
parse_opts(env);
|
||||||
if (!use_savedir && (env == NULL || whoami[0] == '\0'))
|
if (!use_savedir && (env == NULL || whoami[0] == '\0'))
|
||||||
strucpy(whoami, md_getusername(), strlen(md_getusername()));
|
strucpy(whoami, md_getusername(), strlen(md_getusername()));
|
||||||
lowtime = time(NULL);
|
|
||||||
if (getenv("SEED") != NULL)
|
if (getenv("SEED") != NULL)
|
||||||
{
|
{
|
||||||
dnum = atoi(getenv("SEED"));
|
dnum = atoi(getenv("SEED"));
|
||||||
noscore = 1;
|
noscore = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
dnum = (unsigned int) lowtime + md_getpid();
|
dnum = md_random_seed();
|
||||||
seed = dnum;
|
seed = dnum;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,7 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
#include "extern.h"
|
#include "extern.h"
|
||||||
|
|
||||||
#if !defined(PATH_MAX) && defined(_MAX_PATH)
|
#if !defined(PATH_MAX) && defined(_MAX_PATH)
|
||||||
|
|
@ -411,16 +412,6 @@ md_getuid(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t
|
|
||||||
md_getpid(void)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
return( _getpid() );
|
|
||||||
#else
|
|
||||||
return( getpid() );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
md_getusername(void)
|
md_getusername(void)
|
||||||
{
|
{
|
||||||
|
|
@ -1493,6 +1484,19 @@ md_tstpsignal(void)
|
||||||
#endif
|
#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)
|
#if defined(CHECKTIME)
|
||||||
void
|
void
|
||||||
md_start_checkout_timer(int time)
|
md_start_checkout_timer(int time)
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,7 @@ restore(const char *file)
|
||||||
|
|
||||||
strcpy(file_name, file);
|
strcpy(file_name, file);
|
||||||
clearok(curscr, TRUE);
|
clearok(curscr, TRUE);
|
||||||
srand(md_getpid());
|
srand(md_random_seed());
|
||||||
msg("file name: %s", file);
|
msg("file name: %s", file);
|
||||||
playit();
|
playit();
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ main(int ac, char *av[])
|
||||||
scorefile = "rogue54.scr";
|
scorefile = "rogue54.scr";
|
||||||
else
|
else
|
||||||
scorefile = av[1];
|
scorefile = av[1];
|
||||||
seed = md_getpid();
|
seed = md_random_seed();
|
||||||
|
|
||||||
if ((inf = fopen(scorefile, "r+")) < 0) {
|
if ((inf = fopen(scorefile, "r+")) < 0) {
|
||||||
perror(scorefile);
|
perror(scorefile);
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,6 @@ main(int argc, char *argv[], char *envp[])
|
||||||
register struct object *obj;
|
register struct object *obj;
|
||||||
char alldone, wpt;
|
char alldone, wpt;
|
||||||
char *getpass(), *xcrypt(), *strrchr();
|
char *getpass(), *xcrypt(), *strrchr();
|
||||||
int lowtime;
|
|
||||||
time_t now;
|
|
||||||
char *homedir = roguehome();
|
char *homedir = roguehome();
|
||||||
|
|
||||||
md_init();
|
md_init();
|
||||||
|
|
@ -102,8 +100,6 @@ main(int argc, char *argv[], char *envp[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
time(&now);
|
|
||||||
lowtime = (int) now;
|
|
||||||
|
|
||||||
#ifdef SAVEDIR
|
#ifdef SAVEDIR
|
||||||
if (argc >= 3 && !strcmp(argv[1], "-n")) {
|
if (argc >= 3 && !strcmp(argv[1], "-n")) {
|
||||||
|
|
@ -169,7 +165,7 @@ main(int argc, char *argv[], char *envp[])
|
||||||
/* START NEW GAME */
|
/* START NEW GAME */
|
||||||
|
|
||||||
dnum = (wizard && getenv("SEED") != NULL ?
|
dnum = (wizard && getenv("SEED") != NULL ?
|
||||||
atoi(getenv("SEED")) : lowtime + md_getpid());
|
atoi(getenv("SEED")) : md_random_seed());
|
||||||
|
|
||||||
if(wizard)
|
if(wizard)
|
||||||
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum);
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#if !defined(PATH_MAX) && defined(_MAX_PATH)
|
#if !defined(PATH_MAX) && defined(_MAX_PATH)
|
||||||
#define PATH_MAX _MAX_PATH
|
#define PATH_MAX _MAX_PATH
|
||||||
|
|
@ -431,16 +432,6 @@ md_getgid(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
pid_t
|
|
||||||
md_getpid(void)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
return( _getpid() );
|
|
||||||
#else
|
|
||||||
return( getpid() );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
char *
|
||||||
md_getusername(void)
|
md_getusername(void)
|
||||||
{
|
{
|
||||||
|
|
@ -1564,3 +1555,16 @@ md_srandom(unsigned int seed)
|
||||||
srand(seed);
|
srand(seed);
|
||||||
#endif
|
#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
|
#ifndef gid_t
|
||||||
typedef unsigned int gid_t;
|
typedef unsigned int gid_t;
|
||||||
#endif
|
#endif
|
||||||
#ifndef pid_t
|
|
||||||
typedef int pid_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int md_chmod(const char *filename, int mode);
|
int md_chmod(const char *filename, int mode);
|
||||||
char *md_crypt(const char *key, const char *salt);
|
char *md_crypt(const char *key, const char *salt);
|
||||||
|
|
@ -59,7 +56,6 @@ char *md_getusername(void);
|
||||||
uid_t md_getuid(void);
|
uid_t md_getuid(void);
|
||||||
gid_t md_getgid(void);
|
gid_t md_getgid(void);
|
||||||
char *md_getpass(char *prompt);
|
char *md_getpass(char *prompt);
|
||||||
pid_t md_getpid(void);
|
|
||||||
char *md_getrealname(uid_t uid);
|
char *md_getrealname(uid_t uid);
|
||||||
void md_init(void);
|
void md_init(void);
|
||||||
int md_killchar(void);
|
int md_killchar(void);
|
||||||
|
|
@ -85,6 +81,7 @@ int md_issymlink(char *sp);
|
||||||
long md_memused(void);
|
long md_memused(void);
|
||||||
int md_random(void);
|
int md_random(void);
|
||||||
void md_srandom(unsigned int seed);
|
void md_srandom(unsigned int seed);
|
||||||
|
unsigned int md_random_seed(void);
|
||||||
char *xcrypt(const char *key, const char *setting);
|
char *xcrypt(const char *key, const char *setting);
|
||||||
|
|
||||||
#define reg register /* register abbr. */
|
#define reg register /* register abbr. */
|
||||||
|
|
|
||||||
|
|
@ -302,6 +302,6 @@ restore(char *file, char **envp)
|
||||||
strcpy(file_name, file);
|
strcpy(file_name, file);
|
||||||
setup();
|
setup();
|
||||||
restscr(cw);
|
restscr(cw);
|
||||||
md_srandom(md_getpid());
|
md_srandom(md_random_seed());
|
||||||
playit();
|
playit();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ main(int argc, char *argv[], char *envp[])
|
||||||
seed = atoi(getenv("SEED"));
|
seed = atoi(getenv("SEED"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
seed = (int) time(&now) + getpid();
|
seed = md_random_seed();
|
||||||
}
|
}
|
||||||
if (wizard)
|
if (wizard)
|
||||||
printf("Hello %s, welcome to dungeon #%d\n", whoami, seed);
|
printf("Hello %s, welcome to dungeon #%d\n", whoami, seed);
|
||||||
|
|
|
||||||
|
|
@ -1505,6 +1505,7 @@ int md_getuid(void);
|
||||||
long md_memused(void);
|
long md_memused(void);
|
||||||
int md_normaluser(void);
|
int md_normaluser(void);
|
||||||
int md_rand(int range);
|
int md_rand(int range);
|
||||||
|
unsigned int md_random_seed(void);
|
||||||
void md_setup(void);
|
void md_setup(void);
|
||||||
int md_shellescape(void);
|
int md_shellescape(void);
|
||||||
int md_srand(int seed);
|
int md_srand(int seed);
|
||||||
|
|
|
||||||
|
|
@ -3619,3 +3619,16 @@ md_unlink(char *file)
|
||||||
return(unlink(file));
|
return(unlink(file));
|
||||||
#endif
|
#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;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue