X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2Fwin32%2FregistryKey.cpp;h=4c6240c77265943869d462563505a0649c84f76a;hb=bd02a5f6be4815d46524d613f727199ca756c971;hp=a6858e912cef352e7c480e0056579790f126b908;hpb=058ae090a970436caec3b3059e9e18b310dd6b0d;p=anytun.git diff --git a/src/win32/registryKey.cpp b/src/win32/registryKey.cpp index a6858e9..4c6240c 100644 --- a/src/win32/registryKey.cpp +++ b/src/win32/registryKey.cpp @@ -11,14 +11,15 @@ * tunneling and relaying of packets of any protocol. * * - * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl, + * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, * Christian Pointner * * This file is part of Anytun. * * Anytun is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3 as - * published by the Free Software Foundation. + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. * * Anytun is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -63,14 +64,16 @@ std::string RegistryKey::getName() const DWORD RegistryKey::open(HKEY hkey, std::string subKey, REGSAM samDesired) { - if(opened_) + if(opened_) { RegCloseKey(key_); + } opened_ = false; name_ = ""; LONG err = RegOpenKeyExA(hkey, subKey.c_str(), 0, samDesired, &key_); - if(err != ERROR_SUCCESS) + if(err != ERROR_SUCCESS) { return err; + } name_ = subKey; opened_ = true; @@ -79,28 +82,32 @@ DWORD RegistryKey::open(HKEY hkey, std::string subKey, REGSAM samDesired) void RegistryKey::close() { - if(opened_) + if(opened_) { RegCloseKey(key_); + } opened_ = false; } std::string RegistryKey::operator[](std::string const& name) const { - if(!opened_) + if(!opened_) { throw AnytunErrno(ERROR_INVALID_HANDLE); + } char value[STRING_VALUE_LENGTH]; DWORD len = sizeof(value); LONG err = RegQueryValueExA(key_, name.c_str(), NULL, NULL, (LPBYTE)value, &len); - if(err != ERROR_SUCCESS) + if(err != ERROR_SUCCESS) { throw AnytunErrno(err); + } if(value[len-1] != 0) { - if(len < sizeof(value)) + if(len < sizeof(value)) { value[len++] = 0; - else + } else { throw AnytunErrno(ERROR_INSUFFICIENT_BUFFER); - } + } + } return std::string(value); } @@ -109,8 +116,9 @@ DWORD RegistryKey::getSubKey(DWORD index, RegistryKey& subKey, REGSAM sam) const char subkeyname[NAME_LENGTH]; DWORD len = sizeof(subkeyname); DWORD err = RegEnumKeyExA(key_, index, subkeyname, &len, NULL, NULL, NULL, NULL); - if(err != ERROR_SUCCESS) + if(err != ERROR_SUCCESS) { return err; + } return subKey.open(key_, subkeyname, sam); }