* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
static char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/stdlib/random.c,v 1.24 2004/01/20 03:02:18 das Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/stdlib/random.c,v 1.25 2007/01/09 00:28:10 imp Exp $");
+/*
+ * We always compile with __DARWIN_UNIX03 set to one, relying on the fact that
+ * (for non-LP64) sizeof(int) == sizeof(long) == sizeof(size_t), so that we
+ * don't have to have two different versions of the prototypes. For LP64,
+ * we only support the POSIX-compatible prototypes.
+ */
+#undef __DARWIN_UNIX03
+#define __DARWIN_UNIX03 1
#include "namespace.h"
#include <sys/time.h> /* for srandomdev() */
#include <fcntl.h> /* for srandomdev() */
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(int32_t) __attribute__((always_inline));
static inline uint32_t good_rand (x)
int32_t x;
*/
void
srandom(x)
- unsigned long x;
+ unsigned x;
{
int i, lim;
*/
char *
initstate(seed, arg_state, n)
- unsigned long seed; /* seed for R.N.G. */
+ unsigned seed; /* seed for R.N.G. */
char *arg_state; /* pointer to state array */
- long n; /* # bytes of state info */
+ size_t n; /* # bytes of state info */
{
char *ostate = (char *)(&state[-1]);
uint32_t *int_arg_state = (uint32_t *)arg_state;
*/
char *
setstate(arg_state)
- char *arg_state; /* pointer to state array */
+ const char *arg_state; /* pointer to state array */
{
uint32_t *new_state = (uint32_t *)arg_state;
uint32_t type = new_state[0] % MAX_TYPES;