X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ede91934442fd804d7b818971a44e3ad795cb01f..afcbfd1a09e22ff4839ba5db42047c96f355506c:/projects/stargazer/store_loader.cpp diff --git a/projects/stargazer/store_loader.cpp b/projects/stargazer/store_loader.cpp index 11fd804f..1529a2cc 100644 --- a/projects/stargazer/store_loader.cpp +++ b/projects/stargazer/store_loader.cpp @@ -30,12 +30,12 @@ #include +#include "stg/common.h" +#include "stg/store.h" #include "store_loader.h" -#include "common.h" -#include "store.h" -#include "settings.h" +#include "settings_impl.h" -STORE_LOADER::STORE_LOADER(const SETTINGS & settings) +STORE_LOADER::STORE_LOADER(const SETTINGS_IMPL & settings) : isLoaded(false), handle(NULL), plugin(NULL), @@ -52,16 +52,17 @@ Unload(); bool STORE_LOADER::Load() { -printfd(__FILE__, "STORE_LOADER::Load()\n"); if (isLoaded) { + errorStr = "Store plugin '" + pluginFileName + "' was already loaded!"; + printfd(__FILE__, "STORE_LOADER::Load() - %s\n", errorStr.c_str()); return false; } if (pluginFileName.empty()) { errorStr = "Empty store plugin filename"; - printfd(__FILE__, "STORE_LOADER::Load - %s\n", errorStr.c_str()); + printfd(__FILE__, "STORE_LOADER::Load() - %s\n", errorStr.c_str()); return true; } @@ -71,18 +72,18 @@ if (!handle) { errorStr = "Error loading plugin '" + pluginFileName + "': '" + dlerror() + "'"; - printfd(__FILE__, "STORE_LOADER::Load - %s\n", errorStr.c_str()); + printfd(__FILE__, "STORE_LOADER::Load() - %s\n", errorStr.c_str()); return true; } isLoaded = true; -BASE_STORE * (*GetStore)(); -GetStore = (BASE_STORE * (*)())dlsym(handle, "GetStore"); +STORE * (*GetStore)(); +GetStore = reinterpret_cast(dlsym(handle, "GetStore")); if (!GetStore) { - errorStr = "GetStore not found."; - printfd(__FILE__, "STORE_LOADER::Load - %s\n", errorStr.c_str()); + errorStr = std::string("GetStore() not found! ") + dlerror(); + printfd(__FILE__, "STORE_LOADER::Load() - %s\n", errorStr.c_str()); return true; } @@ -90,8 +91,8 @@ plugin = GetStore(); if (!plugin) { - errorStr = "NULL store plugin"; - printfd(__FILE__, "STORE_LOADER::Load - %s\n"); + errorStr = "Plugin was not created!"; + printfd(__FILE__, "STORE_LOADER::Load() - %s\n"); return true; } @@ -99,7 +100,7 @@ plugin->SetSettings(storeSettings); if (plugin->ParseSettings()) { errorStr = plugin->GetStrError(); - printfd(__FILE__, "Failed to parse settings. Plugin reports: '%s'\n", errorStr.c_str()); + printfd(__FILE__, "STORE_LOADER::Load() - Failed to parse settings. Plugin reports: '%s'\n", errorStr.c_str()); return true; } @@ -111,15 +112,17 @@ bool STORE_LOADER::Unload() printfd(__FILE__, "STORE_LOADER::Unload()\n"); if (!isLoaded) { - return false; + return true; } +delete plugin; + if (dlclose(handle)) { - errorStr = "Failed to unload plugin: '"; + errorStr = "Failed to unload plugin '"; + errorStr += pluginFileName + "': "; errorStr += dlerror(); - errorStr += "'"; - printfd(__FILE__, "STORE_LOADER::Unload - %s\n", errorStr.c_str()); + printfd(__FILE__, "STORE_LOADER::Unload() - %s\n", errorStr.c_str()); return true; }