summaryrefslogtreecommitdiff
path: root/random
diff options
context:
space:
mode:
authorDafydd Harries <dafydd.harries@collabora.co.uk>2007-02-05 17:24:00 +0000
committerDafydd Harries <dafydd.harries@collabora.co.uk>2007-02-05 17:24:00 +0000
commit1352895ab8fa0b50a65702fc429db63564077bd7 (patch)
treed22c82cf113cbe36cc9008269049101777775ccc /random
parent00f0b1e2e799a86bd001602238785292b63bc961 (diff)
downloadlibnice-1352895ab8fa0b50a65702fc429db63564077bd7.tar.gz
don't seed new RNGs to 0 by default; allow overriding RNG constructor
darcs-hash:20070205172439-c9803-1407272fc5941c986205b683b05756d7b52eca9e.gz
Diffstat (limited to 'random')
-rw-r--r--random/random.c15
-rw-r--r--random/random.h3
-rw-r--r--random/test.c3
3 files changed, 16 insertions, 5 deletions
diff --git a/random/random.c b/random/random.c
index 5a07110..c08555d 100644
--- a/random/random.c
+++ b/random/random.c
@@ -2,14 +2,21 @@
#include "random.h"
#include "random-glib.h"
+static NiceRNG * (*nice_rng_new_func) (void) = NULL;
+
NiceRNG *
nice_rng_new (void)
{
- NiceRNG *rng;
+ if (nice_rng_new_func == NULL)
+ return nice_rng_glib_new ();
+ else
+ return nice_rng_new_func ();
+}
- rng = nice_rng_glib_new ();
- rng->seed (rng, 0);
- return rng;
+void
+nice_rng_set_new_func (NiceRNG * (*func) (void))
+{
+ nice_rng_new_func = func;
}
void
diff --git a/random/random.h b/random/random.h
index 2e31e63..5315fb8 100644
--- a/random/random.h
+++ b/random/random.h
@@ -20,6 +20,9 @@ NiceRNG *
nice_rng_new (void);
void
+nice_rng_set_new_func (NiceRNG * (*func) (void));
+
+void
nice_rng_seed (NiceRNG *rng, guint32 seed);
void
diff --git a/random/test.c b/random/test.c
index fe55db3..d84b5c0 100644
--- a/random/test.c
+++ b/random/test.c
@@ -1,7 +1,7 @@
#include <string.h>
-#include "random.h"
+#include "random-glib.h"
int
main (void)
@@ -9,6 +9,7 @@ main (void)
NiceRNG *rng;
gchar buf[9];
+ nice_rng_set_new_func (nice_rng_glib_new_predictable);
rng = nice_rng_new ();
nice_rng_generate_bytes_print (rng, 8, buf);
buf[8] = '\0';