From 4dfb3cc4b09102433b762ff804241f43c5883d22 Mon Sep 17 00:00:00 2001 From: "Wesley J. Landaker" Date: Tue, 18 Feb 2014 09:18:40 -0700 Subject: [PATCH] Support opening a database with a custom VFS. --- src/Database.cpp | 8 ++++---- src/Database.h | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Database.cpp b/src/Database.cpp index 9a7a294..f615ca1 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -23,11 +23,11 @@ namespace SQLite // Open the provided database UTF-8 filename with SQLITE_OPEN_xxx provided flags. -Database::Database(const char* apFilename, const int aFlags /*= SQLITE_OPEN_READONLY*/) : // throw(SQLite::Exception) +Database::Database(const char* apFilename, const int aFlags /*= SQLITE_OPEN_READONLY*/, const char* apVfs /*= NULL*/) : // throw(SQLite::Exception) mpSQLite(NULL), mFilename(apFilename) { - int ret = sqlite3_open_v2(apFilename, &mpSQLite, aFlags, NULL); + int ret = sqlite3_open_v2(apFilename, &mpSQLite, aFlags, apVfs); if (SQLITE_OK != ret) { std::string strerr = sqlite3_errmsg(mpSQLite); @@ -37,11 +37,11 @@ Database::Database(const char* apFilename, const int aFlags /*= SQLITE_OPEN_READ } // Open the provided database UTF-8 filename with SQLITE_OPEN_xxx provided flags. -Database::Database(const std::string& aFilename, const int aFlags /*= SQLITE_OPEN_READONLY*/) : // throw(SQLite::Exception) +Database::Database(const std::string& aFilename, const int aFlags /*= SQLITE_OPEN_READONLY*/, const std::string& aVfs /*= ""*/) : // throw(SQLite::Exception) mpSQLite(NULL), mFilename(aFilename) { - int ret = sqlite3_open_v2(aFilename.c_str(), &mpSQLite, aFlags, NULL); + int ret = sqlite3_open_v2(aFilename.c_str(), &mpSQLite, aFlags, aVfs.empty() ? NULL : aVfs.c_str()); if (SQLITE_OK != ret) { std::string strerr = sqlite3_errmsg(mpSQLite); diff --git a/src/Database.h b/src/Database.h index 0f8431e..d8ccab6 100644 --- a/src/Database.h +++ b/src/Database.h @@ -53,8 +53,9 @@ public: * * @param[in] apFilename UTF-8 path/uri to the database file ("filename" sqlite3 parameter) * @param[in] aFlags SQLITE_OPEN_READONLY/SQLITE_OPEN_READWRITE/SQLITE_OPEN_CREATE... + * @param[in] apVfs UTF-8 name of custom VFS to use, or nullptr for sqlite3 default */ - Database(const char* apFilename, const int aFlags = SQLITE_OPEN_READONLY); // throw(SQLite::Exception); + Database(const char* apFilename, const int aFlags = SQLITE_OPEN_READONLY, const char * apVfs = NULL); // throw(SQLite::Exception); /** * @brief Open the provided database UTF-8 filename. @@ -68,8 +69,9 @@ public: * * @param[in] aFilename UTF-8 path/uri to the database file ("filename" sqlite3 parameter) * @param[in] aFlags SQLITE_OPEN_READONLY/SQLITE_OPEN_READWRITE/SQLITE_OPEN_CREATE... + * @param[in] aVfs UTF-8 name of custom VFS to use, or empty string for sqlite3 default */ - Database(const std::string& aFilename, const int aFlags = SQLITE_OPEN_READONLY); // throw(SQLite::Exception); + Database(const std::string& aFilename, const int aFlags = SQLITE_OPEN_READONLY, const std::string& aVfs = ""); // throw(SQLite::Exception); /** * @brief Close the SQLite database connection.