-Index: base/Aiksaurus.cpp\r
-===================================================================\r
-RCS file: /cvsroot/aiksaurus/base/Aiksaurus.cpp,v\r
-retrieving revision 1.5\r
-diff -u -r1.5 Aiksaurus.cpp\r
---- base/Aiksaurus.cpp 3 Apr 2005 19:10:55 -0000 1.5\r
-+++ base/Aiksaurus.cpp 12 Jul 2006 21:00:20 -0000\r
-@@ -36,36 +36,69 @@\r
- using namespace std;\r
- \r
- #if defined WIN32\r
-+\r
- #ifdef AIK_DATA_DIR\r
- #undef AIK_DATA_DIR\r
- #endif\r
-- #include <windows.h>\r
-- #define WIN32_LEAN_AND_MEAN\r
-- // Default aik_data_dir is local directory\r
-- std::string AIK_DATA_DIR(".\\");\r
-- // Regestry Reading for AIK_DATA_DIR\r
-- void ReadRegistry()\r
-- {\r
-- HKEY hKey;\r
-- unsigned long lType; \r
-- DWORD dwSize;\r
-- unsigned char* szValue = NULL;\r
-- if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", 0, KEY_READ, &hKey) == ERROR_SUCCESS )\r
-- {\r
-- // Determine size of string\r
-- if( ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS )\r
-- {\r
-- szValue = new unsigned char[dwSize + 1];\r
-- ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, szValue, &dwSize);\r
-- AIK_DATA_DIR = (char*) szValue;\r
-- delete[] szValue;\r
-- }\r
-- }\r
-- }\r
-+\r
-+#ifndef HAVE_GETENV\r
-+#define HAVE_GETENV\r
-+#endif\r
-+\r
-+#include <windows.h>\r
-+#define WIN32_LEAN_AND_MEAN\r
-+ \r
-+// Default aik_data_dir is local directory\r
-+std::string AIK_DATA_DIR(".\\");\r
-+ \r
-+ std::string ReadRegString(HKEY hive, std::string key, std::string name)\r
-+ {\r
-+\r
-+ // Reads a string from the Windows registry (used to get paths)\r
-+\r
-+ HKEY hKey;\r
-+ unsigned long lType;\r
-+ DWORD dwSize;\r
-+ unsigned char* szValue = NULL;\r
-+\r
-+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)\r
-+ {\r
-+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)\r
-+ {\r
-+ szValue = new unsigned char[dwSize + 1];\r
-+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);\r
-+ std::string RegistryReturn((char*)szValue);\r
-+ delete[] szValue;\r
-+ return RegistryReturn;\r
-+ } else {\r
-+ return "";\r
-+ }\r
-+ } else {\r
-+ return "";\r
-+ }\r
-+ }\r
-+\r
-+ HKEY GetRegHive()\r
-+ {\r
-+\r
-+ // Check whether Aiksaurus is installed for the current user or for all users\r
-+\r
-+ std::string value;\r
-+\r
-+ if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", "Data Path") == "")\r
-+ {\r
-+ return HKEY_CURRENT_USER;\r
-+ } else {\r
-+ return HKEY_LOCAL_MACHINE;\r
-+ }\r
-+\r
-+ }\r
-+ \r
- #if defined _DLL_BUILD\r
- //Add a DllMain Entry point\r
- BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }\r
- #endif\r
-+\r
- #endif\r
- \r
- namespace AiksaurusImpl\r
-@@ -256,14 +289,25 @@\r
- try\r
- {\r
- #if defined WIN32\r
-- ReadRegistry();\r
-+ std::string base(AIK_DATA_DIR);\r
-+ std::string value;\r
-+ HKEY hive;\r
-+\r
-+ hive = GetRegHive();\r
-+ value = (hive, "Software\\Aiksaurus", "Data Path");\r
-+ if (value != "") base == value;\r
- #endif\r
-- std::string base(AIK_DATA_DIR);\r
-+ \r
- #ifdef HAVE_GETENV\r
-- char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");\r
-- if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);\r
-+ char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");\r
-+ if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);\r
-+#endif\r
-+\r
-+#if defined WIN32\r
-+ if (base.substr(base.length() - 1, 1) != "\\") base.append("\\");\r
- #endif\r
-- std::string mfile(base + "meanings.dat");\r
-+\r
-+ std::string mfile(base + "meanings.dat");\r
- std::string wfile(base + "words.dat");\r
- d_impl_ptr = new ThesaurusImpl(mfile.c_str(), wfile.c_str());\r
- }\r
+Index: base/Aiksaurus.cpp
+===================================================================
+RCS file: /cvsroot/aiksaurus/base/Aiksaurus.cpp,v
+retrieving revision 1.5
+diff -u -r1.5 Aiksaurus.cpp
+--- base/Aiksaurus.cpp 3 Apr 2005 19:10:55 -0000 1.5
++++ base/Aiksaurus.cpp 12 Jul 2006 21:00:20 -0000
+@@ -36,36 +36,69 @@
+ using namespace std;
+
+ #if defined WIN32
++
+ #ifdef AIK_DATA_DIR
+ #undef AIK_DATA_DIR
+ #endif
+- #include <windows.h>
+- #define WIN32_LEAN_AND_MEAN
+- // Default aik_data_dir is local directory
+- std::string AIK_DATA_DIR(".\\");
+- // Regestry Reading for AIK_DATA_DIR
+- void ReadRegistry()
+- {
+- HKEY hKey;
+- unsigned long lType;
+- DWORD dwSize;
+- unsigned char* szValue = NULL;
+- if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", 0, KEY_READ, &hKey) == ERROR_SUCCESS )
+- {
+- // Determine size of string
+- if( ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS )
+- {
+- szValue = new unsigned char[dwSize + 1];
+- ::RegQueryValueEx( hKey, "Data_Dir", NULL, &lType, szValue, &dwSize);
+- AIK_DATA_DIR = (char*) szValue;
+- delete[] szValue;
+- }
+- }
+- }
++
++#ifndef HAVE_GETENV
++#define HAVE_GETENV
++#endif
++
++#include <windows.h>
++#define WIN32_LEAN_AND_MEAN
++
++// Default aik_data_dir is local directory
++std::string AIK_DATA_DIR(".\\");
++
++ std::string ReadRegString(HKEY hive, std::string key, std::string name)
++ {
++
++ // Reads a string from the Windows registry (used to get paths)
++
++ HKEY hKey;
++ unsigned long lType;
++ DWORD dwSize;
++ unsigned char* szValue = NULL;
++
++ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
++ {
++ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
++ {
++ szValue = new unsigned char[dwSize + 1];
++ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
++ std::string RegistryReturn((char*)szValue);
++ delete[] szValue;
++ return RegistryReturn;
++ } else {
++ return "";
++ }
++ } else {
++ return "";
++ }
++ }
++
++ HKEY GetRegHive()
++ {
++
++ // Check whether Aiksaurus is installed for the current user or for all users
++
++ std::string value;
++
++ if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aiksaurus", "Data Path") == "")
++ {
++ return HKEY_CURRENT_USER;
++ } else {
++ return HKEY_LOCAL_MACHINE;
++ }
++
++ }
++
+ #if defined _DLL_BUILD
+ //Add a DllMain Entry point
+ BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }
+ #endif
++
+ #endif
+
+ namespace AiksaurusImpl
+@@ -256,14 +289,25 @@
+ try
+ {
+ #if defined WIN32
+- ReadRegistry();
++ std::string base(AIK_DATA_DIR);
++ std::string value;
++ HKEY hive;
++
++ hive = GetRegHive();
++ value = (hive, "Software\\Aiksaurus", "Data Path");
++ if (value != "") base == value;
+ #endif
+- std::string base(AIK_DATA_DIR);
++
+ #ifdef HAVE_GETENV
+- char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
+- if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
++ char * aikdatadir_envvar = getenv ("AIK_DATA_DIR");
++ if (aikdatadir_envvar) base = std::string(aikdatadir_envvar);
++#endif
++
++#if defined WIN32
++ if (base.substr(base.length() - 1, 1) != "\\") base.append("\\");
+ #endif
+- std::string mfile(base + "meanings.dat");
++
++ std::string mfile(base + "meanings.dat");
+ std::string wfile(base + "words.dat");
+ d_impl_ptr = new ThesaurusImpl(mfile.c_str(), wfile.c_str());
+ }