From b44443a36db16ebbfcdf801559c33b00e0f3f60e Mon Sep 17 00:00:00 2001 From: nia Date: Sun, 26 Jul 2020 15:24:00 +0000 Subject: random(6): Use arc4random_uniform to simplify code --- random/random.c | 14 +++++--------- 1 file 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)) -- cgit v1.2.3-56-ge451