Thanks for the thorough review. Here's an incremental addressing the things you spotted. I would have spotted the decl-after-stmt problems but for a bug in gcc-4.3 and newer: http://thread.gmane.org/gmane.comp.gcc.bugs/228246
I'll squash it into the first one and apply shortly. >From a07b7f3a69902d491f7f49ccd5343e20095199a7 Mon Sep 17 00:00:00 2001 From: Jim Meyering <[EMAIL PROTECTED]> Date: Thu, 23 Oct 2008 14:26:13 +0200 Subject: [PATCH] address Bruno's review feedback --- doc/glibc-functions/initstate_r.texi | 6 +++--- doc/glibc-functions/random_r.texi | 6 +++--- doc/glibc-functions/setstate_r.texi | 6 +++--- doc/glibc-functions/srandom_r.texi | 6 +++--- lib/random_r.c | 17 ++++++++++++----- lib/stdlib.in.h | 16 ++++++++-------- modules/random_r | 2 -- tests/test-random_r.c | 2 +- 8 files changed, 33 insertions(+), 28 deletions(-) diff --git a/doc/glibc-functions/initstate_r.texi b/doc/glibc-functions/initstate_r.texi index f1eed08..238d5dd 100644 --- a/doc/glibc-functions/initstate_r.texi +++ b/doc/glibc-functions/initstate_r.texi @@ -6,11 +6,11 @@ Gnulib module: random_r Portability problems fixed by Gnulib: @itemize [EMAIL PROTECTED] +This function is missing on some platforms: +MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize Portability problems not fixed by Gnulib: @itemize [EMAIL PROTECTED] -This function is missing on some platforms: -MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize diff --git a/doc/glibc-functions/random_r.texi b/doc/glibc-functions/random_r.texi index 96f9384..be20c04 100644 --- a/doc/glibc-functions/random_r.texi +++ b/doc/glibc-functions/random_r.texi @@ -6,11 +6,11 @@ Gnulib module: random_r Portability problems fixed by Gnulib: @itemize [EMAIL PROTECTED] +This function is missing on some platforms: +MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize Portability problems not fixed by Gnulib: @itemize [EMAIL PROTECTED] -This function is missing on some platforms: -MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize diff --git a/doc/glibc-functions/setstate_r.texi b/doc/glibc-functions/setstate_r.texi index 990fb5a..631e125 100644 --- a/doc/glibc-functions/setstate_r.texi +++ b/doc/glibc-functions/setstate_r.texi @@ -6,11 +6,11 @@ Gnulib module: random_r Portability problems fixed by Gnulib: @itemize [EMAIL PROTECTED] +This function is missing on some platforms: +MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize Portability problems not fixed by Gnulib: @itemize [EMAIL PROTECTED] -This function is missing on some platforms: -MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize diff --git a/doc/glibc-functions/srandom_r.texi b/doc/glibc-functions/srandom_r.texi index 2e32d15..0af243f 100644 --- a/doc/glibc-functions/srandom_r.texi +++ b/doc/glibc-functions/srandom_r.texi @@ -6,11 +6,11 @@ Gnulib module: random_r Portability problems fixed by Gnulib: @itemize [EMAIL PROTECTED] +This function is missing on some platforms: +MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize Portability problems not fixed by Gnulib: @itemize [EMAIL PROTECTED] -This function is missing on some platforms: -MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin, mingw, Interix 3.5. @end itemize diff --git a/lib/random_r.c b/lib/random_r.c index 40bb005..fa99573 100644 --- a/lib/random_r.c +++ b/lib/random_r.c @@ -52,6 +52,8 @@ * Rewritten to be reentrant by Ulrich Drepper, 1995 */ +#include <config.h> + #include <errno.h> #include <limits.h> #include <stddef.h> @@ -239,10 +241,16 @@ int __initstate_r (unsigned int seed, char *arg_state, size_t n, struct random_data *buf) { + int32_t *old_state; + int32_t *state; + int type; + int degree; + int separation; + if (buf == NULL) goto fail; - int32_t *old_state = buf->state; + old_state = buf->state; if (old_state != NULL) { int old_type = buf->rand_type; @@ -252,7 +260,6 @@ __initstate_r (unsigned int seed, char *arg_state, size_t n, old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type; } - int type; if (n >= BREAK_3) type = n < BREAK_4 ? TYPE_3 : TYPE_4; else if (n < BREAK_1) @@ -267,13 +274,13 @@ __initstate_r (unsigned int seed, char *arg_state, size_t n, else type = n < BREAK_2 ? TYPE_1 : TYPE_2; - int degree = random_poly_info.degrees[type]; - int separation = random_poly_info.seps[type]; + degree = random_poly_info.degrees[type]; + separation = random_poly_info.seps[type]; buf->rand_type = type; buf->rand_sep = separation; buf->rand_deg = degree; - int32_t *state = &((int32_t *) arg_state)[1]; /* First location. */ + state = &((int32_t *) arg_state)[1]; /* First location. */ /* Must set END_PTR before srandom. */ buf->end_ptr = &state[degree]; diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h index 997cf37..b44703b 100644 --- a/lib/stdlib.in.h +++ b/lib/stdlib.in.h @@ -232,25 +232,25 @@ int random_r (struct random_data *buf, int32_t *result); # endif #elif defined GNULIB_POSIXCHECK # undef random_r -# define random_r(r) \ +# define random_r(b,r) \ (GL_LINK_WARNING ("random_r is unportable - " \ "use gnulib module random_r for portability"), \ - random_r (r)) + random_r (b,r)) # undef initstate_r -# define initstate_r(r) \ +# define initstate_r(s,b,sz,r) \ (GL_LINK_WARNING ("initstate_r is unportable - " \ "use gnulib module random_r for portability"), \ - initstate_r (r)) + initstate_r (s,b,sz,r)) # undef srandom_r -# define srandom_r(r) \ +# define srandom_r(s,r) \ (GL_LINK_WARNING ("srandom_r is unportable - " \ "use gnulib module random_r for portability"), \ - srandom_r (r)) + srandom_r (s,r)) # undef setstate_r -# define setstate_r(r) \ +# define setstate_r(a,r) \ (GL_LINK_WARNING ("setstate_r is unportable - " \ "use gnulib module random_r for portability"), \ - setstate_r (r)) + setstate_r (a,r)) #endif diff --git a/modules/random_r b/modules/random_r index 40d3d41..ad5c0f5 100644 --- a/modules/random_r +++ b/modules/random_r @@ -6,7 +6,6 @@ lib/random_r.c m4/random_r.m4 Depends-on: -errno stdlib configure.ac: @@ -14,7 +13,6 @@ gl_FUNC_RANDOM_R gl_STDLIB_MODULE_INDICATOR([random_r]) Makefile.am: -lib_SOURCES += random_r.c Include: #include <stdlib.h> diff --git a/tests/test-random_r.c b/tests/test-random_r.c index a236b0a..5308f73 100644 --- a/tests/test-random_r.c +++ b/tests/test-random_r.c @@ -40,7 +40,7 @@ main () unsigned int n_big = 0; rand_state.state = NULL; - if (initstate_r (time (0), buf, sizeof buf, &rand_state)) + if (initstate_r (time (NULL), buf, sizeof buf, &rand_state)) return 1; for (i = 0; i < 1000; i++) { -- 1.6.0.3