summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormillert <millert@openbsd.org>1998-02-07 02:16:25 +0000
committermillert <millert@openbsd.org>1998-02-07 02:16:25 +0000
commit4cf951c0b1ba67b5b84bbe55cf60fe8354893b14 (patch)
tree3f820991a908ba6d2f931e04c8914ae4016ace4b
parentindent (diff)
downloadwireguard-openbsd-4cf951c0b1ba67b5b84bbe55cf60fe8354893b14.tar.xz
wireguard-openbsd-4cf951c0b1ba67b5b84bbe55cf60fe8354893b14.zip
More XPG4.2 --
setstate takes a const parameter don't ever spew to stderr, just return NULL
-rw-r--r--include/stdlib.h8
-rw-r--r--lib/libc/stdlib/random.318
-rw-r--r--lib/libc/stdlib/random.c14
3 files changed, 23 insertions, 17 deletions
diff --git a/include/stdlib.h b/include/stdlib.h
index 2d25366c095..39aae35f44d 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: stdlib.h,v 1.6 1998/02/06 01:49:06 deraadt Exp $ */
+/* $OpenBSD: stdlib.h,v 1.7 1998/02/07 02:16:26 millert Exp $ */
/* $NetBSD: stdlib.h,v 1.25 1995/12/27 21:19:08 jtc Exp $ */
/*-
@@ -166,11 +166,11 @@ int radixsort __P((const unsigned char **, int, const unsigned char *,
int sradixsort __P((const unsigned char **, int, const unsigned char *,
unsigned));
-char *initstate __P((unsigned, char *, size_t));
+char *initstate __P((unsigned int, char *, size_t));
long random __P((void));
char *realpath __P((const char *, char *));
-char *setstate __P((char *));
-void srandom __P((unsigned));
+char *setstate __P((const char *));
+void srandom __P((unsigned int));
int putenv __P((const char *));
int setenv __P((const char *, const char *, int));
diff --git a/lib/libc/stdlib/random.3 b/lib/libc/stdlib/random.3
index 87a4fe253fa..b57dcd15e37 100644
--- a/lib/libc/stdlib/random.3
+++ b/lib/libc/stdlib/random.3
@@ -29,7 +29,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $OpenBSD: random.3,v 1.4 1998/02/06 01:49:08 deraadt Exp $
+.\" $OpenBSD: random.3,v 1.5 1998/02/07 02:16:25 millert Exp $
.\"
.Dd April 19, 1991
.Dt RANDOM 3
@@ -45,11 +45,11 @@
.Ft long
.Fn random void
.Ft void
-.Fn srandom "unsigned seed"
+.Fn srandom "unsigned int seed"
.Ft char *
-.Fn initstate "unsigned seed" "char *state" "size_t n"
+.Fn initstate "unsigned int seed" "char *state" "size_t n"
.Ft char *
-.Fn setstate "char *state"
+.Fn setstate "const char *state"
.Sh DESCRIPTION
The
.Fn random
@@ -162,7 +162,17 @@ is called with less than 8 bytes of state information, or if
detects that the state information has been garbled, error
messages are printed on the standard error output.
.Sh SEE ALSO
+.Xr drand48 3 ,
.Xr rand 3
+.Sh STANDARDS
+The
+.Fn random ,
+.Fn srandom ,
+.Fn initstate ,
+and
+.Fn setstate
+functions conform to
+.St -xpg4.2 .
.Sh HISTORY
These
functions appeared in
diff --git a/lib/libc/stdlib/random.c b/lib/libc/stdlib/random.c
index 1ac61f2cec8..79344f30f16 100644
--- a/lib/libc/stdlib/random.c
+++ b/lib/libc/stdlib/random.c
@@ -32,7 +32,7 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char *rcsid = "$OpenBSD: random.c,v 1.5 1998/02/06 01:49:08 deraadt Exp $";
+static char *rcsid = "$OpenBSD: random.c,v 1.6 1998/02/07 02:16:25 millert Exp $";
#endif /* LIBC_SCCS and not lint */
#include <stdio.h>
@@ -250,11 +250,8 @@ initstate(seed, arg_state, n)
state[-1] = rand_type;
else
state[-1] = MAX_TYPES * (rptr - state) + rand_type;
- if (n < BREAK_0) {
- (void)fprintf(stderr,
- "random: not enough state (%d bytes); ignored.\n", n);
- return(0);
- }
+ if (n < BREAK_0)
+ return(NULL);
if (n < BREAK_1) {
rand_type = TYPE_0;
rand_deg = DEG_0;
@@ -303,7 +300,7 @@ initstate(seed, arg_state, n)
*/
char *
setstate(arg_state)
- char *arg_state;
+ const char *arg_state;
{
register long *new_state = (long *)arg_state;
register int type = new_state[0] % MAX_TYPES;
@@ -325,8 +322,7 @@ setstate(arg_state)
rand_sep = seps[type];
break;
default:
- (void)fprintf(stderr,
- "random: state info corrupted; not changed.\n");
+ return(NULL);
}
state = &new_state[1];
if (rand_type != TYPE_0) {