X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=random.c;h=fb54560c9570c12f19ca38c2f24a30188e230fc0;hb=3ce69e84cad15844282d691fa03e711c5353c05e;hp=107649c733b2cb3e90ce21b90632467fe8bfa488;hpb=50edaa578b614eb74c57a38faa2d05ab628ff81b;p=sgt-puzzles.git diff --git a/random.c b/random.c index 107649c..fb54560 100644 --- 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;