Fix os2GetTempname() to actually work: DosScanEnv() wants an empty PSZ as argument and we obviously don't need to test for file existence any more. (CVS 4512)

FossilOrigin-Name: 8a233845f61080cca24da3672444f3e5b985da67
This commit is contained in:
pweilbacher 2007-10-24 23:03:25 +00:00
parent b6d78dc7bb
commit 99295b4933
3 changed files with 28 additions and 28 deletions

View File

@ -1,5 +1,5 @@
C fts3.c\sbuildTerms()\spasses\s-1\sfor\snInput.\s(CVS\s4511)
D 2007-10-24T21:52:37
C Fix\sos2GetTempname()\sto\sactually\swork:\sDosScanEnv()\swants\san\sempty\sPSZ\sas\sargument\sand\swe\sobviously\sdon't\sneed\sto\stest\sfor\sfile\sexistence\sany\smore.\s(CVS\s4512)
D 2007-10-24T23:03:26
F Makefile.in 30c7e3ba426ddb253b8ef037d1873425da6009a8
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -113,7 +113,7 @@ F src/mutex_w32.c 6e197765f283815496193e78e9548b5d0e53b68e
F src/os.c 8360932f1450b2b45edb608a3b184b031f7d00cc
F src/os.h b75506ab40d222300f38023acb56fe08df5ffe33
F src/os_common.h 98862f120ca6bf7a48ce8b16f158b77d00bc9d2f
F src/os_os2.c 8d8ef4462cfa1b4d824ec55c486bce86fa0ac6fc
F src/os_os2.c ea8cb86c197abbc94eb55c82f6403644c1eb9963
F src/os_os2.h c3f7d0af7e3453d1d7aa81b06c0a56f5a226530b
F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
@ -584,7 +584,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P c085d6dfc0f5849113986cb2a25e64d0c95b3dfb
R 1b4ac17574411f9b35840f7094f3e2bb
U shess
Z 7dd99f635814c93b45c657ecd5503b28
P e87c883a1235ac47ee340a31051dcd5deb369d4e
R 8e734d5fb9e62d42e48173acdc8210f0
U pweilbacher
Z a7a6afdf4d123b7113e6f3532b244c99

View File

@ -1 +1 @@
e87c883a1235ac47ee340a31051dcd5deb369d4e
8a233845f61080cca24da3672444f3e5b985da67

View File

@ -747,32 +747,32 @@ static int os2GetTempname( sqlite3_vfs *pVfs, int nBuf, char *zBuf ){
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789";
int i, j;
char zTempPath[CCHMAXPATH];
APIRET rc = NO_ERROR;
FILESTATUS3 fsts3ConfigInfo;
if( DosScanEnv( (PSZ)"TEMP", (PSZ*)&zTempPath ) ){
if( DosScanEnv( (PSZ)"TMP", (PSZ*)&zTempPath ) ){
if( DosScanEnv( (PSZ)"TMPDIR", (PSZ*)&zTempPath ) ){
PSZ zTempPath = "";
if( DosScanEnv( (PSZ)"TEMP", &zTempPath ) ){
if( DosScanEnv( (PSZ)"TMP", &zTempPath ) ){
if( DosScanEnv( (PSZ)"TMPDIR", &zTempPath ) ){
ULONG ulDriveNum = 0, ulDriveMap = 0;
DosQueryCurrentDisk( &ulDriveNum, &ulDriveMap );
sprintf( (char*)zTempPath, "%c:", (char)( 'A' + ulDriveNum - 1 ) );
}
}
}
do{
assert( nBuf>=pVfs->mxPathname );
sqlite3_snprintf(pVfs->mxPathname-17, zBuf, "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath );
j = strlen( zBuf );
sqlite3Randomness( 15, &zBuf[j] );
for( i = 0; i < 15; i++, j++ ){
zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
}
zBuf[j] = 0;
memset(&fsts3ConfigInfo, 0, sizeof(fsts3ConfigInfo));
rc = DosQueryPathInfo( (PSZ)zBuf, FIL_STANDARD,
&fsts3ConfigInfo, sizeof(FILESTATUS3) );
}while( rc != NO_ERROR );
/* strip off a trailing slashes or backslashes, otherwise we would get *
* multiple (back)slashes which causes DosOpen() to fail */
j = strlen(zTempPath);
while( j > 0 && ( zTempPath[j-1] == '\\' || zTempPath[j-1] == '/' ) ){
j--;
}
zTempPath[j] = '\0';
assert( nBuf>=pVfs->mxPathname );
sqlite3_snprintf( pVfs->mxPathname-30, zBuf,
"%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath );
j = strlen( zBuf );
sqlite3Randomness( 20, &zBuf[j] );
for( i = 0; i < 20; i++, j++ ){
zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];
}
zBuf[j] = 0;
OSTRACE2( "TEMP FILENAME: %s\n", zBuf );
return SQLITE_OK;
}