X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fextra%2Fm_sqlite3.cpp;h=932d427d2451a8f9768438b575ddaaa74aa9773c;hb=0a329440bd1d0fa642ce2f3e14bc88125377b5bd;hp=0f596a0f7bc65a2be247d2e841a452093e80f84b;hpb=b6f57c0f06f4905b04de6ec2069522d2263626c4;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/extra/m_sqlite3.cpp b/src/modules/extra/m_sqlite3.cpp index 0f596a0f7..932d427d2 100644 --- a/src/modules/extra/m_sqlite3.cpp +++ b/src/modules/extra/m_sqlite3.cpp @@ -1,10 +1,16 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2009-2010 Daniel De Graaf - * Copyright (C) 2007-2009 Dennis Friis - * Copyright (C) 2007, 2009 Craig Edwards - * Copyright (C) 2008 Pippijn van Steenhoven + * Copyright (C) 2019 linuxdaemon + * Copyright (C) 2015 Daniel Vassdal + * Copyright (C) 2013-2014, 2016-2019 Sadie Powell + * Copyright (C) 2013-2014, 2016 Attila Molnar + * Copyright (C) 2012, 2019 Robby + * Copyright (C) 2012, 2016 Adam + * Copyright (C) 2012 ChrisTX + * Copyright (C) 2010 Daniel De Graaf + * Copyright (C) 2007, 2009 Craig Edwards + * Copyright (C) 2007 Dennis Friis * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -22,6 +28,7 @@ /// $CompilerFlags: find_compiler_flags("sqlite3") /// $LinkerFlags: find_linker_flags("sqlite3" "-lsqlite3") +/// $PackageInfo: require_system("arch") pkgconf sqlite /// $PackageInfo: require_system("centos") pkgconfig sqlite-devel /// $PackageInfo: require_system("darwin") pkg-config sqlite3 /// $PackageInfo: require_system("debian") libsqlite3-dev pkg-config @@ -30,6 +37,10 @@ #include "inspircd.h" #include "modules/sql.h" +#ifdef __GNUC__ +# pragma GCC diagnostic push +#endif + // Fix warnings about the use of `long long` on C++03. #if defined __clang__ # pragma clang diagnostic ignored "-Wc++11-long-long" @@ -39,6 +50,10 @@ #include +#ifdef __GNUC__ +# pragma GCC diagnostic pop +#endif + #ifdef _WIN32 # pragma comment(lib, "sqlite3.lib") #endif @@ -82,6 +97,19 @@ class SQLite3Result : public SQL::Result { result.assign(columns.begin(), columns.end()); } + + bool HasColumn(const std::string& column, size_t& index) CXX11_OVERRIDE + { + for (size_t i = 0; i < columns.size(); ++i) + { + if (columns[i] == column) + { + index = i; + return true; + } + } + return false; + } }; class SQLConn : public SQL::Provider @@ -90,7 +118,9 @@ class SQLConn : public SQL::Provider reference config; public: - SQLConn(Module* Parent, ConfigTag* tag) : SQL::Provider(Parent, "SQL/" + tag->getString("id")), config(tag) + SQLConn(Module* Parent, ConfigTag* tag) + : SQL::Provider(Parent, tag->getString("id")) + , config(tag) { std::string host = tag->getString("hostname"); if (sqlite3_open_v2(host.c_str(), &conn, SQLITE_OPEN_READWRITE, 0) != SQLITE_OK) @@ -161,6 +191,7 @@ class SQLConn : public SQL::Provider void Submit(SQL::Query* query, const std::string& q) CXX11_OVERRIDE { + ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Executing SQLite3 query: " + q); Query(query, q); delete query; } @@ -241,7 +272,7 @@ class ModuleSQLite3 : public Module ConfigTagList tags = ServerInstance->Config->ConfTags("database"); for(ConfigIter i = tags.first; i != tags.second; i++) { - if (i->second->getString("module", "sqlite") != "sqlite") + if (!stdalgo::string::equalsci(i->second->getString("module"), "sqlite")) continue; SQLConn* conn = new SQLConn(this, i->second); conns.insert(std::make_pair(i->second->getString("id"), conn)); @@ -251,7 +282,7 @@ class ModuleSQLite3 : public Module Version GetVersion() CXX11_OVERRIDE { - return Version("sqlite3 provider", VF_VENDOR); + return Version("Provides the ability for SQL modules to query a SQLite 3 database.", VF_VENDOR); } };