diff --git a/include/ntconf.h b/include/ntconf.h index 4edc63c76..62c68cc47 100644 --- a/include/ntconf.h +++ b/include/ntconf.h @@ -35,8 +35,6 @@ /*#define CHANGE_COLOR*/ /* allow palette changes */ #define SELECTSAVED /* Provide menu of saved games to choose from at start */ -#define SYS_RANDOM_SEED /* Use random seed derived from CNG */ - /* * ----------------------------------------------------------------- * The remaining code shouldn't need modification. diff --git a/include/unixconf.h b/include/unixconf.h index c0c80ccda..781e3563e 100644 --- a/include/unixconf.h +++ b/include/unixconf.h @@ -423,7 +423,6 @@ # define DEV_RANDOM "/dev/random" # endif #endif -#define SYS_RANDOM_SEED #endif /* UNIXCONF_H */ #endif /* UNIX */ diff --git a/include/vmsconf.h b/include/vmsconf.h index 95749bbd6..40cde73a0 100644 --- a/include/vmsconf.h +++ b/include/vmsconf.h @@ -257,7 +257,6 @@ typedef __mode_t mode_t; # define Rand() rand() # endif #endif -#define SYS_RANDOM_SEED #ifndef __GNUC__ #ifndef bcopy diff --git a/src/hacklib.c b/src/hacklib.c index f70a4440f..56e301ed2 100644 --- a/src/hacklib.c +++ b/src/hacklib.c @@ -850,24 +850,6 @@ extern struct tm *FDECL(localtime, (time_t *)); #endif STATIC_DCL struct tm *NDECL(getlt); -#ifdef SYS_RANDOM_SEED -extern unsigned long NDECL(sys_random_seed); -#endif - -/* Returns a number suitable as seed for the random number generator. */ -static unsigned long -get_random_seed() -{ - unsigned long seed = 0; -#ifdef SYS_RANDOM_SEED - /* Platform-specific seed if one is provided */ - seed = sys_random_seed(); -#else - seed = (unsigned long) getnow(); /* time((TIME_type) 0) */ -#endif - return seed; -} - /* Sets the seed for the random number generator */ static void set_random(unsigned long seed) @@ -898,6 +880,11 @@ set_random(unsigned long seed) #endif } +/* An appropriate version of this must always be provided in + port-specific code somewhere. It returns a number suitable + as seed for the random number generator */ +extern unsigned long NDECL(sys_random_seed); + /* * Initializes the random number generator. * Only call once. @@ -905,19 +892,15 @@ set_random(unsigned long seed) void init_random() { - unsigned long seed = get_random_seed(); - set_random(seed); + set_random(sys_random_seed()); } /* Reshuffles the random number generator. */ void reseed_random() { - /* only reseed if we are certain that the seed generation is unguessable - * by the players. */ -#if defined(SYS_RANDOM_SEED) + /* reseed */ init_random(); -#endif } time_t diff --git a/sys/msdos/msdos.c b/sys/msdos/msdos.c index d943b864d..69f994be6 100644 --- a/sys/msdos/msdos.c +++ b/sys/msdos/msdos.c @@ -519,4 +519,15 @@ unsigned setvalue; return (regs.x.dx); } +unsigned long +sys_random_seed(VOID_ARGS) +{ + unsigned long ourseed = 0UL; + time_t datetime = 0; + + (void) time(&datetime); + ourseed = (unsigned long) datetime; + return ourseed; +} + #endif /* MSDOS */ diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c index ac6d3c290..6b3cf5aea 100644 --- a/sys/unix/unixmain.c +++ b/sys/unix/unixmain.c @@ -765,7 +765,6 @@ error: } #endif -#ifdef SYS_RANDOM_SEED unsigned long sys_random_seed() { @@ -790,6 +789,5 @@ sys_random_seed() #endif return seed; } -#endif /* SYS_RANDOM_SEED */ /*unixmain.c*/ diff --git a/sys/vms/vmsmain.c b/sys/vms/vmsmain.c index b3be6e4d1..98f04be23 100644 --- a/sys/vms/vmsmain.c +++ b/sys/vms/vmsmain.c @@ -465,7 +465,6 @@ wd_message() You("are in non-scoring explore/discovery mode."); } -#ifdef SYS_RANDOM_SEED unsigned long sys_random_seed() { @@ -481,6 +480,5 @@ sys_random_seed() } return seed; } -#endif /*vmsmain.c*/ diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index e41dcac05..ef7b6258e 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -73,8 +73,8 @@ DEBUGINFO = Y # PDCurses header (.h) files and PDCURSES_C to the location # of your PDCurses C files. # -ADD_CURSES=Y -PDCURSES_TOP=..\..\pdcurses +#ADD_CURSES=Y +#PDCURSES_TOP=..\..\pdcurses # #============================================================================== # This marks the end of the BUILD DECISIONS section. diff --git a/sys/winnt/winnt.c b/sys/winnt/winnt.c index b1f5b2b4d..1a1fa710e 100644 --- a/sys/winnt/winnt.c +++ b/sys/winnt/winnt.c @@ -681,7 +681,8 @@ char *name; return; } -#ifdef SYS_RANDOM_SEED +#include /* Windows Crypto Next Gen (CNG) */ + #ifndef STATUS_SUCCESS #define STATUS_SUCCESS 0 #endif @@ -692,8 +693,6 @@ char *name; #define STATUS_UNSUCCESSFUL 0xC0000001 #endif -#include /* Windows Crypto Next Gen (CNG) */ - unsigned long sys_random_seed(VOID_ARGS) { @@ -727,7 +726,6 @@ sys_random_seed(VOID_ARGS) } return ourseed; } -#endif /* SYS_RANDOM_SEED */ #endif /* WIN32 */ diff --git a/win/win32/vs2017/NetHack.vcxproj b/win/win32/vs2017/NetHack.vcxproj index ee086fcc5..3a4412efe 100644 --- a/win/win32/vs2017/NetHack.vcxproj +++ b/win/win32/vs2017/NetHack.vcxproj @@ -37,7 +37,7 @@ TILES;WIN32CON;DLB;MSWIN_GRAPHICS;SAFEPROCS;_LIB;%(PreprocessorDefinitions) - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;winmm.lib;Winmm.lib;%(AdditionalDependencies) + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;winmm.lib;Winmm.lib;bcrypt.lib;%(AdditionalDependencies) @@ -76,6 +76,7 @@ + @@ -151,7 +152,6 @@ - @@ -194,6 +194,7 @@ + diff --git a/win/win32/vs2017/NetHackW.vcxproj b/win/win32/vs2017/NetHackW.vcxproj index 93c2e447b..e801b1583 100644 --- a/win/win32/vs2017/NetHackW.vcxproj +++ b/win/win32/vs2017/NetHackW.vcxproj @@ -28,7 +28,7 @@ Windows - comctl32.lib;winmm.lib;%(AdditionalDependencies) + comctl32.lib;winmm.lib;bcrypt.lib;%(AdditionalDependencies) $(WinWin32Dir)NethackW.exe.manifest;%(AdditionalManifestFiles) @@ -70,6 +70,7 @@ + @@ -146,7 +147,6 @@ - TTYSTUB;