chiark / gitweb /
Fix completion checking in Killer Solo.
[sgt-puzzles.git] / random.c
index 107649c733b2cb3e90ce21b90632467fe8bfa488..fb54560c9570c12f19ca38c2f24a30188e230fc0 100644 (file)
--- a/random.c
+++ b/random.c
@@ -107,7 +107,7 @@ void SHA_Init(SHA_State * s)
     s->lenhi = s->lenlo = 0;
 }
 
-void SHA_Bytes(SHA_State * s, void *p, int len)
+void SHA_Bytes(SHA_State * s, const void *p, int len)
 {
     unsigned char *q = (unsigned char *) p;
     uint32 wordblock[16];
@@ -188,7 +188,7 @@ void SHA_Final(SHA_State * s, unsigned char *output)
     }
 }
 
-void SHA_Simple(void *p, int len, unsigned char *output)
+void SHA_Simple(const void *p, int len, unsigned char *output)
 {
     SHA_State s;
 
@@ -207,7 +207,7 @@ struct random_state {
     int pos;
 };
 
-random_state *random_init(char *seed, int len)
+random_state *random_new(const char *seed, int len)
 {
     random_state *state;
 
@@ -221,6 +221,16 @@ random_state *random_init(char *seed, int len)
     return state;
 }
 
+random_state *random_copy(random_state *tocopy)
+{
+    random_state *result;
+    result = snew(random_state);
+    memcpy(result->seedbuf, tocopy->seedbuf, sizeof(result->seedbuf));
+    memcpy(result->databuf, tocopy->databuf, sizeof(result->databuf));
+    result->pos = tocopy->pos;
+    return result;
+}
+
 unsigned long random_bits(random_state *state, int bits)
 {
     unsigned long ret = 0;
@@ -294,7 +304,7 @@ char *random_state_encode(random_state *state)
     return dupstr(retbuf);
 }
 
-random_state *random_state_decode(char *input)
+random_state *random_state_decode(const char *input)
 {
     random_state *state;
     int pos, byte, digits;