Simplify the BTree interface by shortening names. Added two new methods
for accessing the current filename and for changing the name of the
database file. (CVS 900)
FossilOrigin-Name: 185d8dc8d0c26cef36aeba6992823e5124af4056
diff --git a/src/pager.c b/src/pager.c
index 58eb8ce..37948df 100644
--- a/src/pager.c
+++ b/src/pager.c
@@ -18,7 +18,7 @@
** file simultaneously, or one process from reading the database while
** another is writing.
**
-** @(#) $Id: pager.c,v 1.79 2003/03/19 03:14:02 drh Exp $
+** @(#) $Id: pager.c,v 1.80 2003/04/06 20:44:45 drh Exp $
*/
#include "os.h" /* Must be first to enable large file support */
#include "sqliteInt.h"
@@ -966,6 +966,10 @@
** }
*/
CLR_PAGER(pPager);
+ if( pPager->zFilename!=(char*)&pPager[1] ){
+ sqliteFree(pPager->zFilename);
+ sqliteFree(pPager->zJournal);
+ }
sqliteFree(pPager);
return SQLITE_OK;
}
@@ -2026,6 +2030,50 @@
return rc;
}
+/*
+** Return the full pathname of the database file.
+*/
+const char *sqlitepager_filename(Pager *pPager){
+ return pPager->zFilename;
+}
+
+/*
+** Rename the database file
+*/
+int sqlitepager_rename(Pager *pPager, const char *zNewName){
+ char *zNew;
+ char *zJournal;
+ int nName;
+ int rc;
+
+ nName = strlen(zNewName);
+ zNew = sqliteMalloc( nName*2 + 30 );
+ if( zNew==0 ){
+ return SQLITE_NOMEM;
+ }
+ memcpy(zNew, zNewName, nName+1);
+ zJournal = &zNew[nName+1];
+ memcpy(zJournal, zNew, nName);
+ strcpy(&zJournal[nName], "-journal");
+ if( pPager->journalOpen ){
+ rc = sqliteOsRename(pPager->zJournal, zJournal);
+ if( rc ){
+ sqliteFree(zNew);
+ return rc;
+ }
+ }
+ rc = sqliteOsRename(pPager->zFilename, zNew);
+ if( rc ){
+ sqliteFree(zNew);
+ return rc;
+ }
+ if( pPager->zFilename!=(char*)&pPager[1] ){
+ sqliteFree(pPager->zFilename);
+ }
+ pPager->zFilename = zNew;
+ return SQLITE_OK;
+}
+
#ifdef SQLITE_TEST
/*
** Print a listing of all referenced pages and their ref count.