MCPcopy Create free account
hub / github.com/NetHack/NetHack / sys_random_seed

Function sys_random_seed

sys/unix/unixmain.c:812–842  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

810#endif /* __APPLE__ */
811
812unsigned long
813sys_random_seed(void)
814{
815 unsigned long seed = 0L;
816 unsigned long pid = (unsigned long) getpid();
817 boolean no_seed = TRUE;
818#ifdef DEV_RANDOM
819 FILE *fptr;
820
821 fptr = fopen(DEV_RANDOM, "r");
822 if (fptr) {
823 fread(&seed, sizeof (long), 1, fptr);
824 has_strong_rngseed = TRUE; /* decl.c */
825 no_seed = FALSE;
826 (void) fclose(fptr);
827 } else {
828 /* leaves clue, doesn't exit */
829 paniclog("sys_random_seed", "falling back to weak seed");
830 }
831#endif
832 if (no_seed) {
833 seed = (unsigned long) getnow(); /* time((TIME_type) 0) */
834 /* Quick dirty band-aid to prevent PRNG prediction */
835 if (pid) {
836 if (!(pid & 3L))
837 pid -= 1L;
838 seed *= pid;
839 }
840 }
841 return seed;
842}
843
844#if defined(MACOS) && defined(NHUUID)
845extern void get_macos_uuid(char *); /* sys/unix/macuuid.m */

Callers

nothing calls this directly

Calls 5

freadFunction · 0.85
fcloseFunction · 0.85
paniclogFunction · 0.85
getnowFunction · 0.85
getpidFunction · 0.50

Tested by

no test coverage detected