| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2015 Eyeo GmbH |    3  * Copyright (C) 2006-2015 Eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   84 } |   84 } | 
|   85  |   85  | 
|   86 std::vector<std::wstring> ToUtf16Strings(const std::vector<std::string>& values) |   86 std::vector<std::wstring> ToUtf16Strings(const std::vector<std::string>& values) | 
|   87 { |   87 { | 
|   88   std::vector<std::wstring> result; |   88   std::vector<std::wstring> result; | 
|   89   result.reserve(values.size()); |   89   result.reserve(values.size()); | 
|   90   transform(values.begin(), values.end(), back_inserter(result), ToUtf16String); |   90   transform(values.begin(), values.end(), back_inserter(result), ToUtf16String); | 
|   91   return result; |   91   return result; | 
|   92 } |   92 } | 
|   93  |   93  | 
 |   94 namespace | 
 |   95 { | 
 |   96   std::wstring GetModulePath(HINSTANCE hInstance) | 
 |   97   { | 
 |   98     std::vector<WCHAR> path(MAX_PATH); | 
 |   99     int length = GetModuleFileNameW(hInstance, &path[0], static_cast<DWORD>(path
     .size())); | 
 |  100  | 
 |  101     while (length == path.size()) | 
 |  102     { | 
 |  103       // Buffer too small, double buffer size | 
 |  104       path.resize(path.size() * 2); | 
 |  105       length = GetModuleFileNameW(hInstance, &path[0], static_cast<DWORD>(path.s
     ize())); | 
 |  106     } | 
 |  107  | 
 |  108     try | 
 |  109     { | 
 |  110       if (length == 0) | 
 |  111         throw std::runtime_error("Failed determining module path"); | 
 |  112  | 
 |  113       std::vector<WCHAR>::reverse_iterator it = std::find(path.rbegin(), path.re
     nd(), L'\\'); | 
 |  114       if (it == path.rend()) | 
 |  115         throw std::runtime_error("Unexpected plugin path, no backslash found"); | 
 |  116  | 
 |  117       return std::wstring(path.begin(), it.base()); | 
 |  118     } | 
 |  119     catch (const std::exception&) | 
 |  120     { | 
 |  121       return std::wstring(); | 
 |  122     } | 
 |  123   } | 
 |  124 } | 
 |  125  | 
|   94 std::wstring GetDllDir() |  126 std::wstring GetDllDir() | 
|   95 { |  127 { | 
|   96   std::vector<WCHAR> path(MAX_PATH); |  128   return GetModulePath((HINSTANCE)&__ImageBase); | 
|   97   int length = GetModuleFileNameW((HINSTANCE)&__ImageBase, &path[0], static_cast
     <DWORD>(path.size())); |  129 } | 
|   98  |  130  | 
|   99   while (length == path.size()) |  131 std::wstring GetExeDir() | 
|  100   { |  132 { | 
|  101     // Buffer too small, double buffer size |  133   return GetModulePath(nullptr); | 
|  102     path.resize(path.size() * 2); |  | 
|  103     length = GetModuleFileNameW((HINSTANCE)&__ImageBase, &path[0], static_cast<D
     WORD>(path.size())); |  | 
|  104   } |  | 
|  105  |  | 
|  106   try |  | 
|  107   { |  | 
|  108     if (length == 0) |  | 
|  109       throw std::runtime_error("Failed determining module path"); |  | 
|  110  |  | 
|  111     std::vector<WCHAR>::reverse_iterator it = std::find(path.rbegin(), path.rend
     (), L'\\'); |  | 
|  112     if (it == path.rend()) |  | 
|  113       throw std::runtime_error("Unexpected plugin path, no backslash found"); |  | 
|  114  |  | 
|  115     return std::wstring(path.begin(), it.base()); |  | 
|  116   } |  | 
|  117   catch (const std::exception&) |  | 
|  118   { |  | 
|  119     return std::wstring(); |  | 
|  120   } |  | 
|  121 } |  134 } | 
|  122  |  135  | 
|  123 std::wstring GetAppDataPath() |  136 std::wstring GetAppDataPath() | 
|  124 { |  137 { | 
|  125   if (appDataPath.empty()) |  138   if (appDataPath.empty()) | 
|  126   { |  139   { | 
|  127     if (IsWindowsVistaOrLater()) |  140     if (IsWindowsVistaOrLater()) | 
|  128     { |  141     { | 
|  129       WCHAR* pathBuffer; |  142       WCHAR* pathBuffer; | 
|  130       if (FAILED(SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, 0, &pathBuffe
     r))) |  143       if (FAILED(SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, 0, &pathBuffe
     r))) | 
|  131         throw std::runtime_error("Unable to find app data directory"); |  144         throw std::runtime_error("Unable to find app data directory"); | 
|  132       appDataPath.assign(pathBuffer); |  145       appDataPath.assign(pathBuffer); | 
|  133       CoTaskMemFree(pathBuffer); |  146       CoTaskMemFree(pathBuffer); | 
|  134     } |  147     } | 
|  135     else |  148     else | 
|  136     { |  149     { | 
|  137       std::auto_ptr<wchar_t> pathBuffer(new wchar_t[MAX_PATH]); |  150       std::auto_ptr<wchar_t> pathBuffer(new wchar_t[MAX_PATH]); | 
|  138       if (!SHGetSpecialFolderPathW(0, pathBuffer.get(), CSIDL_LOCAL_APPDATA, tru
     e)) |  151       if (!SHGetSpecialFolderPathW(0, pathBuffer.get(), CSIDL_LOCAL_APPDATA, tru
     e)) | 
|  139         throw std::runtime_error("Unable to find app data directory"); |  152         throw std::runtime_error("Unable to find app data directory"); | 
|  140       appDataPath.assign(pathBuffer.get()); |  153       appDataPath.assign(pathBuffer.get()); | 
|  141     } |  154     } | 
|  142     appDataPath += L"\\Adblock Plus for IE"; |  155     appDataPath += L"\\Adblock Plus for IE"; | 
|  143  |  156  | 
|  144     // Ignore errors here, this isn't a critical operation |  157     // Ignore errors here, this isn't a critical operation | 
|  145     ::CreateDirectoryW(appDataPath.c_str(), NULL); |  158     ::CreateDirectoryW(appDataPath.c_str(), NULL); | 
|  146   } |  159   } | 
|  147   return appDataPath; |  160   return appDataPath; | 
|  148 } |  161 } | 
|  149  |  162  | 
|  150 void ReplaceString(std::wstring& input, const std::wstring placeholder, const st
     d::wstring replacement) |  163 void ReplaceString(std::wstring& input, const std::wstring& placeholder, const s
     td::wstring& replacement) | 
|  151 { |  164 { | 
|  152   size_t replaceStart = input.find(placeholder); |  165   size_t replaceStart = input.find(placeholder); | 
|  153   if (replaceStart != std::string::npos) |  166   if (replaceStart != std::string::npos) | 
|  154   { |  167   { | 
|  155     input.replace(replaceStart, placeholder.length(), replacement); |  168     input.replace(replaceStart, placeholder.length(), replacement); | 
|  156   } |  169   } | 
|  157 } |  170 } | 
|  158  |  171  | 
|  159 std::wstring GetSchemeAndHierarchicalPart(const std::wstring& url) |  172 std::wstring GetSchemeAndHierarchicalPart(const std::wstring& url) | 
|  160 { |  173 { | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  174     return L""; |  187     return L""; | 
|  175   } |  188   } | 
|  176   auto queryStringBeginsAt = questionSignPos + 1; |  189   auto queryStringBeginsAt = questionSignPos + 1; | 
|  177   auto endQueryStringPos = url.find(L'#', queryStringBeginsAt); |  190   auto endQueryStringPos = url.find(L'#', queryStringBeginsAt); | 
|  178   if (endQueryStringPos == std::wstring::npos) |  191   if (endQueryStringPos == std::wstring::npos) | 
|  179   { |  192   { | 
|  180     endQueryStringPos = url.length(); |  193     endQueryStringPos = url.length(); | 
|  181   } |  194   } | 
|  182   return url.substr(queryStringBeginsAt, endQueryStringPos - queryStringBeginsAt
     ); |  195   return url.substr(queryStringBeginsAt, endQueryStringPos - queryStringBeginsAt
     ); | 
|  183 } |  196 } | 
| OLD | NEW |