summaryrefslogtreecommitdiff
path: root/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx')
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx538
1 files changed, 0 insertions, 538 deletions
diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx b/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx
deleted file mode 100644
index fa860ee62..000000000
--- a/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx
+++ /dev/null
@@ -1,538 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "registryw9x.hxx"
-
-#include <windows.h>
-#include <malloc.h>
-#include "registryvalueimpl.hxx"
-#include "registryexception.hxx"
-#include "stringconverter.hxx"
-
-#include <assert.h>
-
-#ifdef _MSC_VER
-#pragma warning(disable : 4786 4350)
-#endif
-
-const size_t MAX_TMP_BUFF_SIZE = 1024 * sizeof(wchar_t);
-
-
-//############################################
-// Creation
-// only possible through WindowsRegistry class
-//############################################
-
-
-//-----------------------------------------------------
-/** Create instance and open the specified Registry key
-*/
-RegistryKeyImplWin9x::RegistryKeyImplWin9x(HKEY RootKey, const std::wstring& KeyName) :
- RegistryKeyImpl(RootKey, KeyName)
-{
-}
-
-//-----------------------------------------------------
-/** Create instance and open the specified Registry key
-*/
-RegistryKeyImplWin9x::RegistryKeyImplWin9x(HKEY RootKey) :
- RegistryKeyImpl(RootKey)
-{
-}
-
-//-----------------------------------------------------
-/** Create an instances of the specified Registry key,
- the key is assumed to be already opened.
-*/
-RegistryKeyImplWin9x::RegistryKeyImplWin9x(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable) :
- RegistryKeyImpl(RootKey, SubKey, KeyName, Writeable)
-{
-}
-
-
-//############################################
-// Queries
-//############################################
-
-
-//-----------------------------------------------------
-/** The number of sub values of the key at hand
-
- @precond IsOpen = true
-
- @throws
-*/
-size_t RegistryKeyImplWin9x::GetSubValueCount() const
-{
- assert(IsOpen());
-
- DWORD nSubValues = 0;
-
- LONG rc = RegQueryInfoKeyA(
- m_hSubKey,
- 0, 0, 0, 0, 0, 0, &nSubValues, 0, 0, 0, 0);
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- return nSubValues;
-}
-
-//-----------------------------------------------------
-/** The number of sub-keys of the key at hand
-
- @precond IsOpen = true
-
- @throws
-*/
-size_t RegistryKeyImplWin9x::GetSubKeyCount() const
-{
- assert(IsOpen());
-
- DWORD nSubKeys = 0;
-
- LONG rc = RegQueryInfoKeyA(
- m_hSubKey,
- 0, 0, 0, &nSubKeys, 0, 0, 0, 0, 0, 0, 0);
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- return nSubKeys;
-}
-
-StringListPtr RegistryKeyImplWin9x::GetSubKeyNames() const
-{
- assert(IsOpen());
-
- char buff[1024];
- DWORD buff_size = sizeof(buff);
- FILETIME ftime;
-
- StringList* key_names = new StringList();
-
- LONG rc = ERROR_SUCCESS;
-
- for (DWORD i = 0; /* left empty */; i++)
- {
- rc = RegEnumKeyExA(
- m_hSubKey, i, buff, &buff_size,
- 0, 0, 0, &ftime);
-
- if (ERROR_SUCCESS != rc &&
- ERROR_MORE_DATA != rc)
- break;
-
- buff_size = sizeof(buff);
-
- key_names->push_back(AnsiToUnicodeString(buff));
- }
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_NO_MORE_ITEMS != rc && ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- return (StringListPtr) key_names;
-}
-
-StringListPtr RegistryKeyImplWin9x::GetSubValueNames() const
-{
- assert(IsOpen());
-
- char buff[1024];
- DWORD buff_size = sizeof(buff);
-
- StringList* value_names = new StringList();
-
- LONG rc = ERROR_SUCCESS;
-
- for (DWORD i = 0; /* left empty */; i++)
- {
- rc = RegEnumValueA(
- m_hSubKey, i, buff, &buff_size,
- 0, 0, 0, 0);
-
- if (ERROR_SUCCESS != rc &&
- ERROR_MORE_DATA != rc)
- break;
-
- buff_size = sizeof(buff);
-
- value_names->push_back(AnsiToUnicodeString(buff));
- }
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_NO_MORE_ITEMS != rc && ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- return (StringListPtr) value_names;
-}
-
-//-----------------------------------------------------
-/** Get the specified registry value
-
- @precond IsOpen = true
-*/
-RegistryValue RegistryKeyImplWin9x::GetValue(const std::wstring& Name) const
-{
- assert(IsOpen());
-
- DWORD Type;
- char buff[MAX_TMP_BUFF_SIZE];
- DWORD size = sizeof(buff);
-
- LONG rc = RegQueryValueExA(
- m_hSubKey,
- UnicodeToAnsiString(Name).c_str(),
- 0,
- &Type,
- reinterpret_cast<LPBYTE>(buff),
- &size);
-
- if (ERROR_FILE_NOT_FOUND == rc)
- throw RegistryValueNotFoundException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- RegistryValue regval;
-
- if (REG_DWORD == Type)
- {
- regval = RegistryValue(new RegistryValueImpl(Name, *(reinterpret_cast<int*>(buff))));
- }
- else if (REG_SZ == Type || REG_EXPAND_SZ == Type || REG_MULTI_SZ == Type)
- {
- if (size > 0)
- regval = RegistryValue(new RegistryValueImpl(Name, std::string(reinterpret_cast<char*>(buff))));
- else
- regval = RegistryValue(new RegistryValueImpl(Name, std::string()));
- }
- else
- {
- assert(false);
- }
-
- return regval;
-}
-
-//-----------------------------------------------------
-/** Get the specified registry value, return the given
- default value if value not found
-
- @precond IsOpen = true
-*/
-RegistryValue RegistryKeyImplWin9x::GetValue(const std::wstring& Name, const RegistryValue& Default) const
-{
- assert(IsOpen());
-
- DWORD Type;
- char buff[MAX_TMP_BUFF_SIZE];
- DWORD size = sizeof(buff);
-
- LONG rc = RegQueryValueExA(
- m_hSubKey,
- UnicodeToAnsiString(Name).c_str(),
- 0,
- &Type,
- reinterpret_cast<LPBYTE>(buff),
- &size);
-
- if (ERROR_FILE_NOT_FOUND == rc)
- {
- #if !defined(__MINGW32__) && (_MSC_VER < 1300)
- return Default;
- #else
- RegistryValue regval_ptr;
- regval_ptr = RegistryValue(new RegistryValueImpl(*Default));
- return regval_ptr;
- #endif
- }
-
- if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- RegistryValue regval;
-
- if (REG_DWORD == Type)
- regval = RegistryValue(new RegistryValueImpl(Name, *reinterpret_cast<int*>(buff)));
- else if (REG_SZ == Type || REG_EXPAND_SZ == Type || REG_MULTI_SZ == Type)
- regval = RegistryValue(new RegistryValueImpl(Name, std::string(reinterpret_cast<char*>(buff))));
- else
- assert(false);
-
- return regval;
-}
-
-
-//############################################
-// Commands
-//############################################
-
-
-//-----------------------------------------------------
-/** Open the registry key, has no effect if
- the key is already open
-
- @precond IsOpen = false
-
- @throws RegistryKeyNotFoundException
- RegistryWriteAccessDenyException
- RegistryAccessDenyException
-*/
-void RegistryKeyImplWin9x::Open(bool Writeable)
-{
- assert(!IsOpen());
-
- REGSAM regsam = KEY_READ;
-
- if (Writeable)
- regsam |= KEY_WRITE;
-
- LONG rc = RegOpenKeyExA(
- m_hRootKey,
- UnicodeToAnsiString(m_KeyName).c_str(),
- 0,
- regsam,
- &m_hSubKey);
-
- if (ERROR_FILE_NOT_FOUND == rc)
- throw RegistryKeyNotFoundException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- m_IsWriteable = Writeable;
-
- assert(IsOpen());
-}
-
-//-----------------------------------------------------
-/** Open the specified sub-key of the registry key
- at hand
-
- @precond IsOpen = true
- HasSubKey(Name) = true
-
- @throws RegistryIOException
- RegistryKeyNotFoundException
- RegistryAccessDeniedException
-*/
-RegistryKey RegistryKeyImplWin9x::OpenSubKey(const std::wstring& Name, bool Writeable)
-{
- RegistryKey regkey(new RegistryKeyImplWin9x(m_hSubKey, Name));
- regkey->Open(Writeable);
- return regkey;
-}
-
-//-----------------------------------------------------
-/** Creates a new sub-key below the key at hand
-
- @precond IsOpen = true
- IsWriteable = true
-
- @throws RegistryIOException
- RegistryWriteAccessDenyException
-*/
-
-RegistryKey RegistryKeyImplWin9x::CreateSubKey(const std::wstring& Name)
-{
- assert(IsOpen());
- assert(IsWriteable());
-
- HKEY hRoot = IsRootKey() ? m_hRootKey : m_hSubKey;
-
- HKEY hKey;
-
- LONG rc = RegCreateKeyExA(
- hRoot,
- UnicodeToAnsiString(Name).c_str(),
- 0,
- 0,
- REG_OPTION_NON_VOLATILE,
- KEY_READ | KEY_WRITE,
- 0,
- &hKey,
- 0);
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-
- return RegistryKey(new RegistryKeyImplWin9x(hRoot, hKey, Name));
-}
-
-//-----------------------------------------------------
-/** Deletes a sub-key below the key at hand, the
- key must not have sub-keys
-
- @precond IsOpen = true
- IsWriteable = true
-
- @throws RegistryIOException
- RegistryWriteAccessDenyException
-*/
-void RegistryKeyImplWin9x::DeleteSubKey(const std::wstring& Name)
-{
- assert(IsOpen());
- assert(IsWriteable());
- assert(HasSubKey(Name));
-
- RegistryKey SubKey = OpenSubKey(Name);
-
- size_t nSubKeyCount = SubKey->GetSubKeyCount();
-
- assert(0 == nSubKeyCount);
-
- if (nSubKeyCount)
- throw RegistryInvalidOperationException(ERROR_NOT_SUPPORTED);
-
- LONG rc = RegDeleteKeyA(m_hSubKey, UnicodeToAnsiString(Name).c_str());
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-}
-
-//-----------------------------------------------------
-/** Deletes a sub-key below the key at hand with all
- its sub-keys
-
- @precond IsOpen = true
- IsWriteable = true;
-
- @throws RegistryIOException
- RegistryWriteAccessDenyException
-*/
-void RegistryKeyImplWin9x::DeleteSubKeyTree(const std::wstring& Name)
-{
- LONG rc = RegDeleteKeyA(m_hSubKey, UnicodeToAnsiString(Name).c_str());
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-}
-
-//-----------------------------------------------------
-/** Delete the specified value
-
- @precond IsOpen = true
- IsWriteable = true
- HasValue(Name) = true
-
- @throws RegistryIOException
- RegistryWriteAccessDeniedException
- RegistryValueNotFoundException
-*/
-void RegistryKeyImplWin9x::DeleteValue(const std::wstring& Name)
-{
- assert(IsOpen());
- assert(HasValue(Name));
- assert(IsWriteable());
-
- LONG rc = RegDeleteValueA(
- m_hSubKey,
- UnicodeToAnsiString(Name).c_str());
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryNoWriteAccessException(rc);
- else if (ERROR_FILE_NOT_FOUND == rc)
- throw RegistryValueNotFoundException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-}
-
-//-----------------------------------------------------
-/** Set the specified registry value
-
- @precond IsOpen = true
- IsWriteable = true
-
- @throws RegistryIOException
- RegistryWriteAccessDenyException
-*/
-void RegistryKeyImplWin9x::SetValue(const RegistryValue& Value)
-{
- assert(IsOpen());
- assert(IsWriteable());
-
- LONG rc = ERROR_SUCCESS;
-
- if (REG_SZ == Value->GetType())
- {
- std::string AnsiStr = Value->GetDataAsAnsiString();
-
- rc = RegSetValueExA(
- m_hSubKey,
- UnicodeToAnsiString(Value->GetName()).c_str(),
- 0,
- Value->GetType(),
- reinterpret_cast<const unsigned char*>(AnsiStr.c_str()),
- static_cast<DWORD>((AnsiStr.length() + 1)));
- }
- else
- {
- rc = RegSetValueExA(
- m_hSubKey,
- UnicodeToAnsiString(Value->GetName()).c_str(),
- 0,
- Value->GetType(),
- reinterpret_cast<const unsigned char*>(Value->GetDataBuffer()),
- static_cast<DWORD>(Value->GetDataSize()));
- }
-
- if (ERROR_INVALID_HANDLE == rc)
- throw RegistryIOException(rc);
- else if (ERROR_ACCESS_DENIED == rc)
- throw RegistryAccessDeniedException(rc);
- else if (ERROR_SUCCESS != rc)
- throw RegistryException(rc);
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */