diff --git a/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/RenX.ExtraLogging/RenX_ExtraLogging.cpp index db41983..39f2cf8 100644 --- a/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2014 Justin James. + * Copyright (C) 2014-2015 Justin James. * * This license must be preserved. * Any applications, libraries, or code which make any use of any @@ -22,10 +22,7 @@ RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin() { - const Jupiter::CStringS logFile = Jupiter::IRC::Client::Config->get(STRING_LITERAL_AS_REFERENCE("RenX.ExtraLogging"), STRING_LITERAL_AS_REFERENCE("LogFile")); - if (logFile.isEmpty() == false) - RenX_ExtraLoggingPlugin::file = fopen(logFile.c_str(), "a+b"); - else RenX_ExtraLoggingPlugin::file = nullptr; + RenX_ExtraLoggingPlugin::init(); } RenX_ExtraLoggingPlugin::~RenX_ExtraLoggingPlugin() @@ -34,9 +31,28 @@ RenX_ExtraLoggingPlugin::~RenX_ExtraLoggingPlugin() fclose(RenX_ExtraLoggingPlugin::file); } +int RenX_ExtraLoggingPlugin::OnRehash() +{ + if (RenX_ExtraLoggingPlugin::file != nullptr) + fclose(RenX_ExtraLoggingPlugin::file); + return !RenX_ExtraLoggingPlugin::init(); +} + +bool RenX_ExtraLoggingPlugin::init() +{ + RenX_ExtraLoggingPlugin::printToConsole = Jupiter::IRC::Client::Config->getBool(STRING_LITERAL_AS_REFERENCE("RenX.ExtraLogging"), STRING_LITERAL_AS_REFERENCE("PrintToConsole"), true); + const Jupiter::CStringS logFile = Jupiter::IRC::Client::Config->get(STRING_LITERAL_AS_REFERENCE("RenX.ExtraLogging"), STRING_LITERAL_AS_REFERENCE("LogFile")); + if (logFile.isEmpty() == false) + RenX_ExtraLoggingPlugin::file = fopen(logFile.c_str(), "a+b"); + else + RenX_ExtraLoggingPlugin::file = nullptr; + return RenX_ExtraLoggingPlugin::file != nullptr || RenX_ExtraLoggingPlugin::printToConsole; +} + void RenX_ExtraLoggingPlugin::RenX_OnRaw(RenX::Server *server, const Jupiter::ReadableString &raw) { - raw.println(stdout); + if (RenX_ExtraLoggingPlugin::printToConsole) + raw.println(stdout); if (RenX_ExtraLoggingPlugin::file != nullptr) { const Jupiter::ReadableString &prefix = server->getPrefix(); @@ -50,11 +66,14 @@ void RenX_ExtraLoggingPlugin::RenX_OnRaw(RenX::Server *server, const Jupiter::Re } } - - // Plugin instantiation and entry point. RenX_ExtraLoggingPlugin pluginInstance; +extern "C" __declspec(dllexport) bool load() +{ + return pluginInstance.init(); +} + extern "C" __declspec(dllexport) Jupiter::Plugin *getPlugin() { return &pluginInstance; diff --git a/RenX.ExtraLogging/RenX_ExtraLogging.h b/RenX.ExtraLogging/RenX_ExtraLogging.h index d4f8a8b..9ecc717 100644 --- a/RenX.ExtraLogging/RenX_ExtraLogging.h +++ b/RenX.ExtraLogging/RenX_ExtraLogging.h @@ -1,5 +1,5 @@ /** - * Copyright (C) 2014 Justin James. + * Copyright (C) 2014-2015 Justin James. * * This license must be preserved. * Any applications, libraries, or code which make any use of any @@ -28,13 +28,19 @@ public: // RenX::Plugin public: // Jupiter::Plugin const Jupiter::ReadableString &getName() override { return name; } + int OnRehash() override; + +public: // RenX_ExtraLoggingPlugin + + bool init(); RenX_ExtraLoggingPlugin(); ~RenX_ExtraLoggingPlugin(); private: STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.ExtraLogging"); - FILE *file; // Replace with a Jupiter::File after making Jupiter::File. (Also remove constructor/destructor) + bool printToConsole; + FILE *file; }; #endif // _RENX_EXTRALOGGING_H_HEADER \ No newline at end of file