Index: common/config.cpp =================================================================== RCS file: /sources/aspell/aspell/common/config.cpp,v retrieving revision 1.72.2.1 diff -u -B -b -r1.72.2.1 config.cpp --- common/config.cpp 22 Jun 2005 05:32:29 -0000 1.72.2.1 +++ common/config.cpp 18 Sep 2006 17:42:40 -0000 @@ -1521,3 +1521,61 @@ } } + + + + +#ifdef WIN32PORT + +#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 //WIN32PORT Index: common/config.hpp =================================================================== RCS file: /sources/aspell/aspell/common/config.hpp,v retrieving revision 1.25 diff -u -B -b -r1.25 config.hpp --- common/config.hpp 18 Nov 2004 02:01:53 -0000 1.25 +++ common/config.hpp 18 Sep 2006 17:42:41 -0000 @@ -277,5 +277,20 @@ } +#ifdef WIN32PORT + +#include "minwin.h" + + + +namespace acommon { + + extern HKEY GetRegHive(); + extern String ReadRegString(HKEY type, String key, String name); + +} + +#endif + #endif Index: common/file_util.cpp =================================================================== RCS file: /sources/aspell/aspell/common/file_util.cpp,v retrieving revision 1.10 diff -u -B -b -r1.10 file_util.cpp --- common/file_util.cpp 15 Nov 2004 12:29:53 -0000 1.10 +++ common/file_util.cpp 18 Sep 2006 17:42:41 -0000 @@ -30,6 +30,8 @@ # define ACCESS _access # include # include +# include +# include #else Index: common/gettext_init.cpp =================================================================== RCS file: /sources/aspell/aspell/common/gettext_init.cpp,v retrieving revision 1.4 diff -u -B -b -r1.4 gettext_init.cpp --- common/gettext_init.cpp 9 Nov 2004 08:20:24 -0000 1.4 +++ common/gettext_init.cpp 18 Sep 2006 17:42:41 -0000 @@ -16,7 +16,20 @@ if (did_init) return; did_init = true; } +#ifdef WIN32PORT + // Registry key for Locale Path + + aspell::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 Index: common/info.cpp =================================================================== RCS file: /sources/aspell/aspell/common/info.cpp,v retrieving revision 1.34 diff -u -B -b -r1.34 info.cpp --- common/info.cpp 10 Nov 2004 06:18:45 -0000 1.34 +++ common/info.cpp 18 Sep 2006 17:42:42 -0000 @@ -493,7 +493,17 @@ StringList & lst) { lst.clear(); - lst.add(config->retrieve("data-dir")); + String dictpath; + +#ifdef WIN32PORT + HKEY hive = acommon::GetRegHive(); + // Registry key for dictionary path + dictpath =acommon::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")); } Index: common/objstack.cpp =================================================================== RCS file: /sources/aspell/aspell/common/objstack.cpp,v retrieving revision 1.5 diff -u -B -b -r1.5 objstack.cpp --- common/objstack.cpp 29 Jun 2004 00:18:16 -0000 1.5 +++ common/objstack.cpp 18 Sep 2006 17:42:42 -0000 @@ -1,6 +1,7 @@ #include "objstack.hpp" +namespace std {} namespace acommon { using namespace std; Index: common/posib_err.cpp =================================================================== RCS file: /sources/aspell/aspell/common/posib_err.cpp,v retrieving revision 1.16 diff -u -B -b -r1.16 posib_err.cpp --- common/posib_err.cpp 21 Nov 2004 02:52:22 -0000 1.16 +++ common/posib_err.cpp 18 Sep 2006 17:42:42 -0000 @@ -4,6 +4,7 @@ // license along with this library if you did not you can find // it at http://www.gnu.org/. +#include #include #include #include Index: common/vector.hpp =================================================================== RCS file: /sources/aspell/aspell/common/vector.hpp,v retrieving revision 1.12 diff -u -B -b -r1.12 vector.hpp --- common/vector.hpp 21 Jun 2004 02:40:07 -0000 1.12 +++ common/vector.hpp 18 Sep 2006 17:42:42 -0000 @@ -36,13 +36,13 @@ } T * data() {return &*this->begin();} T * data(int pos) {return &*this->begin() + pos;} - T * data_end() {return &*this->end();} + T * data_end() {return &this->back()+1;} T * pbegin() {return &*this->begin();} - T * pend() {return &*this->end();} + T * pend() {return &this->back()+1;} const T * pbegin() const {return &*this->begin();} - const T * pend() const {return &*this->end();} + const T * pend() const {return &this->back()+1;} template U * datap() { Index: modules/speller/default/affix.hpp =================================================================== RCS file: /sources/aspell/aspell/modules/speller/default/affix.hpp,v retrieving revision 1.19 diff -u -B -b -r1.19 affix.hpp --- modules/speller/default/affix.hpp 29 Nov 2004 17:50:06 -0000 1.19 +++ modules/speller/default/affix.hpp 18 Sep 2006 17:42:42 -0000 @@ -109,7 +109,7 @@ } WordAff * expand_suffix(ParmString word, const unsigned char * new_aff, ObjStack &, int limit = INT_MAX, - unsigned char * new_aff = 0, WordAff * * * l = 0, + unsigned char * new_aff2 = 0, WordAff * * * l = 0, ParmString orig_word = 0) const; private: Index: win32/settings.h =================================================================== RCS file: /sources/aspell/aspell/win32/settings.h,v retrieving revision 1.2 diff -u -B -b -r1.2 settings.h --- win32/settings.h 3 Jan 2004 12:06:25 -0000 1.2 +++ win32/settings.h 18 Sep 2006 17:42:43 -0000 @@ -1,44 +1,43 @@ -/* common/settings.h. Generated by configure. */ /* common/settings.h.in. Generated from configure.ac by autoheader. */ /* Defined if no special Workarounds are needed for Curses headers */ -/* #undef CURSES_INCLUDE_STANDARD */ +#undef CURSES_INCLUDE_STANDARD /* Defined if special Wordaround I is need for Curses headers */ -/* #undef CURSES_INCLUDE_WORKAROUND_1 */ +#undef CURSES_INCLUDE_WORKAROUND_1 /* Defined if curses like POSIX Functions should be used */ -/* #undef CURSES_ONLY */ +#undef CURSES_ONLY /* Defined if win32 relocation should be used */ -/* #undef ENABLE_WIN32_RELOCATABLE */ +#define ENABLE_WIN32_RELOCATABLE 1 /* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ +#undef HAVE_DLFCN_H /* Defined if msdos getch is supported */ -/* #undef HAVE_GETCH */ +#undef HAVE_GETCH /* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 +#undef HAVE_INTTYPES_H /* Defined if the curses library is available */ -/* #undef HAVE_LIBCURSES */ +#undef HAVE_LIBCURSES /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Defined if mmap and friends is supported */ -/* #undef HAVE_MMAP */ +#undef HAVE_MMAP /* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 +#undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 +#undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 @@ -50,43 +49,73 @@ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 +#undef HAVE_UNISTD_H /* Name of package */ -#define PACKAGE "aspell" +#undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" +#undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ -#define PACKAGE_NAME "" +#undef PACKAGE_NAME /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" +#undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" +#undef PACKAGE_TARNAME /* Define to the version of this package. */ -#define PACKAGE_VERSION "" +#undef PACKAGE_VERSION /* Defined if Posix Termios is Supported */ -/* #undef POSIX_TERMIOS */ +#undef POSIX_TERMIOS /* Defined if STL rel_ops polute the global namespace */ -/* #undef REL_OPS_POLLUTION */ +#undef REL_OPS_POLLUTION /* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 +#undef STDC_HEADERS /* Defined if file ino is supported */ -/* #undef USE_FILE_INO */ +#undef USE_FILE_INO /* Defined if file locking and truncating is supported */ -/* #undef USE_FILE_LOCKS */ +#undef USE_FILE_LOCKS /* Defined if Posix locales are supported */ -/* #undef USE_LOCALE */ +#undef USE_LOCALE /* Version number of package */ -#define VERSION "0.50.3" +#define VERSION "0.50.4.1" + +#define PACKAGE_VERSION "aspell-6.0" + +#define C_EXPORT extern "C" + +#if defined(ASPELL_NO_EXPORTS) +# define ASPELL_API +#elif defined(_WINDLL) || defined(_USRDLL) || defined(__DLL__) +# define ASPELL_API __declspec(dllexport) +#else +# define ASPELL_API __declspec(dllimport) +#endif /*_DLL */ + +// Microsoft VC6.0 does not allow typename except when directly +// declaring a template param. The other supporte compilers (Borlands +// BCB5.5 and GNU C++) require or allow it anywhere in the template +// decl. The macro TYPENAME is defines to whatever works. +#if defined(_MSC_VER) && (_MSC_VER<1300) +#define TYPENAME +#else +#define TYPENAME typename +#endif + +// Microsoft Visual C 6.0 stdio.h does not declare snprintf, rather +// it declares _snprintf. We define snprintf for VC builds here. +// snprintf is not standard, but it is common. +#ifdef _MSC_VER +#define snprintf _snprintf +#define vsnprintf _vsnprintf +#endif