Allow insertion of new random data into the pool as a miscop.
authormdw <mdw>
Wed, 26 Oct 2005 15:43:09 +0000 (15:43 +0000)
committermdw <mdw>
Wed, 26 Oct 2005 15:43:09 +0000 (15:43 +0000)
rand.c
rand.h

diff --git a/rand.c b/rand.c
index c50e10a..b0622c2 100644 (file)
--- a/rand.c
+++ b/rand.c
@@ -466,6 +466,7 @@ static int gmisc(grand *r, unsigned op, ...)
        case RAND_SEED:
        case RAND_TIMER:
        case RAND_GOODBITS:
+       case RAND_ADD:
          rc = 1;
          break;
        default:
@@ -515,6 +516,12 @@ static int gmisc(grand *r, unsigned op, ...)
     case RAND_GOODBITS:
       rc = rand_goodbits(&g->p);
       break;
+    case RAND_ADD: {
+      const void *p = va_arg(ap, const void *);
+      size_t sz = va_arg(ap, size_t);
+      unsigned goodbits = va_arg(ap, unsigned);
+      rand_add(&g->p, p, sz, goodbits);
+    } break;
     default:
       GRAND_BADOP;
       break;
diff --git a/rand.h b/rand.h
index 22f0188..25f806b 100644 (file)
--- a/rand.h
+++ b/rand.h
@@ -285,7 +285,9 @@ enum {
   RAND_NOISESRC,                       /* @const rand_source *s@ */
   RAND_SEED,                           /* @unsigned bits@ */
   RAND_TIMER,                          /* No args */
-  RAND_GOODBITS                                /* No args */
+  RAND_GOODBITS,                       /* No args */
+  RAND_ADD                             /* @const void *p, size_t sz,@
+                                        * @unsigned goodbits */
 };
 
 /* --- Default random number generator --- */