summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--games/random/random.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/games/random/random.c b/games/random/random.c
index acb882b..4d17b53 100644
--- a/games/random/random.c
+++ b/games/random/random.c
@@ -62,7 +62,6 @@ main(argc, argv)
char *argv[];
{
extern int optind;
- time_t now;
double denom;
int ch, random_exit, selected, unbuffer_output;
char *ep;
@@ -94,16 +93,18 @@ main(argc, argv)
denom = strtod(*argv, &ep);
if (errno == ERANGE)
err(1, "%s", *argv);
- if (denom == 0 || *ep != '\0')
+ if (denom <= 0 || *ep != '\0')
errx(1, "denominator is not valid.");
+ if (random_exit && denom > 255)
+ errx(1, "denominator must be <= 255 for random exit.");
break;
default:
usage();
/* NOTREACHED */
}
- (void)time(&now);
- srandom((unsigned long)(now ^ getpid()));
+ if (srandomdev() < 0)
+ srandom(time(NULL) ^ getpid());
/* Compute a random exit status between 0 and denom - 1. */
if (random_exit)
OpenPOWER on IntegriCloud