summaryrefslogtreecommitdiffstats
path: root/Source/kwsys
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-09-16 13:08:40 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-09-16 13:08:40 (GMT)
commit30b67a8bfe2b27d5bbaa9169f85d6ca382602d53 (patch)
tree7a2774ddfce3d3c42b7e165fa51da51194ca8996 /Source/kwsys
parentdf4f999457eb8a881cdff960b5a0f725fbca2751 (diff)
downloadCMake-30b67a8bfe2b27d5bbaa9169f85d6ca382602d53.zip
CMake-30b67a8bfe2b27d5bbaa9169f85d6ca382602d53.tar.gz
CMake-30b67a8bfe2b27d5bbaa9169f85d6ca382602d53.tar.bz2
COMP: Win32 fixes
Diffstat (limited to 'Source/kwsys')
-rw-r--r--Source/kwsys/Registry.cxx90
-rw-r--r--Source/kwsys/Registry.hxx.in5
2 files changed, 64 insertions, 31 deletions
diff --git a/Source/kwsys/Registry.cxx b/Source/kwsys/Registry.cxx
index b961760..1c3f1e6 100644
--- a/Source/kwsys/Registry.cxx
+++ b/Source/kwsys/Registry.cxx
@@ -25,6 +25,10 @@
#include <ctype.h> // for isspace
#include <stdio.h>
+#ifdef WIN32
+# include <windows.h>
+#endif
+
#ifdef KWSYS_IOS_USE_ANSI
# define VTK_IOS_NOCREATE
#else
@@ -64,9 +68,16 @@ public:
void SetTopLevel(const char* tl);
const char* GetTopLevel() { return m_TopLevel.c_str(); }
+ //! Read from local or global scope. On Windows this mean from local machine
+ // or local user. On unix this will read from $HOME/.Projectrc or
+ // /etc/Project
+ void SetGlobalScope(bool b);
+ bool GetGlobalScope();
+
protected:
bool m_Changed;
kwsys_stl::string m_TopLevel;
+ bool m_GlobalScope;
#ifdef WIN32
HKEY HKey;
@@ -91,7 +102,6 @@ Registry::Registry(Registry::RegistryType registryType)
{
m_Opened = false;
m_Locked = false;
- m_GlobalScope = false;
this->Helper = 0;
this->Helper = new RegistryHelper(registryType);
}
@@ -109,6 +119,18 @@ Registry::~Registry()
}
//----------------------------------------------------------------------------
+void Registry::SetGlobalScope(bool b)
+{
+ this->Helper->SetGlobalScope(b);
+}
+
+//----------------------------------------------------------------------------
+bool Registry::GetGlobalScope()
+{
+ return this->Helper->GetGlobalScope();
+}
+
+//----------------------------------------------------------------------------
bool Registry::Open(const char *toplevel,
const char *subkey, int readonly)
{
@@ -330,6 +352,7 @@ RegistryHelper::RegistryHelper(Registry::RegistryType registryType)
m_SubKey = "";
m_SubKeySpecified = false;
m_Empty = true;
+ m_GlobalScope = false;
m_RegistryType = registryType;
}
@@ -344,7 +367,7 @@ bool RegistryHelper::Open(const char *toplevel, const char *subkey,
int readonly)
{
#ifdef WIN32
- if ( m_RegistryType == Registry::RegistryType::WIN32)
+ if ( m_RegistryType == Registry::WIN32_REGISTRY)
{
HKEY scope = HKEY_CURRENT_USER;
if ( this->GetGlobalScope() )
@@ -352,32 +375,31 @@ bool RegistryHelper::Open(const char *toplevel, const char *subkey,
scope = HKEY_LOCAL_MACHINE;
}
int res = 0;
- ostrstream str;
+ kwsys_ios::ostringstream str;
DWORD dwDummy;
- str << "Software\\Kitware\\" << toplevel << "\\" << subkey << ends;
- if ( readonly == vtkKWRegistryUtilities::READONLY )
+ str << "Software\\Kitware\\" << toplevel << "\\" << subkey;
+ if ( readonly == Registry::READONLY )
{
- res = ( RegOpenKeyEx(scope, str.str(),
+ res = ( RegOpenKeyEx(scope, str.str().c_str(),
0, KEY_READ, &this->HKey) == ERROR_SUCCESS );
}
else
{
- res = ( RegCreateKeyEx(scope, str.str(),
+ res = ( RegCreateKeyEx(scope, str.str().c_str(),
0, "", REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE,
NULL, &this->HKey, &dwDummy) == ERROR_SUCCESS );
}
- str.rdbuf()->freeze(0);
- return res;
+ return (res != 0);
}
#endif
if ( m_RegistryType == Registry::UNIX_REGISTRY )
{
- int res = 0;
+ bool res = false;
int cc;
kwsys_ios::ostringstream str;
if ( !getenv("HOME") )
{
- return 0;
+ return false;
}
str << getenv("HOME") << "/." << toplevel << "rc";
if ( readonly == Registry::READWRITE )
@@ -385,7 +407,7 @@ bool RegistryHelper::Open(const char *toplevel, const char *subkey,
kwsys_ios::ofstream ofs( str.str().c_str(), kwsys_ios::ios::out|kwsys_ios::ios::app );
if ( ofs.fail() )
{
- return 0;
+ return false;
}
ofs.close();
}
@@ -393,15 +415,15 @@ bool RegistryHelper::Open(const char *toplevel, const char *subkey,
kwsys_ios::ifstream *ifs = new kwsys_ios::ifstream(str.str().c_str(), kwsys_ios::ios::in VTK_IOS_NOCREATE);
if ( !ifs )
{
- return 0;
+ return false;
}
if ( ifs->fail())
{
delete ifs;
- return 0;
+ return false;
}
- res = 1;
+ res = true;
char buffer[BUFFER_SIZE];
while( !ifs->fail() )
{
@@ -448,11 +470,11 @@ bool RegistryHelper::Open(const char *toplevel, const char *subkey,
bool RegistryHelper::Close()
{
#ifdef WIN32
- if ( m_RegistryType == Registry::RegistryType::WIN32)
+ if ( m_RegistryType == Registry::WIN32_REGISTRY)
{
int res;
res = ( RegCloseKey(this->HKey) == ERROR_SUCCESS );
- return res;
+ return (res != 0);
}
#else
if ( m_RegistryType == Registry::UNIX_REGISTRY )
@@ -520,15 +542,15 @@ bool RegistryHelper::ReadValue(const char *skey, char *value)
{
#ifdef WIN32
- if ( m_RegistryType == Registry::RegistryType::WIN32)
+ if ( m_RegistryType == Registry::WIN32_REGISTRY)
{
int res = 1;
DWORD dwType, dwSize;
dwType = REG_SZ;
dwSize = BUFFER_SIZE;
- res = ( RegQueryValueEx(this->HKey, key, NULL, &dwType,
+ res = ( RegQueryValueEx(this->HKey, skey, NULL, &dwType,
(BYTE *)value, &dwSize) == ERROR_SUCCESS );
- return res;
+ return (res != 0);
}
#else
if ( m_RegistryType == Registry::UNIX_REGISTRY )
@@ -557,11 +579,11 @@ bool RegistryHelper::ReadValue(const char *skey, char *value)
bool RegistryHelper::DeleteKey(const char* key)
{
#ifdef WIN32
- if ( m_RegistryType == Registry::RegistryType::WIN32)
+ if ( m_RegistryType == Registry::WIN32_REGISTRY)
{
int res = 1;
res = ( RegDeleteKey( this->HKey, key ) == ERROR_SUCCESS );
- return res;
+ return (res != 0);
}
#else
if ( m_RegistryType == Registry::UNIX_REGISTRY )
@@ -578,11 +600,11 @@ bool RegistryHelper::DeleteKey(const char* key)
bool RegistryHelper::DeleteValue(const char *skey)
{
#ifdef WIN32
- if ( m_RegistryType == Registry::RegistryType::WIN32)
+ if ( m_RegistryType == Registry::WIN32_REGISTRY)
{
int res = 1;
- res = ( RegDeleteValue( this->HKey, key ) == ERROR_SUCCESS );
- return res;
+ res = ( RegDeleteValue( this->HKey, skey ) == ERROR_SUCCESS );
+ return (res != 0);
}
#else
if ( m_RegistryType == Registry::UNIX_REGISTRY )
@@ -604,14 +626,14 @@ bool RegistryHelper::DeleteValue(const char *skey)
bool RegistryHelper::SetValue(const char *skey, const char *value)
{
#ifdef WIN32
- if ( m_RegistryType == Registry::RegistryType::WIN32)
+ if ( m_RegistryType == Registry::WIN32_REGISTRY)
{
int res = 1;
DWORD len = (DWORD)(value ? strlen(value) : 0);
- res = ( RegSetValueEx(this->HKey, key, 0, REG_SZ,
+ res = ( RegSetValueEx(this->HKey, skey, 0, REG_SZ,
(CONST BYTE *)(const char *)value,
len+1) == ERROR_SUCCESS );
- return res;
+ return (res != 0);
}
#else
if ( m_RegistryType == Registry::UNIX_REGISTRY )
@@ -688,4 +710,16 @@ char *RegistryHelper::Strip(char *str)
return nstr;
}
+//----------------------------------------------------------------------------
+void RegistryHelper::SetGlobalScope(bool b)
+{
+ m_GlobalScope = b;
+}
+
+//----------------------------------------------------------------------------
+bool RegistryHelper::GetGlobalScope()
+{
+ return m_GlobalScope;
+}
+
} // namespace KWSYS_NAMESPACE
diff --git a/Source/kwsys/Registry.hxx.in b/Source/kwsys/Registry.hxx.in
index 408534a..cc6df58 100644
--- a/Source/kwsys/Registry.hxx.in
+++ b/Source/kwsys/Registry.hxx.in
@@ -75,8 +75,8 @@ public:
// /etc/Project
void GlobalScopeOn() { this->SetGlobalScope(1); }
void GlobalScopeOff() { this->SetGlobalScope(0); }
- void SetGlobalScope(bool b) { m_GlobalScope = b; }
- bool GetGlobalScope() { return m_GlobalScope; }
+ void SetGlobalScope(bool b);
+ bool GetGlobalScope();
// Set or get the toplevel registry key.
void SetTopLevel(const char* tl);
@@ -102,7 +102,6 @@ private:
bool m_Opened;
bool m_Locked;
- bool m_GlobalScope;
}; // End Class: Registry
} // namespace @KWSYS_NAMESPACE@