]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
:-) (CVS 1696)
authordrh <drh@noemail.net>
Fri, 2 Jun 2000 02:09:23 +0000 (02:09 +0000)
committerdrh <drh@noemail.net>
Fri, 2 Jun 2000 02:09:23 +0000 (02:09 +0000)
FossilOrigin-Name: 80d925b82b176df7f73a1747a6ed711ac3d9a0d3

manifest
manifest.uuid
src/dbbe.c

index 1c194ac9469f7579539cd25398fdec0bb60f45d6..768afc75df009041cbb71fa1b74d78e2288e93fd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C :-)\s(CVS\s36)
-D 2000-06-02T01:51:20
+C :-)\s(CVS\s1696)
+D 2000-06-02T02:09:23
 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
 F Makefile.in 7ac2fef265940d93a544cb454efa836451559a71
 F README 6b5960603c7f8bf42fc022b4b6436f242f238dbb
@@ -7,7 +7,7 @@ F configure 00a5b5c82147a576fa6e82d7c1b0d55c321d6d2c x
 F configure.in 6ccfd5fc80517f7cfe605a7fc7e0f62d962a233c
 F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47
 F src/build.c f56c47f08c2f01fd640abb920c5da6b6614fbf3f
-F src/dbbe.c a217499fb539c5b5db99f1d37c20276b6f0d60a8
+F src/dbbe.c ce2d78a92a14c874443fda3069fde06d330807df
 F src/dbbe.h a8a46f71238e0f09f3ec08fd9d1c8c7f4cdc49bf
 F src/delete.c e11433c14ed5cc8553cba14296b3baa3c23054bc
 F src/expr.c 91970700e3e39b2b725b028c166f588a5bb0c038
@@ -45,7 +45,7 @@ F www/c_interface.tcl f875864edf7974157d1c257ca08de854660882a5
 F www/changes.tcl 37f4906f0b03f2160d2b2e4ed3cedb0b91d253cb
 F www/index.tcl 001f8c8c4edbe20e25c508005a12f2f265f84c9c
 F www/sqlite.tcl 2a0056dd6d78839636176b770d9f37d12e66660e
-P a57ecd606c8caa67db240d1a4bc46c0a590fde0c
-R 565c3c2b5d29c5df35ef5486eca899a0
+P d3c31defbaf25f470d0977c39325890ab8bad054
+R 1972cc5d0dec5079acb55afe886914ee
 U drh
-Z e4f014f9c30a1cd8b033307faacb4b20
+Z b89a6085ec647850e84316905c71acda
index 4318437ebe6831e349664220b29db30c8cc28ec1..3c1a1f58b28a4085419361cf84eb5fc6a2dd154f 100644 (file)
@@ -1 +1 @@
-d3c31defbaf25f470d0977c39325890ab8bad054
\ No newline at end of file
+80d925b82b176df7f73a1747a6ed711ac3d9a0d3
\ No newline at end of file
index 86001ca4b06afc416f227d65a7501ae21ff3a5be..ec3cb33a427694bc7f3b3e05b63a36e2d549d90d 100644 (file)
@@ -30,7 +30,7 @@
 ** relatively simple to convert to a different database such
 ** as NDBM, SDBM, or BerkeleyDB.
 **
-** $Id: dbbe.c,v 1.9 2000/06/02 01:51:20 drh Exp $
+** $Id: dbbe.c,v 1.10 2000/06/02 02:09:23 drh Exp $
 */
 #include "sqliteInt.h"
 #include <gdbm.h>
@@ -71,6 +71,7 @@ struct Dbbe {
   BeFile *pOpen;     /* List of open files */
   int nTemp;         /* Number of temporary files created */
   FILE **apTemp;     /* Space to hold temporary file pointers */
+  char **azTemp;     /* Names of the temporary files */
   struct rc4 rc4;    /* The random number generator */
 };
 
@@ -182,12 +183,25 @@ Dbbe *sqliteDbbeOpen(
 */
 void sqliteDbbeClose(Dbbe *pBe){
   BeFile *pFile, *pNext;
+  int i;
   for(pFile=pBe->pOpen; pFile; pFile=pNext){
     pNext = pFile->pNext;
     gdbm_close(pFile->dbf);
     memset(pFile, 0, sizeof(*pFile));   
     sqliteFree(pFile);
   }
+  for(i=0; i<pBe->nTemp; i++){
+    if( pBe->apTemp[i]!=0 ){
+      unlink(pBe->azTemp[i]);
+      fclose(pBe->apTemp[i]);
+      sqliteFree(pBe->azTemp[i]);
+      pBe->apTemp[i] = 0;
+      pBe->azTemp[i] = 0;
+      break;
+    }
+  }
+  sqliteFree(pBe->azTemp);
+  sqliteFree(pBe->apTemp);
   memset(pBe, 0, sizeof(*pBe));
   sqliteFree(pBe);
 }
@@ -604,6 +618,7 @@ int sqliteDbbeOpenTempFile(Dbbe *pBe, FILE **ppFile){
   if( i>=pBe->nTemp ){
     pBe->nTemp++;
     pBe->apTemp = sqliteRealloc(pBe->apTemp, pBe->nTemp*sizeof(FILE*) );
+    pBe->azTemp = sqliteRealloc(pBe->azTemp, pBe->nTemp*sizeof(char*) );
   }
   if( pBe->apTemp==0 ){
     *ppFile = 0;
@@ -620,8 +635,11 @@ int sqliteDbbeOpenTempFile(Dbbe *pBe, FILE **ppFile){
   *ppFile = pBe->apTemp[i] = fopen(zFile, "w+");
   if( pBe->apTemp[i]==0 ){
     rc = SQLITE_ERROR;
+    sqliteFree(zFile);
+    pBe->azTemp[i] = 0;
+  }else{
+    pBe->azTemp[i] = zFile;
   }
-  sqliteFree(zFile);
   return rc;
 }
 
@@ -632,14 +650,10 @@ void sqliteDbbeCloseTempFile(Dbbe *pBe, FILE *f){
   int i;
   for(i=0; i<pBe->nTemp; i++){
     if( pBe->apTemp[i]==f ){
-      char *zFile;
-      char zBuf[30];
-      sprintf(zBuf, "/_temp_%d~", i);
-      zFile = 0;
-      sqliteSetString(&zFile, pBe->zDir, zBuf, 0);
-      unlink(zFile);
-      sqliteFree(zFile);
+      unlink(pBe->azTemp[i]);
+      sqliteFree(pBe->azTemp[i]);
       pBe->apTemp[i] = 0;
+      pBe->azTemp[i] = 0;
       break;
     }
   }