diff -riwbBuN -Xex aspell-0.60.4/Makefile.am aspell-0.60.4-modified/Makefile.am --- aspell-0.60.4/Makefile.am Wed Oct 19 11:12:02 2005 +++ aspell-0.60.4-modified/Makefile.am Thu Jun 15 14:45:47 2006 @@ -32,6 +32,7 @@ endif libaspell_la_SOURCES =\ + common/aspell_win.cpp\ common/cache.cpp\ common/string.cpp\ common/getdata.cpp\ diff -riwbBuN -Xex aspell-0.60.4/common/aspell_win.cpp aspell-0.60.4-modified/common/aspell_win.cpp --- aspell-0.60.4/common/aspell_win.cpp Thu Jan 1 01:00:00 1970 +++ aspell-0.60.4-modified/common/aspell_win.cpp Fri Jun 16 01:19:04 2006 @@ -0,0 +1,54 @@ +#ifdef _WIN32 + +#include +#include "string.hpp" + +namespace acommon { + + String ReadRegString(HKEY hive, String key, 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); + String RegistryReturn((char*)szValue); + delete[] szValue; + return RegistryReturn; + } else { + return ""; + } + } else { + return ""; + } + + } + + HKEY GetRegHive() + { + + // Check whether Aspell is installed for the current user or for all users + + String value; + + if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Dictionary Path") == "") + { + return HKEY_CURRENT_USER; + } else { + return HKEY_LOCAL_MACHINE; + } + + } + +} + +#endif diff -riwbBuN -Xex aspell-0.60.4/common/aspell_win.hpp aspell-0.60.4-modified/common/aspell_win.hpp --- aspell-0.60.4/common/aspell_win.hpp Thu Jan 1 01:00:00 1970 +++ aspell-0.60.4-modified/common/aspell_win.hpp Thu Jun 15 15:33:58 2006 @@ -0,0 +1,18 @@ +#ifdef _WIN32 + +#ifndef ASPELL_WIN__HPP +#define ASPELL_WIN__HPP + +#include "string.hpp" +#include + +namespace acommon { + + extern HKEY GetRegHive(); + extern String ReadRegString(HKEY type, String key, String name); + +} + +#endif + +#endif diff -riwbBuN -Xex aspell-0.60.4/common/config.cpp aspell-0.60.4-modified/common/config.cpp --- aspell-0.60.4/common/config.cpp Wed Jun 22 07:32:30 2005 +++ aspell-0.60.4-modified/common/config.cpp Wed Jun 14 20:44:29 2006 @@ -39,6 +39,7 @@ #include "string_list.hpp" #include "gettext.h" +#undef printf #include "iostream.hpp" diff -riwbBuN -Xex aspell-0.60.4/common/convert.cpp aspell-0.60.4-modified/common/convert.cpp --- aspell-0.60.4/common/convert.cpp Thu Sep 29 05:20:04 2005 +++ aspell-0.60.4-modified/common/convert.cpp Sat May 27 12:08:02 2006 @@ -23,6 +23,7 @@ #include "iostream.hpp" #include "gettext.h" +#undef printf namespace acommon { diff -riwbBuN -Xex aspell-0.60.4/common/file_util.cpp aspell-0.60.4-modified/common/file_util.cpp --- aspell-0.60.4/common/file_util.cpp Mon Nov 15 13:29:54 2004 +++ aspell-0.60.4-modified/common/file_util.cpp Sat May 27 12:08:02 2006 @@ -26,6 +26,7 @@ #ifdef WIN32 +# include "asc_ctype.hpp" # include # define ACCESS _access # include diff -riwbBuN -Xex aspell-0.60.4/common/gettext_init.cpp aspell-0.60.4-modified/common/gettext_init.cpp --- aspell-0.60.4/common/gettext_init.cpp Tue Nov 9 09:20:24 2004 +++ aspell-0.60.4-modified/common/gettext_init.cpp Thu Jun 15 15:31:02 2006 @@ -1,5 +1,13 @@ +#include "settings.h" +#include "string.hpp" + +#ifdef _WIN32 + #include + #include "aspell_win.hpp" +#endif #include "gettext.h" +#undef printf #if ENABLE_NLS @@ -11,12 +19,24 @@ extern "C" void aspell_gettext_init() { - { acommon::Lock l(&lock); if (did_init) return; did_init = true; - } + +#ifdef _WIN32 + // Registry key for Locale Path + + acommon::String value; + HKEY hive; + + hive = acommon::GetRegHive(); + value = acommon::ReadRegString(hive, "Software\\Aspell", "Locale Path"); + if (value == "") value = LOCALEDIR; + + bindtextdomain("aspell", value.c_str()); +#else bindtextdomain("aspell", LOCALEDIR); +#endif } #else diff -riwbBuN -Xex aspell-0.60.4/common/info.cpp aspell-0.60.4-modified/common/info.cpp --- aspell-0.60.4/common/info.cpp Wed Nov 10 07:18:46 2004 +++ aspell-0.60.4-modified/common/info.cpp Fri Jun 16 01:20:52 2006 @@ -15,9 +15,11 @@ /* BSDi defines u_intXX_t types in machine/types.h */ #include #endif + #ifdef WIN32 # include # include +#include "aspell_win.hpp" #endif #include "iostream.hpp" @@ -38,6 +40,7 @@ #include "string_map.hpp" #include "gettext.h" +#undef printf namespace acommon { @@ -492,8 +495,22 @@ void get_data_dirs (Config * config, StringList & lst) { + String dictpath; + HKEY hive; + lst.clear(); - lst.add(config->retrieve("data-dir")); + + hive = GetRegHive(); + +#ifdef _WIN32 + // Registry key for dictionary path + dictpath = ReadRegString(hive, "Software\\Aspell", "Dictionary Path");; + if (dictpath == "") dictpath = config->retrieve("data-dir"); +#else + dictpath = config->retrieve("data-dir"); +#endif + + lst.add(dictpath); lst.add(config->retrieve("dict-dir")); } diff -riwbBuN -Xex aspell-0.60.4/common/posib_err.cpp aspell-0.60.4-modified/common/posib_err.cpp --- aspell-0.60.4/common/posib_err.cpp Sun Nov 21 03:52:22 2004 +++ aspell-0.60.4-modified/common/posib_err.cpp Sat May 27 12:08:02 2006 @@ -13,6 +13,7 @@ #include "posib_err.hpp" #include "gettext.h" +#undef printf namespace acommon { diff -riwbBuN -Xex aspell-0.60.4/modules/speller/default/language.cpp aspell-0.60.4-modified/modules/speller/default/language.cpp --- aspell-0.60.4/modules/speller/default/language.cpp Sun Feb 20 22:47:08 2005 +++ aspell-0.60.4-modified/modules/speller/default/language.cpp Wed Jun 14 19:55:47 2006 @@ -21,10 +21,11 @@ #include "file_util.hpp" #ifdef ENABLE_NLS -# include +//#include #endif #include "gettext.h" +#undef printf namespace aspeller { diff -riwbBuN -Xex aspell-0.60.4/prog/aspell.cpp aspell-0.60.4-modified/prog/aspell.cpp --- aspell-0.60.4/prog/aspell.cpp Sun Jun 19 14:00:46 2005 +++ aspell-0.60.4-modified/prog/aspell.cpp Wed Jun 14 20:46:09 2006 @@ -60,6 +60,7 @@ #include "hash_fun.hpp" #include "gettext.h" +#undef printf using namespace acommon;