summaryrefslogtreecommitdiff
path: root/ext/sqlite/libsqlite/src/random.c
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2004-07-10 12:27:51 +0000
committerWez Furlong <wez@php.net>2004-07-10 12:27:51 +0000
commite563b4eafa63ba8beb88defa1e36f037a7a97a60 (patch)
tree2e72dfa1c4b7fe62fde9ab326a67047ba2f4cc9e /ext/sqlite/libsqlite/src/random.c
parentcd732f1a3f5df97407797fe7ebb97830552479ad (diff)
downloadphp-git-e563b4eafa63ba8beb88defa1e36f037a7a97a60.tar.gz
Upgrade bundled library to 2.8.14 + misc fixes
(http://www.sqlite.org/cvstrac/chngview?cn=1742)
Diffstat (limited to 'ext/sqlite/libsqlite/src/random.c')
-rw-r--r--ext/sqlite/libsqlite/src/random.c44
1 files changed, 14 insertions, 30 deletions
diff --git a/ext/sqlite/libsqlite/src/random.c b/ext/sqlite/libsqlite/src/random.c
index d18bebff6b..dd8bdd4c58 100644
--- a/ext/sqlite/libsqlite/src/random.c
+++ b/ext/sqlite/libsqlite/src/random.c
@@ -35,15 +35,15 @@
** on RC4, which we know works very well.
*/
static int randomByte(){
- int t;
+ unsigned char t;
/* All threads share a single random number generator.
** This structure is the current state of the generator.
*/
static struct {
- int isInit; /* True if initialized */
- int i, j; /* State variables */
- int s[256]; /* State variables */
+ unsigned char isInit; /* True if initialized */
+ unsigned char i, j; /* State variables */
+ unsigned char s[256]; /* State variables */
} prng;
/* Initialize the state of the random number generator once,
@@ -65,8 +65,7 @@ static int randomByte(){
prng.s[i] = i;
}
for(i=0; i<256; i++){
- int t;
- prng.j = (prng.j + prng.s[i] + k[i]) & 0xff;
+ prng.j += prng.s[i] + k[i];
t = prng.s[prng.j];
prng.s[prng.j] = prng.s[i];
prng.s[i] = t;
@@ -76,38 +75,23 @@ static int randomByte(){
/* Generate and return single random byte
*/
- prng.i = (prng.i + 1) & 0xff;
- prng.j = (prng.j + prng.s[prng.i]) & 0xff;
+ prng.i++;
t = prng.s[prng.i];
+ prng.j += t;
prng.s[prng.i] = prng.s[prng.j];
prng.s[prng.j] = t;
- t = prng.s[prng.i] + prng.s[prng.j];
- return prng.s[t & 0xff];
+ t += prng.s[prng.i];
+ return prng.s[t];
}
/*
-** Return an random 8-bit integer.
+** Return N random bytes.
*/
-int sqliteRandomByte(){
- int r;
+void sqliteRandomness(int N, void *pBuf){
+ unsigned char *zBuf = pBuf;
sqliteOsEnterMutex();
- r = randomByte();
- sqliteOsLeaveMutex();
- return r;
-}
-
-/*
-** Return a random 32-bit integer. The integer is generated by making
-** 4 calls to sqliteRandomByte().
-*/
-int sqliteRandomInteger(){
- int r;
- int i;
- sqliteOsEnterMutex();
- r = randomByte();
- for(i=1; i<4; i++){
- r = (r<<8) + randomByte();
+ while( N-- ){
+ *(zBuf++) = randomByte();
}
sqliteOsLeaveMutex();
- return r;
}