Index: base/ATLRegMapEx.h |
diff --git a/base/ATLRegMapEx.h b/base/ATLRegMapEx.h |
deleted file mode 100644 |
index 8e793941689fce86bae75fcd60cc2307c0c0563c..0000000000000000000000000000000000000000 |
--- a/base/ATLRegMapEx.h |
+++ /dev/null |
@@ -1,325 +0,0 @@ |
-// Copyright 2005-2009 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
-// |
-// Extension to DECLARE_REGISTRY_RESOURCEID that makes adding stuff to |
-// your reg file as simple as using an atl macro map. |
-// |
-// Adapted from http://thecodeproject.com/atl/RegistryMap.asp |
-/* |
- * Defines a 'registry' map for adding variables to rgs files. |
- * Original Code Copyright 2001-2003 Michael Geddes. All rights reserved. |
- * Modified Code Copyright 2005 Google Inc. |
- */ |
- |
-/* use this as your RGS file -- remove or add parameters as you see fit |
-// |
-// The ATL registrar requires single quotes to be escaped in substitution data |
-// enclosed in single quotes in the RGS file. Since the registry map is not |
-// aware of which data fields are quoted, to err on the side of caution, all |
-// _ATL_REGMAP_ENTRYKeeper constructors escape szData. It is also important to |
-// enclose all substitutions in RGS files in single quotes, as shown in the |
-// example here: |
- |
-HKCR |
-{ |
- '%PROGID%.%VERSION%' = s '%DESCRIPTION%' |
- { |
- CLSID = s '%CLSID%' |
- } |
- '%PROGID%' = s '%DESCRIPTION%' |
- { |
- CLSID = s '%CLSID%' |
- CurVer = s '%PROGID%.%VERSION%' |
- } |
- NoRemove CLSID |
- { |
- ForceRemove '%CLSID%' = s '%DESCRIPTION%' |
- { |
- ProgID = s '%PROGID%.%VERSION%' |
- VersionIndependentProgID = s '%PROGID%' |
- ForceRemove 'Programmable' |
- InprocServer32 = s '%MODULE%' |
- { |
- val ThreadingModel = s '%THREADING%' |
- } |
- 'TypeLib' = s '%LIBID%' |
- } |
- } |
-} |
- |
-*/ |
- |
-#ifndef OMAHA_BASE_ATLREGMAPEX_H__ |
-#define OMAHA_BASE_ATLREGMAPEX_H__ |
- |
-#include <atlbase.h> |
-#include <atlconv.h> |
-#include <atlstr.h> |
-#include "omaha/base/app_util.h" |
-#include "omaha/base/error.h" |
-#include "omaha/base/path.h" |
-#include "omaha/base/statregex.h" |
-#include "omaha/base/utils.h" |
- |
-namespace omaha { |
- |
-struct _ATL_REGMAP_ENTRYKeeper : public _ATL_REGMAP_ENTRY { |
- // Returns a new Olestr that needs to be freed by caller. |
- LPCOLESTR NewKeyOlestr(LPCTSTR tstr) { |
- CT2COLE olestr(tstr); |
- int alloc_length = lstrlen(olestr) + 1; |
- LPOLESTR new_olestr = new OLECHAR[alloc_length]; |
- if (new_olestr) { |
- lstrcpyn(new_olestr, olestr, alloc_length); |
- } |
- return new_olestr; |
- } |
- |
- // Escapes single quotes and returns a new Olestr that needs to be freed by |
- // caller. |
- LPCOLESTR NewDataOlestr(LPCTSTR tstr) { |
- CT2COLE olestr(tstr); |
- |
- CStringW escaped_str; |
- int alloc_length = lstrlen(olestr) * 2 + 1; |
- ATL::CAtlModule::EscapeSingleQuote(CStrBufW(escaped_str, alloc_length), |
- alloc_length, |
- olestr); |
- |
- alloc_length = escaped_str.GetLength() + 1; |
- LPOLESTR new_escaped_str = new OLECHAR[alloc_length]; |
- if (new_escaped_str) { |
- lstrcpyn(new_escaped_str, escaped_str, alloc_length); |
- } |
- return new_escaped_str; |
- } |
- |
- _ATL_REGMAP_ENTRYKeeper() { |
- szKey = NULL; |
- szData = NULL; |
- } |
- |
- // REGMAP_ENTRY(x, y) |
- _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr, LPCWSTR data_tstr) { |
- szKey = NewKeyOlestr(key_tstr); |
- szData = NewDataOlestr(CW2T(data_tstr)); |
- } |
- |
- // REGMAP_ENTRY(x, y) |
- _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr, LPCSTR data_tstr) { |
- szKey = NewKeyOlestr(key_tstr); |
- szData = NewDataOlestr(CA2T(data_tstr)); |
- } |
- |
- // REGMAP_MODULE(x) |
- explicit _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr) { |
- szKey = NewKeyOlestr(key_tstr); |
- szData = NewDataOlestr(EnclosePathIfExe(app_util::GetCurrentModulePath())); |
- } |
- |
- // REGMAP_MODULE2(x, modulename) |
- _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr, |
- LPCTSTR module_name_tstr, |
- bool /* is_relative_to_current_module */) { |
- szKey = NewKeyOlestr(key_tstr); |
- szData = NULL; |
- |
- CStringW full_module_name(app_util::GetCurrentModuleDirectory()); |
- full_module_name += _T("\\"); |
- full_module_name += module_name_tstr; |
- szData = NewDataOlestr(EnclosePathIfExe(full_module_name)); |
- } |
- |
- // REGMAP_EXE_MODULE(x) |
- _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr, |
- bool /* is_current_exe_module */) { |
- szKey = NewKeyOlestr(key_tstr); |
- szData = NewDataOlestr(EnclosePathIfExe(app_util::GetModulePath(NULL))); |
- } |
- |
- // REGMAP_RESOURCE(x, resid) |
- _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr, UINT resid, bool /* resource */) { |
- szKey = NewKeyOlestr(key_tstr); |
- CStringW res_name; |
- BOOL success = res_name.LoadString(resid); |
- ATLASSERT(success); |
- szData = NewDataOlestr(res_name); |
- } |
- |
- // REGMAP_UUID(x, clsid) |
- _ATL_REGMAP_ENTRYKeeper(LPCTSTR key_tstr, REFGUID guid) { |
- szKey = NewKeyOlestr(key_tstr); |
- szData = NewDataOlestr(GuidToString(guid)); |
- } |
- |
- ~_ATL_REGMAP_ENTRYKeeper() { |
- delete [] szKey; |
- delete [] szData; |
- } |
- |
- // This method is mostly the same as the atlmfc_vc80 version of |
- // ATL::CAtlModule::UpdateRegistryFromResourceS. The only functional change |
- // is that it uses omaha::RegObject instead of ATL::CRegObject. |
- static HRESULT UpdateRegistryFromResourceEx( |
- UINT nResID, BOOL bRegister, struct _ATL_REGMAP_ENTRY* pMapEntries) { |
- RegObject ro; |
- HRESULT hr = ro.FinalConstruct(); |
- if (FAILED(hr)) { |
- return hr; |
- } |
- |
- if (pMapEntries != NULL) { |
- while (pMapEntries->szKey != NULL) { |
- ASSERT1(NULL != pMapEntries->szData); |
- ro.AddReplacement(pMapEntries->szKey, pMapEntries->szData); |
- pMapEntries++; |
- } |
- } |
- |
- hr = ATL::_pAtlModule->AddCommonRGSReplacements(&ro); |
- if (FAILED(hr)) { |
- return hr; |
- } |
- |
- USES_CONVERSION_EX; |
- TCHAR szModule[MAX_PATH]; |
- HINSTANCE hInst = _AtlBaseModule.GetModuleInstance(); |
- DWORD dwFLen = ::GetModuleFileName(hInst, szModule, MAX_PATH); |
- if (dwFLen == 0) { |
- return HRESULTFromLastError(); |
- } else if (dwFLen == MAX_PATH) { |
- return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER); |
- } |
- |
- LPOLESTR pszModule = NULL; |
- pszModule = T2OLE_EX(szModule, _ATL_SAFE_ALLOCA_DEF_THRESHOLD); |
- OLECHAR pszModuleUnquoted[_MAX_PATH * 2]; // NOLINT |
- ATL::CAtlModule::EscapeSingleQuote(pszModuleUnquoted, |
- _countof(pszModuleUnquoted), |
- pszModule); |
- |
- HRESULT hRes; |
- if ((hInst == NULL) || (hInst == GetModuleHandle(NULL))) { |
- // If Registering as an EXE, then we quote the resultant path. |
- // We don't do it for a DLL, because LoadLibrary fails if the path is |
- // quoted |
- OLECHAR pszModuleQuote[(_MAX_PATH + _ATL_QUOTES_SPACE) * 2]; // NOLINT |
- pszModuleQuote[0] = OLESTR('\"'); |
- if (!ocscpy_s(pszModuleQuote + 1, (_MAX_PATH + _ATL_QUOTES_SPACE) * 2 - 1, |
- pszModuleUnquoted)) { |
- return E_FAIL; |
- } |
- |
- size_t nLen = ocslen(pszModuleQuote); |
- pszModuleQuote[nLen] = OLESTR('\"'); |
- pszModuleQuote[nLen + 1] = 0; |
- |
- hRes = ro.AddReplacement(OLESTR("Module"), pszModuleQuote); |
- } else { |
- hRes = ro.AddReplacement(OLESTR("Module"), pszModuleUnquoted); |
- } |
- |
- if (FAILED(hRes)) { |
- return hRes; |
- } |
- |
- hRes = ro.AddReplacement(OLESTR("Module_Raw"), pszModuleUnquoted); |
- if (FAILED(hRes)) { |
- return hRes; |
- } |
- |
- LPCOLESTR szType = OLESTR("REGISTRY"); |
- hr = bRegister ? ro.ResourceRegister(pszModule, nResID, szType) : |
- ro.ResourceUnregister(pszModule, nResID, szType); |
- return hr; |
- } |
-}; |
- |
-// This now supports DECLARE_OLEMISC_STATUS() |
-#define BEGIN_REGISTRY_MAP() \ |
- __if_exists(_GetMiscStatus) { \ |
- static LPCTSTR _GetMiscStatusString() { \ |
- static TCHAR misc_string[32] = {0} \ |
- if (!misc_string[0]) { \ |
- wsprintf(misc_string, _T("%d"), _GetMiscStatus()); \ |
- } \ |
- \ |
- return misc_string; \ |
- } \ |
- } \ |
- \ |
- static struct _ATL_REGMAP_ENTRY *_GetRegistryMap() { \ |
- static const _ATL_REGMAP_ENTRYKeeper map[] = { \ |
- __if_exists(_GetMiscStatusString) { \ |
- _ATL_REGMAP_ENTRYKeeper(_T("OLEMISC"), _GetMiscStatusString()), \ |
- } \ |
- __if_exists(GetAppIdT) { \ |
- _ATL_REGMAP_ENTRYKeeper(_T("APPID"), GetAppIdT()), \ |
- } \ |
- |
-#define REGMAP_ENTRY(x, y) _ATL_REGMAP_ENTRYKeeper((x), (y)), |
- |
-#define REGMAP_RESOURCE(x, resid) _ATL_REGMAP_ENTRYKeeper((x), (resid), true), |
- |
-#define REGMAP_UUID(x, clsid) _ATL_REGMAP_ENTRYKeeper((x), (clsid)), |
- |
-// Add in an entry with key x, and value being the current module path. |
-// For example, REGMAP_MODULE("foo"), with the current module being |
-// "goopdate.dll" will result in the entry: |
-// "foo", "{blah}\\Google\\Update\\1.2.71.7\\goopdate.dll" |
-#define REGMAP_MODULE(x) _ATL_REGMAP_ENTRYKeeper((x)), |
- |
-// Add in an entry with key x, and value being modulename, fully qualified with |
-// the current module path. For example, REGMAP_MODULE2("foo", "npClick7.dll") |
-// with the current module being "goopdate.dll" will result in the entry: |
-// "foo", "{blah}\\Google\\Update\\1.2.71.7\\npClick7.dll" |
-#define REGMAP_MODULE2(x, modulename) \ |
- _ATL_REGMAP_ENTRYKeeper((x), (modulename), true), |
- |
-// Add in an entry with key x, and value being the currently running EXE's |
-// module path. For example, REGMAP_EXE_MODULE("foo"), with the current process |
-// being googleupdate.exe will result in the entry: |
-// "foo", "{blah}\\Google\\Update\\googleupdate.exe" |
-#define REGMAP_EXE_MODULE(x) _ATL_REGMAP_ENTRYKeeper((x), true), |
- |
-#define END_REGISTRY_MAP() _ATL_REGMAP_ENTRYKeeper() \ |
- }; \ |
- return (_ATL_REGMAP_ENTRY *)map; /* NOLINT */ \ |
- } |
- |
-#define DECLARE_REGISTRY_RESOURCEID_EX(x) \ |
- static HRESULT WINAPI UpdateRegistry(BOOL reg) { \ |
- return _ATL_REGMAP_ENTRYKeeper::UpdateRegistryFromResourceEx( \ |
- (UINT)(x), (reg), _GetRegistryMap()); \ |
-} |
- |
-#define DECLARE_REGISTRY_APPID_RESOURCEID_EX(resid, appid) \ |
- static LPCOLESTR GetAppId() throw() { \ |
- static const CStringW app_id(appid); \ |
- return app_id; \ |
- } \ |
- static LPCTSTR GetAppIdT() throw() { \ |
- return GetAppId(); \ |
- } \ |
- static HRESULT WINAPI UpdateRegistryAppId(BOOL reg) throw() { \ |
- return _ATL_REGMAP_ENTRYKeeper::UpdateRegistryFromResourceEx( \ |
- resid, (reg), _GetRegistryMap()); \ |
- } |
-// END registry map |
- |
-} // namespace omaha |
- |
-#endif // OMAHA_BASE_ATLREGMAPEX_H__ |
- |