X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fextra%2Fm_sqlite3.cpp;h=ac7146e386b3a3e980dff0992753b99e0e6e1555;hb=c0aba5b728b0a921d95ec120aa638dab1520b42f;hp=54a2788ebc1a780c43e9ac95e6980cc488b9a275;hpb=68afa315fccf5d741103137cb65d613a4e9bfef1;p=user%2Fhenk%2Fcode%2Finspircd.git
diff --git a/src/modules/extra/m_sqlite3.cpp b/src/modules/extra/m_sqlite3.cpp
index 54a2788eb..ac7146e38 100644
--- a/src/modules/extra/m_sqlite3.cpp
+++ b/src/modules/extra/m_sqlite3.cpp
@@ -19,20 +19,31 @@
* along with this program. If not, see .
*/
+/// $CompilerFlags: find_compiler_flags("sqlite3")
+/// $LinkerFlags: find_linker_flags("sqlite3" "-lsqlite3")
+
+/// $PackageInfo: require_system("centos") pkgconfig sqlite-devel
+/// $PackageInfo: require_system("darwin") pkg-config sqlite3
+/// $PackageInfo: require_system("ubuntu") libsqlite3-dev pkg-config
#include "inspircd.h"
-#include
#include "modules/sql.h"
+// Fix warnings about the use of `long long` on C++03.
+#if defined __clang__
+# pragma clang diagnostic ignored "-Wc++11-long-long"
+#elif defined __GNUC__
+# pragma GCC diagnostic ignored "-Wlong-long"
+#endif
+
+#include
+
#ifdef _WIN32
# pragma comment(lib, "sqlite3.lib")
#endif
-/* $CompileFlags: pkgconfversion("sqlite3","3.3") pkgconfincludes("sqlite3","/sqlite3.h","") -Wno-pedantic */
-/* $LinkerFlags: pkgconflibs("sqlite3","/libsqlite3.so","-lsqlite3") */
-
class SQLConn;
-typedef std::map ConnMap;
+typedef insp::flat_map ConnMap;
class SQLite3Result : public SQLResult
{
@@ -83,15 +94,20 @@ class SQLConn : public SQLProvider
std::string host = tag->getString("hostname");
if (sqlite3_open_v2(host.c_str(), &conn, SQLITE_OPEN_READWRITE, 0) != SQLITE_OK)
{
- ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "WARNING: Could not open DB with id: " + tag->getString("id"));
+ // Even in case of an error conn must be closed
+ sqlite3_close(conn);
conn = NULL;
+ ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "WARNING: Could not open DB with id: " + tag->getString("id"));
}
}
~SQLConn()
{
- sqlite3_interrupt(conn);
- sqlite3_close(conn);
+ if (conn)
+ {
+ sqlite3_interrupt(conn);
+ sqlite3_close(conn);
+ }
}
void Query(SQLQuery* query, const std::string& q)
@@ -202,11 +218,6 @@ class ModuleSQLite3 : public Module
ConnMap conns;
public:
- void init() CXX11_OVERRIDE
- {
- ReadConf();
- }
-
~ModuleSQLite3()
{
ClearConns();
@@ -223,7 +234,7 @@ class ModuleSQLite3 : public Module
conns.clear();
}
- void ReadConf()
+ void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
{
ClearConns();
ConfigTagList tags = ServerInstance->Config->ConfTags("database");
@@ -237,11 +248,6 @@ class ModuleSQLite3 : public Module
}
}
- void OnRehash(User* user) CXX11_OVERRIDE
- {
- ReadConf();
- }
-
Version GetVersion() CXX11_OVERRIDE
{
return Version("sqlite3 provider", VF_VENDOR);