diff options
author | drh <drh@noemail.net> | 2004-02-11 09:46:30 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2004-02-11 09:46:30 +0000 |
commit | bbd82df617ee94a0371e867a95cee007f4473bd8 (patch) | |
tree | 06f6f9a32dd4e4ae13675aa4f1e29aa07fdca9bc /src/func.c | |
parent | 9eb9e26b82e5b973f81f4429f9e1978a058391e9 (diff) | |
download | sqlite-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.c | 18 |
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); |