diff --git a/arogue5/main.c b/arogue5/main.c index 7935eb7..883f05e 100644 --- a/arogue5/main.c +++ b/arogue5/main.c @@ -49,8 +49,6 @@ int main(int argc, char *argv[], char *envp[]) { register char *env; - int lowtime; - time_t now; char *roguedir; roguedir = md_getroguedir(); @@ -100,7 +98,7 @@ main(int argc, char *argv[], char *envp[]) strucpy(whoami, md_getusername(), strlen(md_getusername())); if (env == NULL || fruit[0] == '\0') { - md_srand((long)(getpid()+time(0))); + md_srand(md_random_seed()); strcpy(fruit, funfruit[rnd(NFRUIT)]); } @@ -177,10 +175,9 @@ main(int argc, char *argv[], char *envp[]) else if (argc == 2) if (!restore(argv[1], envp)) /* Note: restore will never return */ exit(1); - lowtime = (int) time(&now); dnum = (wizard && getenv("SEED") != NULL ? atoi(getenv("SEED")) : - lowtime + getpid()); + md_random_seed()); if (wizard) printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum); else diff --git a/arogue5/mdport.c b/arogue5/mdport.c index bee8097..9789001 100644 --- a/arogue5/mdport.c +++ b/arogue5/mdport.c @@ -78,6 +78,7 @@ #include #include #include +#include #define MOD_MOVE(c) (toupper(c) ) @@ -1232,3 +1233,16 @@ md_readchar(WINDOW *win) 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; +} diff --git a/arogue5/rogue.h b/arogue5/rogue.h index 38ae143..f0a5f53 100644 --- a/arogue5/rogue.h +++ b/arogue5/rogue.h @@ -1198,6 +1198,7 @@ extern int md_srand(int seed); extern int md_rand(void); extern int md_erasechar(void); extern int md_killchar(void); +extern unsigned int md_random_seed(void); /* * Now all the global variables diff --git a/arogue5/save.c b/arogue5/save.c index d85a127..fcd71a5 100644 --- a/arogue5/save.c +++ b/arogue5/save.c @@ -255,7 +255,7 @@ restore(char *file, char **envp) setup(); clearok(curscr, TRUE); touchwin(cw); - srand(getpid()); + srand(md_random_seed()); playit(); /*NOTREACHED*/ return(FALSE); diff --git a/arogue7/main.c b/arogue7/main.c index db650da..a97e2f3 100644 --- a/arogue7/main.c +++ b/arogue7/main.c @@ -47,8 +47,6 @@ int main(int argc, char *argv[], char *envp[]) { register char *env; - int lowtime; - time_t now; #ifdef PC7300 int hardwindow; /* Do we have a hardware window? */ #endif @@ -179,10 +177,9 @@ main(int argc, char *argv[], char *envp[]) if (argc == 2) if (!restore(argv[1], envp)) /* Note: restore will never return */ exit(1); - lowtime = (int) time(&now); dnum = (wizard && getenv("SEED") != NULL ? atoi(getenv("SEED")) : - lowtime + getpid()); + md_random_seed()); if (wizard) printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum); else diff --git a/arogue7/mdport.c b/arogue7/mdport.c index 67cf17e..9e879ca 100644 --- a/arogue7/mdport.c +++ b/arogue7/mdport.c @@ -71,6 +71,7 @@ #include #include #include +#include #define MOD_MOVE(c) (toupper(c) ) @@ -1214,3 +1215,16 @@ md_readchar(WINDOW *win) 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; +} diff --git a/arogue7/rogue.h b/arogue7/rogue.h index 311f181..5c90bda 100644 --- a/arogue7/rogue.h +++ b/arogue7/rogue.h @@ -1418,6 +1418,7 @@ int md_killchar(void); long md_memused(void); int md_normaluser(void); int md_rand(void); +unsigned int md_random_seed(void); void md_reopen_score(void); int md_readchar(WINDOW *win); int md_shellescape(void); diff --git a/arogue7/save.c b/arogue7/save.c index 17eddbf..b2fa1e7 100644 --- a/arogue7/save.c +++ b/arogue7/save.c @@ -254,7 +254,7 @@ restore(char *file, char *envp[]) setup(); clearok(curscr, TRUE); touchwin(cw); - srand(getpid()); + srand(md_random_seed()); playit(); /*NOTREACHED*/ return(0); diff --git a/rogue3/main.c b/rogue3/main.c index da50954..105b637 100644 --- a/rogue3/main.c +++ b/rogue3/main.c @@ -31,8 +31,6 @@ main(int argc, char *argv[], char *envp[]) char *env; struct linked_list *item; struct object *obj; - int lowtime; - time_t now; md_init(MD_STRIP_CTRL_KEYPAD); @@ -130,9 +128,6 @@ main(int argc, char *argv[], char *envp[]) if (!use_savedir) md_normaluser(); - time(&now); - lowtime = (int) now; - env = getenv("SEED"); if (env) @@ -146,7 +141,7 @@ main(int argc, char *argv[], char *envp[]) dnum = seed; } else - dnum = lowtime + md_getpid(); + dnum = md_random_seed(); if (wizard || env) printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum); diff --git a/rogue3/mdport.c b/rogue3/mdport.c index 955fa91..0a386b1 100644 --- a/rogue3/mdport.c +++ b/rogue3/mdport.c @@ -102,6 +102,7 @@ #include #include #include +#include #define NOOP(x) (x += 0) @@ -415,16 +416,6 @@ md_getuid(void) #endif } -pid_t -md_getpid(void) -{ -#ifdef _WIN32 - return( _getpid() ); -#else - return( getpid() ); -#endif -} - char * md_getusername(void) { @@ -1612,3 +1603,16 @@ md_unlockfile(FILE *fp) 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; +} diff --git a/rogue3/mdport.h b/rogue3/mdport.h index 4e93402..b398f62 100644 --- a/rogue3/mdport.h +++ b/rogue3/mdport.h @@ -65,9 +65,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 @@ -163,7 +160,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(int options); int md_killchar(void); @@ -190,6 +186,7 @@ int md_loadav(double *avg); void md_start_checkout_timer(int time); void md_stop_checkout_timer(void); long md_memused(void); -int md_ucount(void); -int md_unlockfile(FILE *fp); -int md_lockfile(FILE *fp); +int md_ucount(void); +int md_unlockfile(FILE *fp); +int md_lockfile(FILE *fp); +unsigned int md_random_seed(void); diff --git a/rogue3/save.c b/rogue3/save.c index 68566d1..68bf3c3 100644 --- a/rogue3/save.c +++ b/rogue3/save.c @@ -245,7 +245,7 @@ restore(char *file, char **envp) setup(); clearok(curscr, TRUE); touchwin(cw); - srand(md_getpid()); + srand(md_random_seed()); status(); playit(); /*NOTREACHED*/ diff --git a/rogue4/extern.h b/rogue4/extern.h index db38d5e..cd85785 100644 --- a/rogue4/extern.h +++ b/rogue4/extern.h @@ -93,3 +93,4 @@ extern int md_shellescape(void); extern void md_sleep(int s); extern int md_unlink(char *file); extern int md_unlink_open_file(char *file, int inf); +extern unsigned int md_random_seed(void); diff --git a/rogue4/main.c b/rogue4/main.c index d08bd9b..9c5ff61 100644 --- a/rogue4/main.c +++ b/rogue4/main.c @@ -29,7 +29,6 @@ int main(int argc, char *argv[], char *envp[]) { register char *env; - int lowtime; md_init(); @@ -138,8 +137,6 @@ main(int argc, char *argv[], char *envp[]) if (!use_savedir) md_normaluser(); - lowtime = (int) time(NULL); - #ifdef WIZARD noscore = wizard; #endif @@ -149,7 +146,7 @@ main(int argc, char *argv[], char *envp[]) noscore = TRUE; } else - dnum = lowtime + getpid(); + dnum = md_random_seed(); #ifdef WIZARD if (wizard) printf("Hello %s, welcome to dungeon #%d", whoami, dnum); diff --git a/rogue4/mdport.c b/rogue4/mdport.c index 412a288..8f163bf 100644 --- a/rogue4/mdport.c +++ b/rogue4/mdport.c @@ -82,6 +82,7 @@ char *strdup(const char *s); #include #include #include +#include #define MOD_MOVE(c) (toupper(c) ) @@ -1313,3 +1314,16 @@ md_readchar(WINDOW *win) 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; +} diff --git a/rogue4/new_level.c b/rogue4/new_level.c index 6bacf6d..e1834b7 100644 --- a/rogue4/new_level.c +++ b/rogue4/new_level.c @@ -73,7 +73,7 @@ new_level(void) if (i++ > 100) { i = 0; - srand(getpid() + (int) time((time_t *) NULL)); + srand(md_random_seed()); } } until (_level[index] == FLOOR); _level[index] = STAIRS; diff --git a/rogue4/save.c b/rogue4/save.c index b4b2379..a1ba71d 100644 --- a/rogue4/save.c +++ b/rogue4/save.c @@ -317,7 +317,7 @@ restore(char *file, char **envp) setup(); clearok(curscr, TRUE); touchwin(stdscr); - srand(getpid()); + srand(md_random_seed()); msg("file name: %s", file); status(); playit(); diff --git a/rogue5/extern.h b/rogue5/extern.h index 01bbee9..97af2a7 100644 --- a/rogue5/extern.h +++ b/rogue5/extern.h @@ -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); diff --git a/rogue5/main.c b/rogue5/main.c index 186b8f6..b8aa38d 100644 --- a/rogue5/main.c +++ b/rogue5/main.c @@ -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; /* diff --git a/rogue5/mdport.c b/rogue5/mdport.c index 035dc28..cdf9b12 100644 --- a/rogue5/mdport.c +++ b/rogue5/mdport.c @@ -98,6 +98,7 @@ #include #include #include +#include #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) diff --git a/rogue5/save.c b/rogue5/save.c index a0a59bc..cf1cfe7 100644 --- a/rogue5/save.c +++ b/rogue5/save.c @@ -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*/ diff --git a/rogue5/scedit.c b/rogue5/scedit.c index 0060e95..2de0002 100644 --- a/rogue5/scedit.c +++ b/rogue5/scedit.c @@ -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); diff --git a/srogue/main.c b/srogue/main.c index 3a474db..9b991d0 100644 --- a/srogue/main.c +++ b/srogue/main.c @@ -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); diff --git a/srogue/mdport.c b/srogue/mdport.c index 656e115..c414d0b 100644 --- a/srogue/mdport.c +++ b/srogue/mdport.c @@ -96,6 +96,7 @@ #include #include #include +#include #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; +} diff --git a/srogue/rogue.h b/srogue/rogue.h index a003572..23ade60 100644 --- a/srogue/rogue.h +++ b/srogue/rogue.h @@ -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. */ diff --git a/srogue/save.c b/srogue/save.c index 6bb0486..8f1c37d 100644 --- a/srogue/save.c +++ b/srogue/save.c @@ -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(); } diff --git a/xrogue/main.c b/xrogue/main.c index cdaf917..cc8f6c0 100644 --- a/xrogue/main.c +++ b/xrogue/main.c @@ -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); diff --git a/xrogue/rogue.h b/xrogue/rogue.h index f648c8e..e35e1f1 100644 --- a/xrogue/rogue.h +++ b/xrogue/rogue.h @@ -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); diff --git a/xrogue/state.c b/xrogue/state.c index a9b7752..b75f5e6 100644 --- a/xrogue/state.c +++ b/xrogue/state.c @@ -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; +}