| Index: src/engine/main.cpp |
| =================================================================== |
| --- a/src/engine/main.cpp |
| +++ b/src/engine/main.cpp |
| @@ -1,12 +1,13 @@ |
| #include "stdafx.h" |
| #include "../shared/AutoHandle.h" |
| #include "../shared/Communication.h" |
| +#include "../shared/Version.h" |
| #include "Debug.h" |
| #include "Utils.h" |
| namespace |
| { |
| std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; |
| std::string ToUtf8String(std::wstring str) |
| @@ -157,36 +158,46 @@ namespace |
| } |
| // TODO: Keep the pipe open until the client disconnects |
| return 0; |
| } |
| } |
| -std::auto_ptr<AdblockPlus::FilterEngine> CreateFilterEngine() |
| +std::auto_ptr<AdblockPlus::FilterEngine> CreateFilterEngine(const std::wstring& locale) |
| { |
| - // TODO: Pass appInfo in, which should be sent by the client |
| - AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(); |
| + AdblockPlus::AppInfo appInfo; |
| + appInfo.version = ToUtf8String(IEPLUGIN_VERSION); |
| + appInfo.name = "adblockplusie"; |
| + appInfo.platform = "msie"; |
| + appInfo.locale = ToUtf8String(locale); |
| + |
| + AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(appInfo); |
| std::string dataPath = ToUtf8String(GetAppDataPath()); |
| dynamic_cast<AdblockPlus::DefaultFileSystem*>(jsEngine->GetFileSystem().get())->SetBasePath(dataPath); |
| std::auto_ptr<AdblockPlus::FilterEngine> filterEngine(new AdblockPlus::FilterEngine(jsEngine)); |
| return filterEngine; |
| } |
| int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) |
| { |
| // TODO: Attempt to create the pipe first, and exit immediately if this |
| // fails. Since multiple instances of the engine could be running, |
| // this may need named mutices to avoid race conditions. |
| // Note that as soon as the pipe is created first, we can reduce the |
| // client timeout after CreateProcess(), but should increase the one |
| // in WaitNamedPipe(). |
| - filterEngine = CreateFilterEngine(); |
| + int argc; |
| + LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc); |
| + std::wstring locale(argc >= 1 ? argv[0] : L""); |
| + LocalFree(argv); |
| + |
| + filterEngine = CreateFilterEngine(locale); |
| for (;;) |
| { |
| try |
| { |
| Communication::Pipe* pipe = new Communication::Pipe(Communication::pipeName, |
| Communication::Pipe::MODE_CREATE); |