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/os.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/os.c')
-rw-r--r-- | src/os.c | 28 |
1 files changed, 16 insertions, 12 deletions
@@ -785,7 +785,7 @@ int sqliteOsTempFileName(char *zBuf){ "/tmp", ".", }; - static char zChars[] = + static unsigned char zChars[] = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789"; @@ -802,9 +802,9 @@ int sqliteOsTempFileName(char *zBuf){ do{ sprintf(zBuf, "%s/"TEMP_FILE_PREFIX, zDir); j = strlen(zBuf); - for(i=0; i<15; i++){ - int n = sqliteRandomByte() % (sizeof(zChars)-1); - zBuf[j++] = zChars[n]; + sqliteRandomness(15, &zBuf[j]); + for(i=0; i<15; i++, j++){ + zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ]; } zBuf[j] = 0; }while( access(zBuf,0)==0 ); @@ -822,9 +822,9 @@ int sqliteOsTempFileName(char *zBuf){ for(;;){ sprintf(zBuf, "%s\\"TEMP_FILE_PREFIX, zTempPath); j = strlen(zBuf); - for(i=0; i<15; i++){ - int n = sqliteRandomByte() % (sizeof(zChars) - 1); - zBuf[j++] = zChars[n]; + sqliteRandomness(15, &zBuf[j]); + for(i=0; i<15; i++, j++){ + zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ]; } zBuf[j] = 0; if( !sqliteOsFileExists(zBuf) ) break; @@ -865,9 +865,9 @@ int sqliteOsTempFileName(char *zBuf){ for(;;){ sprintf(zBuf, "%s"TEMP_FILE_PREFIX, zTempPath); j = strlen(zBuf); - for(i=0; i<15; i++){ - int n = sqliteRandomByte() % sizeof(zChars); - zBuf[j++] = zChars[n]; + sqliteRandomness(15, &zBuf[j]); + for(i=0; i<15; i++, j++){ + zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ]; } zBuf[j] = 0; if( !sqliteOsFileExists(zBuf) ) break; @@ -1325,9 +1325,11 @@ int sqliteOsReadLock(OsFile *id){ if( id->locked>0 ){ rc = SQLITE_OK; }else{ - int lk = (sqliteRandomInteger() & 0x7ffffff)%N_LOCKBYTE+1; + int lk; int res; int cnt = 100; + sqliteRandomness(sizeof(lk), &lk); + lk = (lk & 0x7fffffff)%N_LOCKBYTE + 1; while( cnt-->0 && (res = LockFile(id->h, FIRST_LOCKBYTE, 0, 1, 0))==0 ){ Sleep(1); } @@ -1359,10 +1361,12 @@ int sqliteOsReadLock(OsFile *id){ if( id->locked>0 || id->refNumRF == -1 ){ rc = SQLITE_OK; }else{ - int lk = (sqliteRandomInteger() & 0x7ffffff)%N_LOCKBYTE+1; + int lk; OSErr res; int cnt = 5; ParamBlockRec params; + sqliteRandomness(sizeof(lk), &lk); + lk = (lk & 0x7fffffff)%N_LOCKBYTE + 1; memset(¶ms, 0, sizeof(params)); params.ioParam.ioRefNum = id->refNumRF; params.ioParam.ioPosMode = fsFromStart; |