summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib/random.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdlib/random.c')
-rw-r--r--lib/libc/stdlib/random.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/lib/libc/stdlib/random.c b/lib/libc/stdlib/random.c
index f7be4a7..a3c054e 100644
--- a/lib/libc/stdlib/random.c
+++ b/lib/libc/stdlib/random.c
@@ -216,10 +216,8 @@ static int rand_deg = DEG_3;
static int rand_sep = SEP_3;
static uint32_t *end_ptr = &randtbl[DEG_3 + 1];
-static inline uint32_t good_rand(int32_t);
-
-static inline uint32_t good_rand (x)
- int32_t x;
+static inline uint32_t
+good_rand(int32_t x)
{
#ifdef USE_WEAK_SEEDING
/*
@@ -264,8 +262,7 @@ static inline uint32_t good_rand (x)
* for default usage relies on values produced by this routine.
*/
void
-srandom(x)
- unsigned long x;
+srandom(unsigned long x)
{
int i, lim;
@@ -295,7 +292,7 @@ srandom(x)
* a fixed seed.
*/
void
-srandomdev()
+srandomdev(void)
{
int fd, done;
size_t len;
@@ -306,7 +303,7 @@ srandomdev()
len = rand_deg * sizeof state[0];
done = 0;
- fd = _open("/dev/random", O_RDONLY, 0);
+ fd = _open("/dev/random", O_RDONLY | O_CLOEXEC, 0);
if (fd >= 0) {
if (_read(fd, (void *) state, len) == (ssize_t) len)
done = 1;
@@ -315,10 +312,9 @@ srandomdev()
if (!done) {
struct timeval tv;
- unsigned long junk;
gettimeofday(&tv, NULL);
- srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk);
+ srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec);
return;
}
@@ -352,10 +348,7 @@ srandomdev()
* complain about mis-alignment, but you should disregard these messages.
*/
char *
-initstate(seed, arg_state, n)
- unsigned long seed; /* seed for R.N.G. */
- char *arg_state; /* pointer to state array */
- long n; /* # bytes of state info */
+initstate(unsigned long seed, char *arg_state, long n)
{
char *ostate = (char *)(&state[-1]);
uint32_t *int_arg_state = (uint32_t *)arg_state;
@@ -367,7 +360,7 @@ initstate(seed, arg_state, n)
if (n < BREAK_0) {
(void)fprintf(stderr,
"random: not enough state (%ld bytes); ignored.\n", n);
- return(0);
+ return (0);
}
if (n < BREAK_1) {
rand_type = TYPE_0;
@@ -397,7 +390,7 @@ initstate(seed, arg_state, n)
int_arg_state[0] = rand_type;
else
int_arg_state[0] = MAX_TYPES * (rptr - state) + rand_type;
- return(ostate);
+ return (ostate);
}
/*
@@ -420,8 +413,7 @@ initstate(seed, arg_state, n)
* complain about mis-alignment, but you should disregard these messages.
*/
char *
-setstate(arg_state)
- char *arg_state; /* pointer to state array */
+setstate(char *arg_state)
{
uint32_t *new_state = (uint32_t *)arg_state;
uint32_t type = new_state[0] % MAX_TYPES;
@@ -452,7 +444,7 @@ setstate(arg_state)
fptr = &state[(rear + rand_sep) % rand_deg];
}
end_ptr = &state[rand_deg]; /* set end_ptr too */
- return(ostate);
+ return (ostate);
}
/*
@@ -473,7 +465,7 @@ setstate(arg_state)
* Returns a 31-bit random number.
*/
long
-random()
+random(void)
{
uint32_t i;
uint32_t *f, *r;
@@ -498,5 +490,5 @@ random()
fptr = f; rptr = r;
}
- return((long)i);
+ return ((long)i);
}
OpenPOWER on IntegriCloud