aboutsummaryrefslogtreecommitdiff
path: root/src/func.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2004-02-11 09:46:30 +0000
committerdrh <drh@noemail.net>2004-02-11 09:46:30 +0000
commitbbd82df617ee94a0371e867a95cee007f4473bd8 (patch)
tree06f6f9a32dd4e4ae13675aa4f1e29aa07fdca9bc /src/func.c
parent9eb9e26b82e5b973f81f4429f9e1978a058391e9 (diff)
downloadsqlite-bbd82df617ee94a0371e867a95cee007f4473bd8.tar.gz
sqlite-bbd82df617ee94a0371e867a95cee007f4473bd8.zip
Refactor the interface to the randomness generator. (CVS 1224)
FossilOrigin-Name: f2bdccf4bb2f796aafb64c33e55f62a1794d750c
Diffstat (limited to 'src/func.c')
-rw-r--r--src/func.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/func.c b/src/func.c
index 68c272ac0..688f50cff 100644
--- a/src/func.c
+++ b/src/func.c
@@ -16,7 +16,7 @@
** sqliteRegisterBuildinFunctions() found at the bottom of the file.
** All other code has file scope.
**
-** $Id: func.c,v 1.38 2004/01/30 14:49:17 drh Exp $
+** $Id: func.c,v 1.39 2004/02/11 09:46:32 drh Exp $
*/
#include <ctype.h>
#include <math.h>
@@ -195,7 +195,9 @@ static void ifnullFunc(sqlite_func *context, int argc, const char **argv){
** Implementation of random(). Return a random integer.
*/
static void randomFunc(sqlite_func *context, int argc, const char **argv){
- sqlite_set_result_int(context, sqliteRandomInteger());
+ int r;
+ sqliteRandomness(sizeof(r), &r);
+ sqlite_set_result_int(context, r);
}
/*
@@ -341,13 +343,13 @@ static void soundexFunc(sqlite_func *context, int argc, const char **argv){
** generating test data.
*/
static void randStr(sqlite_func *context, int argc, const char **argv){
- static const char zSrc[] =
+ static const unsigned char zSrc[] =
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789"
".-!,:*^+=_|?/<> ";
int iMin, iMax, n, r, i;
- char zBuf[1000];
+ unsigned char zBuf[1000];
if( argc>=1 ){
iMin = atoi(argv[0]);
if( iMin<0 ) iMin = 0;
@@ -364,14 +366,14 @@ static void randStr(sqlite_func *context, int argc, const char **argv){
}
n = iMin;
if( iMax>iMin ){
- r = sqliteRandomInteger() & 0x7fffffff;
+ sqliteRandomness(sizeof(r), &r);
+ r &= 0x7fffffff;
n += r%(iMax + 1 - iMin);
}
assert( n<sizeof(zBuf) );
- r = 0;
+ sqliteRandomness(n, zBuf);
for(i=0; i<n; i++){
- r = (r + sqliteRandomByte())% (sizeof(zSrc)-1);
- zBuf[i] = zSrc[r];
+ zBuf[i] = zSrc[zBuf[i]%(sizeof(zSrc)-1)];
}
zBuf[n] = 0;
sqlite_set_result_string(context, zBuf, n);