summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornia <nia@NetBSD.org>2020-07-26 15:24:00 +0000
committernia <nia@NetBSD.org>2020-07-26 15:24:00 +0000
commitb44443a36db16ebbfcdf801559c33b00e0f3f60e (patch)
tree973911ccd4338cc86e53e1dd798de9256721c43e
parent05791857e3884b78131a85f78c91c32af0fb5f25 (diff)
downloadbsdgames-darwin-b44443a36db16ebbfcdf801559c33b00e0f3f60e.tar.gz
bsdgames-darwin-b44443a36db16ebbfcdf801559c33b00e0f3f60e.tar.zst
bsdgames-darwin-b44443a36db16ebbfcdf801559c33b00e0f3f60e.zip
random(6): Use arc4random_uniform to simplify code
-rw-r--r--random/random.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/random/random.c b/random/random.c
index c4bb50b1..6e51aa9d 100644
--- a/random/random.c
+++ b/random/random.c
@@ -1,4 +1,4 @@
-/* $NetBSD: random.c,v 1.14 2009/08/12 08:27:24 dholland Exp $ */
+/* $NetBSD: random.c,v 1.15 2020/07/26 15:24:00 nia Exp $ */
/*
* Copyright (c) 1994
@@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1994\
#if 0
static char sccsid[] = "@(#)random.c 8.6 (Berkeley) 6/1/94";
#else
-__RCSID("$NetBSD: random.c,v 1.14 2009/08/12 08:27:24 dholland Exp $");
+__RCSID("$NetBSD: random.c,v 1.15 2020/07/26 15:24:00 nia Exp $");
#endif
#endif /* not lint */
@@ -62,7 +62,6 @@ static void usage(void) __dead;
int
main(int argc, char *argv[])
{
- struct timeval tp;
double denom;
int ch, random_exit, selected, unbuffer_output;
char *ep;
@@ -103,12 +102,9 @@ main(int argc, char *argv[])
/* NOTREACHED */
}
- (void)gettimeofday(&tp, NULL);
- srandom((unsigned long)tp.tv_usec + tp.tv_sec + getpid());
-
/* Compute a random exit status between 0 and denom - 1. */
if (random_exit)
- return ((denom * random()) / RANDOM_MAX);
+ return arc4random_uniform(denom);
/*
* Act as a filter, randomly choosing lines of the standard input
@@ -123,7 +119,7 @@ main(int argc, char *argv[])
* 0 (which has a 1 / denom chance of being true), we select the
* line.
*/
- selected = (int)(denom * random() / RANDOM_MAX) == 0;
+ selected = (arc4random_uniform(denom) == 0);
while ((ch = getchar()) != EOF) {
if (selected)
(void)putchar(ch);
@@ -133,7 +129,7 @@ main(int argc, char *argv[])
err(2, "stdout");
/* Now see if the next line is to be printed. */
- selected = (int)(denom * random() / RANDOM_MAX) == 0;
+ selected = (arc4random_uniform(denom) == 0);
}
}
if (ferror(stdin))