[hunspell] 01/03: New upstream version 1.6.2
Rene Engelhard
rene at moszumanska.debian.org
Mon Sep 18 16:05:51 UTC 2017
This is an automated email from the git hooks/post-receive script.
rene pushed a commit to branch master
in repository hunspell.
commit cafa65c30ff21ab94611a2868c3ade56f8d7f77c
Author: Rene Engelhard <rene at rene-engelhard.de>
Date: Mon Sep 18 17:58:26 2017 +0200
New upstream version 1.6.2
---
.github/ISSUE_TEMPLATE.md | 41 +++
ChangeLog | 57 ----
HACKING | 2 +
NEWS | 52 ++++
README.md | 36 ++-
configure.ac | 12 +-
msvc/.gitignore | 11 +
msvc/Hunspell.rc | 32 +++
msvc/Hunspell.sln | 76 ++++++
msvc/config.h | 205 ++++++++++++++
msvc/hunspell.vcxproj | 207 ++++++++++++++
msvc/libhunspell.vcxproj | 406 +++++++++++++++++++++++++++
msvc/testparser.vcxproj | 207 ++++++++++++++
po/LINGUAS | 1 +
po/de.po | 500 ++++++++++++++++++++++++++++++++++
src/hunspell2/dic_manager.cxx | 1 -
src/hunspell2/main.cxx | 4 +-
src/parsers/xmlparser.cxx | 1 +
src/tools/.gitignore | 1 +
src/tools/Makefile.am | 5 +-
src/tools/bulkcheck.cxx | 196 +++++++++++++
src/tools/example.cxx | 2 -
src/tools/hunspell.cxx | 36 ++-
src/tools/munch.cxx | 1 +
src/tools/optionusage/.gitignore | 3 +
src/tools/optionusage/analyse.py | 213 +++++++++++++++
src/tools/optionusage/download.sh | 44 +++
src/tools/optionusage/option-usage.md | 121 ++++++++
src/tools/unmunch.cxx | 1 +
29 files changed, 2370 insertions(+), 104 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..f41831d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,41 @@
+The issues can be of three types (put an X between the brackets):
+
+- [ ] Bug reports
+- [ ] Change request or feature request
+- [ ] Others, questions
+
+# Reporting bugs
+
+When reporting a bug you must tell us the state of your system and the
+steps to reproduce the bug. For the state please specify the following:
+
+| key | value |
+|-----------------------------------|-------|
+| OS, distro, version = | |
+| Hunspell version = | |
+| Dictionary,package name,version = | |
+| Command line tool or GUI app = | |
+
+
+## Steps to reproduce
+
+
+## Bugged behavior (output)
+
+
+## Expected behavior (output)
+
+
+
+
+# Change/feature request
+
+If you want current behavior to get changed, please explain how do you
+want it changed. If it's completely new, please explain it how do you
+want it, as verbose as possible.
+
+# Other issues
+
+If you have just questions or some other type of issue, you have the
+freedom to ask it in any way. Try to be as verbose as possible.
+
diff --git a/ChangeLog b/ChangeLog
index b390185..1f6e774 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,60 +1,3 @@
-2017-03-25 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.6.1
- * Library changes:
- * Performance improvements in suggest()
- * Fixes regressions for Hungarian related to compounding.
- * Fixes regressions for Korean related to ICONV.
- * Command line tool:
- * Added Tajik translation
- * Fix regarding serching of OOo dicts installed in user folder
- * Manpages:
- * Fix microsoft-cp1251 to cp1251. Dicts should not use the first.
- * Typos.
-
-2016-12-22 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.6.0
- * Changes in the library:
- * Performance improvement in ngsuggest(), suggestions should be faster.
- * Revert MAXWORDLEN to 100 as in 1.3.3 for performance reasons.
- * MAXWORDLEN can be set during build time with -D defines.
- * Fix crash when word with 102 consecutive X is spelled.
- * Changes in the command line tool:
- * -D shows all loaded dictionares insted of only the first.
- * -D properly lists all available dictionaries on Windows.
-
-2016-11-30 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.5.4
- * Fixes the command COMPOUNDSYLLABLE used in Hungarian dictionary.
-
-2016-11-28 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.5.3
- * Removed a #include from hunspell.hxx that was creating trouble
-
-2016-11-27 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.5.2
- * Reverted full backward compatibility with 1.4 public API, again
-
-2016-11-27 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.5.1
- * Reverted full backward compatibility with 1.4 public API
-
-2016-11-26 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.5
- * Fixed the changelog notice bellow about the API. I had a mistake.
-
-2016-11-18 Dimitrij Mijoski <dmjpp at hotm>:
- * Version 1.5
- * Lot of stability fixes
- * Fixed compilation errors on various systems (Windows, FreeBSD)
- * Small performance improvement compared to 1.4.0
- * The C++ API is updated to use modern C++ types (string, vector).
- Backward compatibility is kept for most of the functions except for
- the following:
- get_wordchars();
- get_version();
- input_conv(string, string);
- removed get_csconv();
-
2016-04-29 Caolán McNamara <caolanm at LibO>:
* deprecate old api and add new one
old one remains implemented in terms of new one
diff --git a/HACKING b/HACKING
index 6c076f6..e65da70 100644
--- a/HACKING
+++ b/HACKING
@@ -2,6 +2,8 @@ To bump a release
1. edit...
a) ./configure.ac
+ b) ./msvc/Hunspell.rc
+ c) ./msvc/config.h
and convert release string X.Y.Z/X,Y,Z to the next version
2. autoconf && ./configure && make
diff --git a/NEWS b/NEWS
index 64c2029..8422a6f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,55 @@
+2017-09-03: Hunspell 1.6.2 release:
+ - Library changes: no. Same as 1.6.1.
+ - Command line tool:
+ - Added German translation
+ - Fixed bug with wrong output encoding, not respecting system locale.
+
+2017-03-25: Hunspell 1.6.1 release:
+ - Library changes:
+ - Performance improvements in suggest()
+ - Fixes regressions for Hungarian related to compounding.
+ - Fixes regressions for Korean related to ICONV.
+ - Command line tool:
+ - Added Tajik translation
+ - Fix regarding serching of OOo dicts installed in user folder
+ - Manpages:
+ - Fix microsoft-cp1251 to cp1251. Dicts should not use the first.
+ - Typos.
+
+2016-12-22: Hunspell 1.6.0 release:
+ - Library changes:
+ - Performance improvement in ngsuggest(), suggestions should be faster.
+ - Revert MAXWORDLEN to 100 as in 1.3.3 for performance reasons.
+ - MAXWORDLEN can be set during build time with -D defines.
+ - Fix crash when word with 102 consecutive X is spelled.
+ - Command line tool:
+ - -D shows all loaded dictionares insted of only the first.
+ - -D properly lists all available dictionaries on Windows.
+
+2016-11-30: Hunspell 1.5.4 release:
+ - Fixes the command COMPOUNDSYLLABLE used in Hungarian dictionary.
+
+2016-11-28: Hunspell 1.5.3 release:
+ - Removed a #include from hunspell.hxx that was creating trouble
+
+2016-11-27: Hunspell 1.5.2 release:
+ - Reverted full backward compatibility with 1.4 public API, again
+
+2016-11-27: Hunspell 1.5.1 release:
+ - Reverted full backward compatibility with 1.4 public API
+
+2016-11-18: Hunspell 1.5.0 release:
+ - Lot of stability fixes
+ - Fixed compilation errors on various systems (Windows, FreeBSD)
+ - Small performance improvement compared to 1.4.0
+ - The C++ API is updated to use modern C++ types (string, vector).
+ Backward compatibility is kept for most of the functions except for
+ the following:
+ - get_wordchars();
+ - get_version();
+ - input_conv(string, string);
+ - removed get_csconv();
+
2016-04-15: Hunspell 1.4.0 release:
- various abi changes due to moving away from char* to std::string
diff --git a/README.md b/README.md
index 38b53aa..13bac95 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
About Hunspell
==============
-NOTICE: Verison 2 is in the works. For contributing see
+NOTICE: Version 2 is in the works. For contributing see
[version 2 specification][v2spec] and the folder `src/hunspell2`.
[v2spec]: https://github.com/hunspell/hunspell/wiki/Version-2-Specification
@@ -31,24 +31,24 @@ Main features of Hunspell spell checker and morphological analyzer:
- Free software. Versions 1.x are licenced under LGPL, GPL, MPL tri-license.
Version 2 is licenced only under GNU LGPL.
-Compiling on Unix/Linux and others
-==================================
+Compiling on GNU/Linux and Unixes
+=================================
autoreconf -vfi
./configure
make
- make install #if neccesary prefix with sudo
- ldconfig #not needed on windows, on linux sudo may be needed
+ sudo make install
+ sudo ldconfig
-For dictionary development, use the --with-warnings option of configure.
+For dictionary development, use the `--with-warnings` option of configure.
-For interactive user interface of Hunspell executable, use the --with-ui option.
+For interactive user interface of Hunspell executable, use the `--with-ui option`.
The developer packages you need to compile Hunspell's interface:
autoconf automake autopoint libtool g++
-optional developer packages:
+Optional developer packages:
- ncurses (need for --with-ui), eg. libncursesw5 for UTF-8
- readline (for fancy input line editing,
@@ -59,8 +59,7 @@ optional developer packages:
Compiling on Windows
====================
-1. Compiling with Mingw64 and MSYS2
------------------------------------
+## 1. Compiling with Mingw64 and MSYS2
Download Msys2, update everything and install the following packages:
@@ -68,8 +67,7 @@ Download Msys2, update everything and install the following packages:
Open Mingw-w64 Win64 prompt and compile the same way as on Linux, see above.
-2. Compiling in Cygwin environment
-----------------------------------
+## 2. Compiling in Cygwin environment
Download and install Cygwin environment for Windows with the following
extra packages:
@@ -77,13 +75,21 @@ extra packages:
- make
- automake
- autoconf
+- libtool
- gcc-g++ development package
- ncurses, readline (for user interface)
- iconv (character conversion)
-###3.1. Cygwin1.dll dependent compiling
+Then compile the same way as on Linux. Cygwin builds depend on Cygwin1.dll.
-Same as on Linux.
+Debugging
+=========
+
+For debugging we need to create a debug build and then we need to start `gdb`.
+
+ make clean
+ make CXXFLAGS='-g -O0'
+ libtool --mode=execute gdb src/tools/hunspell
Testing
=======
@@ -116,7 +122,7 @@ http://hunspell.github.io/
Usage
=====
-The src/tools dictionary contains ten executables after compiling:
+The src/tools directory contains ten executables after compiling:
- affixcompress: dictionary generation from large (millions of words)
vocabularies
diff --git a/configure.ac b/configure.ac
index f1eebf1..fb79d0d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,20 +4,18 @@
m4_pattern_allow
AC_PREREQ(2.59)
-AC_INIT([hunspell],[1.6.1],[nemeth at numbertext.org])
-
+AC_INIT([hunspell],[1.6.2],[nemeth at numbertext.org])
+AC_CONFIG_SRCDIR([config.h.in])
+AC_CONFIG_HEADERS([config.h])
AC_CANONICAL_HOST
AC_SUBST(XFAILED)
-
-AM_INIT_AUTOMAKE(hunspell, 1.6.1)
+AC_USE_SYSTEM_EXTENSIONS
+AM_INIT_AUTOMAKE
HUNSPELL_VERSION_MAJOR=`echo $VERSION | cut -d"." -f1`
HUNSPELL_VERSION_MINOR=`echo $VERSION | cut -d"." -f2`
AC_SUBST(HUNSPELL_VERSION_MAJOR)
AC_SUBST(HUNSPELL_VERSION_MINOR)
-AC_CONFIG_SRCDIR([config.h.in])
-AC_CONFIG_HEADER([config.h])
-
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
diff --git a/msvc/.gitignore b/msvc/.gitignore
new file mode 100644
index 0000000..2b99776
--- /dev/null
+++ b/msvc/.gitignore
@@ -0,0 +1,11 @@
+Makefile
+/Debug/
+/Release/
+/Backup*/
+/x64/
+/*.db
+/*.user
+*.sdf
+*.opensdf
+*.suo
+UpgradeLog.htm
diff --git a/msvc/Hunspell.rc b/msvc/Hunspell.rc
new file mode 100644
index 0000000..8fd119e
--- /dev/null
+++ b/msvc/Hunspell.rc
@@ -0,0 +1,32 @@
+
+#include <windows.h>
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION 1,6,2,0
+PRODUCTVERSION 1,6,2,0
+FILEFLAGSMASK 0x17L
+FILEFLAGS 0
+FILEOS VOS_NT_WINDOWS32
+FILETYPE VFT_APP
+FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "Hunspell (http://hunspell.github.io/) by L�szl� N�meth"
+ VALUE "CompanyName", "http://hunspell.github.io/"
+ VALUE "FileDescription", "libhunspell"
+ VALUE "FileVersion", "1.6.2"
+ VALUE "InternalName", "libhunspell"
+ VALUE "LegalCopyright", "Copyright (c) 2007-2017"
+ VALUE "OriginalFilename", "libhunspell.dll"
+ VALUE "ProductName", "Hunspell Dynamic Link Library"
+ VALUE "ProductVersion", "1.6.2"
+ END
+ END
+END
diff --git a/msvc/Hunspell.sln b/msvc/Hunspell.sln
new file mode 100644
index 0000000..5607c8d
--- /dev/null
+++ b/msvc/Hunspell.sln
@@ -0,0 +1,76 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhunspell", "libhunspell.vcxproj", "{53609BB3-D874-465C-AF7B-DF626DB0D89B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testparser", "testparser.vcxproj", "{611BF6C7-332A-49BB-B2A3-80AFD5B785D9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hunspell", "hunspell.vcxproj", "{6A0453F4-B12A-4810-B9A2-8AB059316ED7}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug_dll|Win32 = Debug_dll|Win32
+ Debug_dll|x64 = Debug_dll|x64
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release_dll|Win32 = Release_dll|Win32
+ Release_dll|x64 = Release_dll|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug_dll|Win32.ActiveCfg = Debug_dll|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug_dll|Win32.Build.0 = Debug_dll|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug_dll|x64.ActiveCfg = Debug_dll|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug_dll|x64.Build.0 = Debug_dll|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug|Win32.Build.0 = Debug|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug|x64.ActiveCfg = Debug|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Debug|x64.Build.0 = Debug|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release_dll|Win32.ActiveCfg = Release_dll|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release_dll|Win32.Build.0 = Release_dll|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release_dll|x64.ActiveCfg = Release_dll|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release_dll|x64.Build.0 = Release_dll|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release|Win32.ActiveCfg = Release|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release|Win32.Build.0 = Release|Win32
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release|x64.ActiveCfg = Release|x64
+ {53609BB3-D874-465C-AF7B-DF626DB0D89B}.Release|x64.Build.0 = Release|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug_dll|Win32.ActiveCfg = Debug|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug_dll|Win32.Build.0 = Debug|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug_dll|x64.ActiveCfg = Debug|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug_dll|x64.Build.0 = Debug|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug|Win32.Build.0 = Debug|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug|x64.ActiveCfg = Debug|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Debug|x64.Build.0 = Debug|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release_dll|Win32.ActiveCfg = Release|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release_dll|Win32.Build.0 = Release|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release_dll|x64.ActiveCfg = Release|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release_dll|x64.Build.0 = Release|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release|Win32.ActiveCfg = Release|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release|Win32.Build.0 = Release|Win32
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release|x64.ActiveCfg = Release|x64
+ {611BF6C7-332A-49BB-B2A3-80AFD5B785D9}.Release|x64.Build.0 = Release|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug_dll|Win32.ActiveCfg = Debug|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug_dll|Win32.Build.0 = Debug|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug_dll|x64.ActiveCfg = Debug|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug_dll|x64.Build.0 = Debug|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug|Win32.Build.0 = Debug|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug|x64.ActiveCfg = Debug|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Debug|x64.Build.0 = Debug|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release_dll|Win32.ActiveCfg = Release|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release_dll|Win32.Build.0 = Release|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release_dll|x64.ActiveCfg = Release|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release_dll|x64.Build.0 = Release|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release|Win32.ActiveCfg = Release|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release|Win32.Build.0 = Release|Win32
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release|x64.ActiveCfg = Release|x64
+ {6A0453F4-B12A-4810-B9A2-8AB059316ED7}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/msvc/config.h b/msvc/config.h
new file mode 100644
index 0000000..f3b64fb
--- /dev/null
+++ b/msvc/config.h
@@ -0,0 +1,205 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#define CRAY_STACKSEG_END 1
+
+/* Define to 1 if using `alloca.c'. */
+#define C_ALLOCA 1
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the <argz.h> header file. */
+#define HAVE_ARGZ_H 1
+
+/* "Define if you have the <curses.h> header" */
+#undef HAVE_CURSES_H
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <error.h> header file. */
+#define HAVE_ERROR_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `feof_unlocked' function. */
+#define HAVE_FEOF_UNLOCKED 1
+
+/* Define to 1 if you have the `fgets_unlocked' function. */
+#define HAVE_FGETS_UNLOCKED 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#define HAVE_GETC_UNLOCKED 1
+
+/* Define to 1 if you have the `getegid' function. */
+#define HAVE_GETEGID 1
+
+/* Define to 1 if you have the `geteuid' function. */
+#define HAVE_GETEUID 1
+
+/* Define to 1 if you have the `getgid' function. */
+#define HAVE_GETGID 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define to 1 if you have the `getuid' function. */
+#define HAVE_GETUID 1
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#define HAVE_LANGINFO_CODESET 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#define HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#define HAVE_LIBINTL_H 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `memchr' function. */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mempcpy' function. */
+#define HAVE_MEMPCPY 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `munmap' function. */
+#define HAVE_MUNMAP 1
+
+/* "Define if you have the <ncursesw/curses.h> header" */
+#define HAVE_NCURSESW_H 1
+
+/* Define to 1 if you have the <nl_types.h> header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* "Define if you have fancy command input editing with Readline" */
+#undef HAVE_READLINE
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
+#define HAVE_STPCPY 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strstr' function. */
+#define HAVE_STRSTR 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `tsearch' function. */
+#define HAVE_TSEARCH 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `__argz_count' function. */
+#define HAVE___ARGZ_COUNT 1
+
+/* Define to 1 if you have the `__argz_next' function. */
+#define HAVE___ARGZ_NEXT 1
+
+/* Define to 1 if you have the `__argz_stringify' function. */
+#define HAVE___ARGZ_STRINGIFY 1
+
+/* "Define if you need warning messages" */
+#define HUNSPELL_WARNING_ON
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST 1
+
+/* Name of package */
+#define PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.6.2"
+#define VERSION "1.6.2"
diff --git a/msvc/hunspell.vcxproj b/msvc/hunspell.vcxproj
new file mode 100644
index 0000000..b63df4c
--- /dev/null
+++ b/msvc/hunspell.vcxproj
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{6A0453F4-B12A-4810-B9A2-8AB059316ED7}</ProjectGuid>
+ <RootNamespace>hunspell</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;_DEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <DisableSpecificWarnings>4127;4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;_DEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <DisableSpecificWarnings>4127;4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;NDEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat />
+ <DisableSpecificWarnings>4127;4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;NDEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
+ <DisableSpecificWarnings>4127;4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\parsers\firstparser.cxx" />
+ <ClCompile Include="..\src\parsers\htmlparser.cxx" />
+ <ClCompile Include="..\src\parsers\latexparser.cxx" />
+ <ClCompile Include="..\src\parsers\manparser.cxx" />
+ <ClCompile Include="..\src\parsers\odfparser.cxx" />
+ <ClCompile Include="..\src\parsers\textparser.cxx" />
+ <ClCompile Include="..\src\parsers\xmlparser.cxx" />
+ <ClCompile Include="..\src\tools\hunspell.cxx" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\parsers\firstparser.hxx" />
+ <ClInclude Include="..\src\parsers\htmlparser.hxx" />
+ <ClInclude Include="..\src\parsers\latexparser.hxx" />
+ <ClInclude Include="..\src\parsers\manparser.hxx" />
+ <ClInclude Include="..\src\parsers\odfparser.hxx" />
+ <ClInclude Include="..\src\parsers\textparser.hxx" />
+ <ClInclude Include="..\src\parsers\xmlparser.hxx" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="libhunspell.vcxproj">
+ <Project>{53609bb3-d874-465c-af7b-df626db0d89b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/libhunspell.vcxproj b/msvc/libhunspell.vcxproj
new file mode 100644
index 0000000..d3d1b9a
--- /dev/null
+++ b/msvc/libhunspell.vcxproj
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug_dll|Win32">
+ <Configuration>Debug_dll</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug_dll|x64">
+ <Configuration>Debug_dll</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release_dll|Win32">
+ <Configuration>Release_dll</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release_dll|x64">
+ <Configuration>Release_dll</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{53609BB3-D874-465C-AF7B-DF626DB0D89B}</ProjectGuid>
+ <RootNamespace>Hunspell</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental />
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|x64'">
+ <LinkIncremental />
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Lib>
+ <AdditionalOptions>/MACHINE:X86 %(AdditionalOptions)</AdditionalOptions>
+ </Lib>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Lib />
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat />
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Bscmake>
+ <SuppressStartupBanner>false</SuppressStartupBanner>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Bscmake>
+ <SuppressStartupBanner>false</SuppressStartupBanner>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|Win32'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBHUNSPELL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat />
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_dll|x64'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BUILDING_LIBHUNSPELL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ </ResourceCompile>
+ <Link>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <SubSystem>Windows</SubSystem>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|Win32'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;BUILDING_LIBHUNSPELL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_dll|x64'">
+ <PreBuildEvent>
+ <Command>echo N | copy /-Y ..\src\hunspell\hunvisapi.h.in ..\src\hunspell\hunvisapi.h</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;BUILDING_LIBHUNSPELL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>false</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\hunspell\affentry.hxx" />
+ <ClInclude Include="..\src\hunspell\affixmgr.hxx" />
+ <ClInclude Include="..\src\hunspell\atypes.hxx" />
+ <ClInclude Include="..\src\hunspell\baseaffix.hxx" />
+ <ClInclude Include="..\src\hunspell\csutil.hxx" />
+ <ClInclude Include="..\src\hunspell\filemgr.hxx" />
+ <ClInclude Include="..\src\hunspell\hashmgr.hxx" />
+ <ClInclude Include="..\src\hunspell\htypes.hxx" />
+ <ClInclude Include="..\src\hunspell\hunspell.h" />
+ <ClInclude Include="..\src\hunspell\hunspell.hxx" />
+ <ClInclude Include="..\src\hunspell\hunzip.hxx" />
+ <ClInclude Include="..\src\hunspell\langnum.hxx" />
+ <ClInclude Include="..\src\hunspell\phonet.hxx" />
+ <ClInclude Include="..\src\hunspell\replist.hxx" />
+ <ClInclude Include="..\src\hunspell\suggestmgr.hxx" />
+ <ClInclude Include="..\src\hunspell\w_char.hxx" />
+ <ClInclude Include="config.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="Hunspell.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\hunspell\affentry.cxx" />
+ <ClCompile Include="..\src\hunspell\affixmgr.cxx" />
+ <ClCompile Include="..\src\hunspell\csutil.cxx" />
+ <ClCompile Include="..\src\hunspell\filemgr.cxx" />
+ <ClCompile Include="..\src\hunspell\hashmgr.cxx" />
+ <ClCompile Include="..\src\hunspell\hunspell.cxx" />
+ <ClCompile Include="..\src\hunspell\hunzip.cxx" />
+ <ClCompile Include="..\src\hunspell\phonet.cxx" />
+ <ClCompile Include="..\src\hunspell\replist.cxx" />
+ <ClCompile Include="..\src\hunspell\suggestmgr.cxx" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/msvc/testparser.vcxproj b/msvc/testparser.vcxproj
new file mode 100644
index 0000000..c9e0cf7
--- /dev/null
+++ b/msvc/testparser.vcxproj
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{611BF6C7-332A-49BB-B2A3-80AFD5B785D9}</ProjectGuid>
+ <RootNamespace>testparser</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>$(SolutionDir)$(Configuration)\$(ProjectName)\</OutDir>
+ <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
+ <LinkIncremental>false</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;_DEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;_DEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;NDEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader />
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat />
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention />
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>..\src\hunspell;..\src\parsers;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>W32;WIN32;NDEBUG;_CONSOLE;HUNSPELL_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>
+ </DebugInformationFormat>
+ <DisableSpecificWarnings>4706</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\parsers\firstparser.cxx" />
+ <ClCompile Include="..\src\parsers\htmlparser.cxx" />
+ <ClCompile Include="..\src\parsers\latexparser.cxx" />
+ <ClCompile Include="..\src\parsers\manparser.cxx" />
+ <ClCompile Include="..\src\parsers\odfparser.cxx" />
+ <ClCompile Include="..\src\parsers\testparser.cxx" />
+ <ClCompile Include="..\src\parsers\textparser.cxx" />
+ <ClCompile Include="..\src\parsers\xmlparser.cxx" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\parsers\firstparser.hxx" />
+ <ClInclude Include="..\src\parsers\htmlparser.hxx" />
+ <ClInclude Include="..\src\parsers\latexparser.hxx" />
+ <ClInclude Include="..\src\parsers\manparser.hxx" />
+ <ClInclude Include="..\src\parsers\odfparser.hxx" />
+ <ClInclude Include="..\src\parsers\textparser.hxx" />
+ <ClInclude Include="..\src\parsers\xmlparser.hxx" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="libhunspell.vcxproj">
+ <Project>{53609bb3-d874-465c-af7b-df626db0d89b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/po/LINGUAS b/po/LINGUAS
index 3aa85ad..2e84c42 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,4 +1,5 @@
# Set of available languages.
+de
es
hu
it
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..c10b618
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,500 @@
+# German translation of hunspell.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the hunspell package.
+# Benjamin Weis <benjamin.weis at gmx.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: hunspell 1.5.0\n"
+"Report-Msgid-Bugs-To: nemeth at numbertext.org\n"
+"POT-Creation-Date: 2017-08-13 20:51+0200\n"
+"PO-Revision-Date: 2017-08-18 00:12+0200\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.3\n"
+"Last-Translator: Benjamin Weis <benjamin.weis at gmx.com>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: de\n"
+"X-Language: de_DE\n"
+"X-Source-Language: C\n"
+
+#: src/tools/hunspell.cxx:260 src/tools/hunspell.cxx:376
+#, c-format
+msgid "error - iconv_open: %s -> %s\n"
+msgstr "Fehler - iconv_open: %s -> %s\n"
+
+#: src/tools/hunspell.cxx:272
+#, c-format
+msgid "error - iconv: %s -> %s\n"
+msgstr "Fehler - iconv: %s -> %s\n"
+
+#: src/tools/hunspell.cxx:317 src/tools/hunspell.cxx:339
+#, c-format
+msgid "error - iconv_open: UTF-8 -> %s\n"
+msgstr "Fehler - iconv_open: UTF-8 -> %s\n"
+
+#: src/tools/hunspell.cxx:666 src/tools/hunspell.cxx:1575
+msgid "Can't create tmp dir"
+msgstr "Verzeichnis tmp kann nicht erstellt werden"
+
+#: src/tools/hunspell.cxx:677 src/tools/hunspell.cxx:689
+#: src/tools/hunspell.cxx:1558 src/tools/hunspell.cxx:1588
+#: src/tools/hunspell.cxx:1601
+msgid "Can't open inputfile"
+msgstr "Eingabedatei kann nicht geöffnet werden"
+
+#: src/tools/hunspell.cxx:679 src/tools/hunspell.cxx:1590
+#: src/tools/hunspell.cxx:2001 src/tools/hunspell.cxx:2153
+#: src/tools/hunspell.cxx:2170
+#, c-format
+msgid "Can't open %s.\n"
+msgstr "%s kann nicht geöffnet werden.\n"
+
+#: src/tools/hunspell.cxx:759 src/tools/hunspell.cxx:1345
+#: src/tools/hunspell.cxx:1457
+#, c-format
+msgid "error - missing HOME variable\n"
+msgstr "Fehler - fehlende HOME-Variable\n"
+
+#: src/tools/hunspell.cxx:844
+#, c-format
+msgid "Line %d: %s -> "
+msgstr "Zeile %d: %s -> "
+
+#: src/tools/hunspell.cxx:1124
+msgid "FORBIDDEN!"
+msgstr "VERBOTEN!"
+
+#: src/tools/hunspell.cxx:1126
+msgid "Spelling mistake?"
+msgstr "Rechtschreibfehler?"
+
+#: src/tools/hunspell.cxx:1128
+#, c-format
+msgid ""
+"\t%s\t\tFile: %s\n"
+"\n"
+msgstr ""
+"\t%s\t\tDatei: %s\n"
+"\n"
+
+#. TRANSLATORS: the capital letters are shortcuts, mark one letter similarly
+#. in your translation and translate the standalone letter accordingly later
+#.
+#: src/tools/hunspell.cxx:1187
+msgid ""
+"\n"
+"[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n"
+msgstr ""
+"\n"
+"[LEERTASTE] E)rsetzen A)nnehmen E(I)nfügen K)leinschreiben Ab(L)eiten "
+"S)chließen B)eenden oder ? für Hilfe\n"
+
+#: src/tools/hunspell.cxx:1258
+msgid ""
+"Whenever a word is found that is not in the dictionary\n"
+"it is printed on the first line of the screen. If the dictionary\n"
+"contains any similar words, they are listed with a number\n"
+"next to each one. You have the option of replacing the word\n"
+"completely, or choosing one of the suggested words.\n"
+msgstr ""
+"Immer wenn ein Wort gefunden wird, das nicht im Wörterbuch\n"
+"steht, wird es in der ersten Zeile des Bildschirms ausgegeben.\n"
+"Wenn das Wörterbuch irgendwelche ähnlichen Wörter enthält,\n"
+"wird jedes neben einer Nummer aufgelistet. Sie haben die\n"
+"Möglichkeit, das Wort vollständig zu ersetzen oder eines der\n"
+"vorgeschlagenen Wörter auszuwählen.\n"
+
+#: src/tools/hunspell.cxx:1264
+msgid ""
+"\n"
+"Commands are:\n"
+"\n"
+msgstr ""
+"\n"
+"Befehle sind:\n"
+"\n"
+
+#: src/tools/hunspell.cxx:1265
+msgid "R\tReplace the misspelled word completely.\n"
+msgstr "R\tFalsch geschriebenes Wort vollständig ersetzen.\n"
+
+#: src/tools/hunspell.cxx:1266
+msgid "Space\tAccept the word this time only.\n"
+msgstr "Leertaste\tWort nur dieses Mal übernehmen.\n"
+
+#: src/tools/hunspell.cxx:1268
+msgid "A\tAccept the word for the rest of this session.\n"
+msgstr "A\tWort für den Rest dieser Sitzung übernehmen.\n"
+
+#: src/tools/hunspell.cxx:1270
+msgid "I\tAccept the word, and put it in your private dictionary.\n"
+msgstr "I\tWort übernehmen und in Ihr privates Wörterbuch legen.\n"
+
+#: src/tools/hunspell.cxx:1272
+msgid "U\tAccept and add lowercase version to private dictionary.\n"
+msgstr ""
+"k\tÜbernehmen und kleingeschriebene Version zum privaten Wörterbuch "
+"hinzufügen.\n"
+
+#: src/tools/hunspell.cxx:1274
+msgid ""
+"S\tAsk a stem and a model word and store them in the private dictionary.\n"
+"\tThe stem will be accepted also with the affixes of the model word.\n"
+msgstr ""
+"S\tNach einen Wortstamm und einem Musterwort fragen und im privaten "
+"Wörterbuch speichern.\n"
+"\tDer Wortstamm wird auch mit den Affixen des Musterwortes übernommen.\n"
+
+#: src/tools/hunspell.cxx:1278
+msgid "0-n\tReplace with one of the suggested words.\n"
+msgstr "0-n\tMit einem der vorgeschlagenen Wörter ersetzen.\n"
+
+#: src/tools/hunspell.cxx:1280
+msgid ""
+"X\tWrite the rest of this file, ignoring misspellings, and start next file.\n"
+msgstr ""
+"B\tRest dieser Datei schreiben, Rechtschreibfehler ignorieren und nächste "
+"Datei starten.\n"
+
+#: src/tools/hunspell.cxx:1283
+msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n"
+msgstr ""
+"S\tSofort schließen. Bittet um Bestätigung. Lässt Datei ungeändert zurück.\n"
+
+#: src/tools/hunspell.cxx:1285
+msgid "^Z\tSuspend program. Restart with fg command.\n"
+msgstr "^Z\tProgramm unterbrechen. Mit Befehl fg neu starten.\n"
+
+#: src/tools/hunspell.cxx:1286
+msgid "?\tShow this help screen.\n"
+msgstr "?\tDiesen Hilfebildschirm anzeigen.\n"
+
+#: src/tools/hunspell.cxx:1287
+msgid ""
+"\n"
+"-- Type space to continue -- \n"
+msgstr ""
+"\n"
+"-- Zum Fortfahren Leertaste drücken -- \n"
+
+#. TRANSLATORS: translate this letter according to the shortcut letter
+#. used
+#. previously in the translation of "R)epl" before
+#: src/tools/hunspell.cxx:1299
+msgid "r"
+msgstr "e"
+
+#: src/tools/hunspell.cxx:1308
+msgid "Replace with: "
+msgstr "Ersetzen mit: "
+
+#. TRANSLATORS: translate these letters according to the shortcut letter
+#. used
+#. previously in the translation of "U)ncap" and I)nsert before
+#. TRANSLATORS: translate this letter according to the shortcut letter
+#. used
+#. previously in the translation of "U)ncap" and I)nsert before
+#: src/tools/hunspell.cxx:1332 src/tools/hunspell.cxx:1368
+msgid "u"
+msgstr "k"
+
+#: src/tools/hunspell.cxx:1333 src/tools/hunspell.cxx:1368
+msgid "i"
+msgstr "i"
+
+#: src/tools/hunspell.cxx:1361 src/tools/hunspell.cxx:1473
+#, c-format
+msgid "Cannot update personal dictionary."
+msgstr "Persönliches Wörterbuch kann nicht aktualisiert werden."
+
+#: src/tools/hunspell.cxx:1369
+msgid "a"
+msgstr "a"
+
+#. TRANSLATORS: translate this letter according to the shortcut letter
+#. used
+#. previously in the translation of "S)tem" before
+#: src/tools/hunspell.cxx:1377
+msgid "s"
+msgstr "l"
+
+#: src/tools/hunspell.cxx:1392
+msgid "New word (stem): "
+msgstr "Neues Wort (Wortstamm): "
+
+#: src/tools/hunspell.cxx:1420
+msgid "Model word (a similar dictionary word): "
+msgstr "Musterwort (ein ähnliches Wörterbuchwort): "
+
+#: src/tools/hunspell.cxx:1480
+msgid "Model word must be in the dictionary. Press any key!"
+msgstr "Musterwort muss im Wörterbuch sein. Drücken Sie eine beliebige Taste!"
+
+#. TRANSLATORS: translate this letter according to the shortcut letter
+#. used
+#. previously in the translation of "e(X)it" before
+#: src/tools/hunspell.cxx:1490
+msgid "x"
+msgstr "b"
+
+#. TRANSLATORS: translate this letter according to the shortcut letter
+#. used
+#. previously in the translation of "Q)uit" before
+#: src/tools/hunspell.cxx:1496
+msgid "q"
+msgstr "s"
+
+#: src/tools/hunspell.cxx:1499
+msgid "Are you sure you want to throw away your changes? "
+msgstr "Sind Sie sicher, dass Sie Ihre Änderungen wegwerfen möchten? "
+
+#. TRANSLATORS: translate this letter according to the shortcut
+#. * letter y)es
+#: src/tools/hunspell.cxx:1502
+msgid "y"
+msgstr "j"
+
+#: src/tools/hunspell.cxx:1611
+msgid "Can't create tempfile"
+msgstr "Temporäre Datei kann nicht erstellt werden"
+
+#: src/tools/hunspell.cxx:1656
+msgid "Can't open outputfile"
+msgstr "Ausgabedatei kann nicht erstellt werden"
+
+#: src/tools/hunspell.cxx:1821
+msgid "Usage: hunspell [OPTION]... [FILE]...\n"
+msgstr "Aufruf: hunspell [OPTION]... [DATEI]...\n"
+
+#: src/tools/hunspell.cxx:1822
+msgid ""
+"Check spelling of each FILE. Without FILE, check standard input.\n"
+"\n"
+msgstr ""
+"Rechtschreibung jeder DATEI überprüfen. Ohne DATEI die Standardeingabe "
+"überprüfen.\n"
+"\n"
+
+#: src/tools/hunspell.cxx:1824
+msgid " -1\t\tcheck only first field in lines (delimiter = tabulator)\n"
+msgstr ""
+" -1\t\tnur das erste Feld bei Zeilen überprüfen (Trennzeichen = Tabulator)\n"
+
+#: src/tools/hunspell.cxx:1826
+msgid " -a\t\tIspell's pipe interface\n"
+msgstr " -a\t\tPipe-Schnittstelle von Ispell\n"
+
+#: src/tools/hunspell.cxx:1827
+msgid " --check-url\tcheck URLs, e-mail addresses and directory paths\n"
+msgstr " --check-url\tURLs, E-Mail-Adressen und Verzeichnispfade überprüfen\n"
+
+#: src/tools/hunspell.cxx:1832
+msgid " --check-apostrophe\tcheck Unicode typographic apostrophe\n"
+msgstr " --check-apostrophe\tTypografischen Unicode-Apostroph überprüfen\n"
+
+#: src/tools/hunspell.cxx:1834
+msgid " -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n"
+msgstr " -d d[,d2,...]\td (d2 usw.) Wörterbücher verwenden\n"
+
+#: src/tools/hunspell.cxx:1835
+msgid " -D\t\tshow available dictionaries\n"
+msgstr " -D\t\tverfügbare Wörterbücher anzeigen\n"
+
+#: src/tools/hunspell.cxx:1836
+msgid " -G\t\tprint only correct words or lines\n"
+msgstr " -G\t\tnur korrekte Wörter oder Zeilen ausgeben\n"
+
+#: src/tools/hunspell.cxx:1837
+msgid " -h, --help\tdisplay this help and exit\n"
+msgstr " -h, --help\tdiese Hilfe anzeigen und beenden\n"
+
+#: src/tools/hunspell.cxx:1838
+msgid " -H\t\tHTML input file format\n"
+msgstr " -H\t\tHTML Eingabedateiformat\n"
+
+#: src/tools/hunspell.cxx:1839
+msgid " -i enc\tinput encoding\n"
+msgstr " -i enc\tEingabekodierung\n"
+
+#: src/tools/hunspell.cxx:1840
+msgid " -l\t\tprint misspelled words\n"
+msgstr " -l\t\tfalsch geschriebene Wörter ausgeben\n"
+
+#: src/tools/hunspell.cxx:1841
+msgid " -L\t\tprint lines with misspelled words\n"
+msgstr " -L\t\tZeilen mit falsch geschriebenen Wörtern ausgeben\n"
+
+#: src/tools/hunspell.cxx:1843
+msgid " -m \t\tanalyze the words of the input text\n"
+msgstr " -m \t\tWörter des Eingabetextes analysieren\n"
+
+#: src/tools/hunspell.cxx:1844
+msgid " -n\t\tnroff/troff input file format\n"
+msgstr " -n\t\tnroff/troff Eingabedateiformat\n"
+
+#: src/tools/hunspell.cxx:1848
+msgid " -O\t\tOpenDocument (ODF or Flat ODF) input file format\n"
+msgstr " -O\t\tOpenDocument (ODF oder Flat ODF) Eingabedateiformat\n"
+
+#: src/tools/hunspell.cxx:1849
+msgid " -p dict\tset dict custom dictionary\n"
+msgstr " -p dict\tbenutzerdefiniertes Wörterbuch dict festlegen\n"
+
+#: src/tools/hunspell.cxx:1851
+msgid " -r\t\twarn of the potential mistakes (rare words)\n"
+msgstr " -r\t\tvor den möglichen Fehlern warnen (seltene Wörter)\n"
+
+#: src/tools/hunspell.cxx:1854
+msgid " -P password\tset password for encrypted dictionaries\n"
+msgstr " -P password\tPasswort für verschlüsselte Wörterbücher festlegen\n"
+
+#: src/tools/hunspell.cxx:1855
+msgid " -s \t\tstem the words of the input text\n"
+msgstr " -s \t\tWorte des eingegebenen Textes ableiten\n"
+
+#: src/tools/hunspell.cxx:1856
+msgid " -S \t\tsuffix words of the input text\n"
+msgstr " -S \t\tWörter des Eingabetextes anhängen\n"
+
+#: src/tools/hunspell.cxx:1857
+msgid " -t\t\tTeX/LaTeX input file format\n"
+msgstr " -t\t\tTeX/Latex Eingabedateiformat\n"
+
+#: src/tools/hunspell.cxx:1858
+msgid " -v, --version\tprint version number\n"
+msgstr " -v, --version\tVersionsnummer ausgeben\n"
+
+#: src/tools/hunspell.cxx:1860
+msgid " -vv\t\tprint Ispell compatible version number\n"
+msgstr " -vv\t\tIspell-kompatible Versionsnummer ausgeben\n"
+
+#: src/tools/hunspell.cxx:1861
+msgid " -w\t\tprint misspelled words (= lines) from one word/line input.\n"
+msgstr ""
+" -w\t\tfalsch geschriebene Wörter (= Zeilen) von einer Wort-/Zeileneingabe "
+"ausgeben.\n"
+
+#: src/tools/hunspell.cxx:1863
+msgid ""
+" -X\t\tXML input file format\n"
+"\n"
+msgstr ""
+" -X\t\tXML Eingabedateiformat\n"
+"\n"
+
+#: src/tools/hunspell.cxx:1867
+msgid ""
+"Example: hunspell -d en_US file.txt # interactive spelling\n"
+" hunspell -i utf-8 file.txt # check UTF-8 encoded file\n"
+" hunspell -l *.odt # print misspelled words of ODF "
+"files\n"
+"\n"
+" # Quick fix of ODF documents by personal dictionary creation\n"
+"\n"
+" # 1 Make a reduced list from misspelled and unknown words:\n"
+"\n"
+" hunspell -l *.odt | sort | uniq >words\n"
+"\n"
+" # 2 Delete misspelled words of the file by a text editor.\n"
+" # 3 Use this personal dictionary to fix the deleted words:\n"
+"\n"
+" hunspell -p words *.odt\n"
+"\n"
+msgstr ""
+"Beispiel: hunspell -d en_US Datei.txt # interaktive Rechtschreibung\n"
+" hunspell -i utf-8 Datei.txt # UTF-8-kodierte Datei überprüfen\n"
+" hunspell -l *.odt # falsch geschriebene Wörter aus "
+"ODF-Dateien ausgeben\n"
+"\n"
+" # Schnelle Korrektur von ODF-Dokumenten durch persönliche "
+"Wörterbucherstellung\n"
+"\n"
+" # 1. Erstellen Sie eine reduzierte Liste aus falsch geschriebenen "
+"und unbekannten Wörtern:\n"
+"\n"
+" hunspell -l *.odt | sort | uniq >words\n"
+"\n"
+" # 2. Löschen Sie falsch geschriebene Wörter aus der Datei durch "
+"einen Texteditor.\n"
+" # 3. Verwenden Sie dieses persönliche Wörterbuch, um die gelöschten "
+"Wörter zu korrigieren:\n"
+"\n"
+" hunspell -p words *.odt\n"
+"\n"
+
+#: src/tools/hunspell.cxx:1882
+msgid "Bug reports: http://hunspell.github.io/\n"
+msgstr "Fehlerberichte: http://hunspell.github.io/\n"
+
+#: src/tools/hunspell.cxx:1890
+msgid ""
+"\n"
+"Copyright (C) 2002-2014 László Németh. License: MPL/GPL/LGPL.\n"
+"\n"
+"Based on OpenOffice.org's Myspell library.\n"
+"Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n"
+"\n"
+msgstr ""
+"\n"
+"Copyright (C) 2002-2014 László Németh. Lizenz: MPL/GPL/LGPL.\n"
+"\n"
+"Basiert auf der Myspell-Bibliothek von OpenOffice.org.\n"
+"Copyright von Myspell (C) Kevin Hendricks, 2001-2002, Lizenz: BSD.\n"
+"\n"
+
+#: src/tools/hunspell.cxx:1895
+msgid ""
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"
+"to the extent permitted by law.\n"
+msgstr ""
+"Dies ist freie Software; siehe die Quelle für Bedingungen zur "
+"Vervielfältigung.\n"
+"Es gibt keine Gewährleistung; nicht einmal für MARKTFÄHIGKEIT oder EIGNUNG "
+"FÜR\n"
+"EINEN BESTIMMTEN ZWECK, soweit gesetzlich zulässig.\n"
+
+#: src/tools/hunspell.cxx:2056
+#, c-format
+msgid ""
+"SEARCH PATH:\n"
+"%s\n"
+msgstr ""
+"PFAD SUCHEN:\n"
+"%s\n"
+
+#: src/tools/hunspell.cxx:2060
+msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n"
+msgstr ""
+"VERFÜGBARE WÖRTERBÜCHER (Pfad ist für Option -d nicht zwingend "
+"erforderlich):\n"
+
+#: src/tools/hunspell.cxx:2074
+#, c-format
+msgid ""
+"LOADED DICTIONARY:\n"
+"%s\n"
+"%s\n"
+msgstr ""
+"GELADENES WÖRTERBUCH:\n"
+"%s\n"
+"%s\n"
+
+#: src/tools/hunspell.cxx:2094
+#, c-format
+msgid "error - %s exceeds dictionary limit.\n"
+msgstr "Fehler - %s überschreitet Wörterbuchbegrenzung.\n"
+
+#: src/tools/hunspell.cxx:2100
+#, c-format
+msgid "Can't open affix or dictionary files for dictionary named \"%s\".\n"
+msgstr ""
+"Affix oder Wörterbuchdateien für ein Wörterbuch namens \"%s\" können nicht "
+"geöffnet werden.\n"
+
+#: src/tools/hunspell.cxx:2183
+msgid "Hunspell has been compiled without Ncurses user interface.\n"
+msgstr "Hunspell wurde ohne Ncurses-Benutzeroberfläche kompiliert.\n"
diff --git a/src/hunspell2/dic_manager.cxx b/src/hunspell2/dic_manager.cxx
index ad04f8c..005456c 100644
--- a/src/hunspell2/dic_manager.cxx
+++ b/src/hunspell2/dic_manager.cxx
@@ -47,7 +47,6 @@ auto dic_data::parse(std::istream& in, const aff_data& aff) -> bool
string morph;
vector<string> morphs;
u16string flags;
- int line_number = 0;
istringstream ss;
utf8_to_ucs2_converter cv;
while (getline(in, line)) {
diff --git a/src/hunspell2/main.cxx b/src/hunspell2/main.cxx
index 82730d9..4420e75 100644
--- a/src/hunspell2/main.cxx
+++ b/src/hunspell2/main.cxx
@@ -161,8 +161,8 @@ int main(int argc, char* argv[])
for (auto& a : aff.suffixes) {
cout << (char)a.flag << ' ' << (a.cross_product ? 'Y' : 'N')
<< ' ' << a.stripping << ' ' << a.affix
- << (a.new_flags.size() ? "/ " : " ") << a.condition
- << endl;
+ << (a.new_flags.size() ? "/ " : " ") << a.condition;
+ cout << endl;
}
for (auto& wd : dic.words) {
cout << wd.first;
diff --git a/src/parsers/xmlparser.cxx b/src/parsers/xmlparser.cxx
index 7ebc10f..1315011 100644
--- a/src/parsers/xmlparser.cxx
+++ b/src/parsers/xmlparser.cxx
@@ -188,6 +188,7 @@ bool XMLParser::next_token(const char* PATTERN[][2],
if (next_char(line[actual].c_str(), &head))
return false;
}
+ //FIXME No return, in function returning non-void
}
bool XMLParser::next_token(std::string& t) {
diff --git a/src/tools/.gitignore b/src/tools/.gitignore
index c5381e1..6d113b2 100644
--- a/src/tools/.gitignore
+++ b/src/tools/.gitignore
@@ -1,4 +1,5 @@
analyze
+bulkcheck
chmorph
example
hunspell
diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am
index 4c29f1a..176521e 100644
--- a/src/tools/Makefile.am
+++ b/src/tools/Makefile.am
@@ -19,9 +19,12 @@ hunspell_LDADD = @LIBINTL@ @LIBICONV@ ../parsers/libparsers.a \
analyze_SOURCES=analyze.cxx
analyze_LDADD = ../hunspell/libhunspell-1.6.la
+bulkcheck_SOURCES=bulkcheck.cxx
+bulkcheck_LDADD = ../hunspell/libhunspell-1.6.la
+
chmorph_SOURCES=chmorph.cxx
chmorph_LDADD = ../parsers/libparsers.a ../hunspell/libhunspell-1.6.la
-noinst_PROGRAMS=example
+noinst_PROGRAMS=example bulkcheck
dist_bin_SCRIPTS=makealias affixcompress wordforms ispellaff2myspell wordlist2hunspell
diff --git a/src/tools/bulkcheck.cxx b/src/tools/bulkcheck.cxx
new file mode 100644
index 0000000..791bfc8
--- /dev/null
+++ b/src/tools/bulkcheck.cxx
@@ -0,0 +1,196 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * Copyright (C) 2002-2017 Németh László for original code example.cxx
+ * Copyright (C) 2017 Pander for new code bulkcheck.cxx
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks.
+ *
+ * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno,
+ * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád,
+ * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter,
+ * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls,
+ * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include <cstring>
+#include <cstdlib>
+#include <fstream>
+#include <iostream>
+#include <iomanip>
+
+#include "config.h" // for macro VERSION
+#include "hunspell.hxx"
+
+using namespace std;
+
+int main(int argc, char** argv) {
+
+ /* first parse the command line options */
+
+ if (argc < 4) {
+ //TODO refactor to use a library for this
+ fprintf(stderr, "bulkcheck (now it works with more dictionary files):\n");
+ fprintf(stderr,
+ "bulkcheck affix_file dictionary_file(s) file_of_words_to_check result_file\n");
+ exit(1);
+ }
+
+ /* open the words to check list, word is expected on each line */
+ ifstream input_file(argv[argc - 1], ios_base::in);
+ if (!input_file.is_open()) {
+ fprintf(stderr, "Error - could not open file of words to check %s\n", argv[argc - 1]);
+ exit(1);
+ }
+
+ Hunspell* hunspell = new Hunspell(argv[1], argv[2]);
+
+ // load extra dictionaries, such as medical dictionaries or personal dictionaries that do not have affix file
+ //TODO This should go into the documentation
+ if (argc > 3)
+ for (int k = 3; k < argc - 1; ++k)
+ hunspell->add_dic(argv[k]);
+
+// /* open output file */
+// string filename = string(argv[argc - 1]) + "-bulkcheck.tsv";
+// ofstream output_file(filename, ios_base::out);
+// if (!output_file.is_open()) {
+// fprintf(stderr, "Error - could not open result file\n");
+// exit(1);
+// }
+
+ /* declare variables for iteration */
+ string word;
+ int num = 0;
+ int num_space = 0;
+ int num_correct = 0;
+ int num_correct_space = 0;
+
+ /* iterate all lines in input file */
+ while (getline(input_file, word)) {
+ /* count number of words and words with space */
+ num++;
+ bool has_space = false;
+ if (count(word.begin(), word.end(), ' ') > 0 ) {
+ has_space = true;
+ num_space++;
+ }
+
+ bool is_correct = hunspell->spell(word);
+// output_file << is_success << "\t" << is_correct << "\t" << has_space << "\t" << has_suggest
+// << "\t" << word.c_str() << "\t" << expect.c_str() << "\t";
+ cout << is_correct << "\t" << word.c_str() << "\t";
+
+ bool is_first = true;
+ if (is_correct) {
+ num_correct++;
+ if (has_space) {
+ num_correct_space++;
+ }
+ } else {
+ vector<string> suggestions = hunspell->suggest(word.c_str());
+ for (size_t i = 0; i < suggestions.size(); ++i) {
+ if (is_first) {
+ cout << suggestions[i];
+ is_first = false;
+ } else {
+ cout << ";" << suggestions[i];
+ }
+ }
+ }
+
+ cout << endl;
+ }
+
+ input_file.close();
+
+ if (num == 0) {
+ fprintf(stderr, "ERROR: No words to check in file %s:\n", argv[argc - 2]);
+ exit(1);
+ }
+
+ int num_nospace = num - num_space;
+ int num_incorrect = num - num_correct;
+ int num_incorrect_space = num_space - num_correct_space;
+ int num_correct_nospace = num_correct - num_correct_space;
+ int num_incorrect_nospace = num_nospace - num_correct_nospace;
+
+ float per_nospace = 100.0 * num_nospace / num;
+ float per_correct = 100.0 * num_correct / num;
+ float per_correct_space = 100.0;
+ if (num_space != 0) {
+ per_correct_space = 100.0 * num_correct_space / num_space;
+ }
+ float per_correct_nospace = 100.0;
+ if (num_nospace != 0) {
+ per_correct_nospace = 100.0 * num_correct_nospace / num_nospace;
+ }
+
+ float per_space = 100.0 - per_nospace;
+ float per_incorrect = 100.0 - per_correct;
+ float per_incorrect_space = 100.0 - per_correct_space;
+ float per_incorrect_nospace = 100.0 - per_correct_nospace;
+
+ cerr << "Hunspell version\t" << VERSION << endl;
+ cerr << "Hunspell affix\t" << argv[1] << endl;
+ cerr << "Hunspell dict\t" << argv[2] << endl;
+
+ cerr << "wordlist\t" << argv[argc - 1] << endl;
+ cerr << "percentage of words without space\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_nospace << endl;
+ cerr << "percentage of words with space\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_space << endl;
+
+ cerr << "number of words\t" << num << endl;
+ cerr << "number of correct words\t" << num_correct << endl;
+ cerr << "number of incorect words\t" << num_incorrect << endl;
+ cerr << "percentage of correct words\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_correct << endl;
+ cerr << "percentage of incorrect words\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_incorrect << endl;
+
+ cerr << "number of words without space\t" << num_nospace << endl;
+ cerr << "number of correct words without space\t" << num_correct_nospace << endl;
+ cerr << "number of incorrect words without space\t" << num_incorrect_nospace << endl;
+ cerr << "percentage of correct words without space\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_correct_nospace << endl;
+ cerr << "percentage of incorrect words without space\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_incorrect_nospace << endl;
+
+ cerr << "number of words with space\t" << num_space << endl;
+ cerr << "number of correct words with space\t" << num_correct_space << endl;
+ cerr << "number of incorrect words with space\t" << num_incorrect_space << endl;
+ cerr << "percentage of correct words with space\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_correct_space << endl;
+ cerr << "percentage of incorrect words with space\t" << fixed << setw(6)
+ << setprecision(2) << setfill('0') << per_incorrect_space << endl;
+
+// output_file.close();
+
+ delete hunspell;
+
+ return 0;
+}
diff --git a/src/tools/example.cxx b/src/tools/example.cxx
index b393889..42daea8 100644
--- a/src/tools/example.cxx
+++ b/src/tools/example.cxx
@@ -41,8 +41,6 @@
#include "hunspell.hxx"
-extern char* mystrdup(const char* s);
-
using namespace std;
int main(int argc, char** argv) {
diff --git a/src/tools/hunspell.cxx b/src/tools/hunspell.cxx
index 399df86..d35f6f2 100644
--- a/src/tools/hunspell.cxx
+++ b/src/tools/hunspell.cxx
@@ -243,7 +243,7 @@ static const char* fix_encoding_name(const char* enc) {
#endif
/* change character encoding */
-std::string& chenc(std::string& st, const char* enc1, const char* enc2) {
+std::string chenc(const std::string& st, const char* enc1, const char* enc2) {
#ifndef HAVE_ICONV
(void)enc1;
(void)enc2;
@@ -258,7 +258,7 @@ std::string& chenc(std::string& st, const char* enc1, const char* enc2) {
std::string out(st.size(), std::string::value_type());
size_t c1(st.size());
size_t c2(out.size());
- ICONV_CONST char* source = &st[0];
+ ICONV_CONST char* source = (ICONV_CONST char*) &st[0];
char* dest = &out[0];
iconv_t conv = iconv_open(fix_encoding_name(enc2), fix_encoding_name(enc1));
if (conv == (iconv_t)-1) {
@@ -267,9 +267,11 @@ std::string& chenc(std::string& st, const char* enc1, const char* enc2) {
size_t res;
while ((res = iconv(conv, &source, &c1, &dest, &c2)) == size_t(-1)) {
if (errno == E2BIG) {
- out.resize(out.size() + (c2 += c1));
-
- dest = const_cast<char*>(&out[0]) + out.size() - c2;
+ //c2 is zero or close to zero
+ size_t next_start = out.size() - c2;
+ c2 += c1;
+ out.resize(out.size() + c2);
+ dest = &out[next_start];
} else
break;
}
@@ -278,7 +280,7 @@ std::string& chenc(std::string& st, const char* enc1, const char* enc2) {
}
iconv_close(conv);
out.resize(dest - &out[0]);
- st = out;
+ return out;
}
return st;
@@ -507,8 +509,7 @@ void log(char* message) {
#endif
int putdic(const std::string& in_word, Hunspell* pMS) {
- std::string word(in_word);
- chenc(word, ui_enc, dic_enc[0]);
+ std::string word = chenc(in_word, ui_enc, dic_enc[0]);
std::string buf;
pMS->input_conv(word.c_str(), buf);
@@ -565,7 +566,7 @@ int save_privdic(const std::string& filename, const std::string& filename2, std:
if (!dic)
return 0;
for (size_t i = 0; i < w.size(); ++i) {
- chenc(w[i], io_enc, ui_enc);
+ w[i] = chenc(w[i], io_enc, ui_enc);
fprintf(dic, "%s\n", w[i].c_str());
}
fclose(dic);
@@ -595,8 +596,7 @@ char* scanline(char* message) {
// check words in the dictionaries (and set first checked dictionary)
bool check(Hunspell** pMS, int* d, const std::string& token, int* info, std::string* root) {
for (int i = 0; i < dmax; ++i) {
- std::string buf(token);
- chenc(buf, io_enc, dic_enc[*d]);
+ std::string buf = chenc(token, io_enc, dic_enc[*d]);
mystrrep(buf, ENTITY_APOS, "'");
if (checkapos && buf.find('\'') != std::string::npos)
return false;
@@ -937,7 +937,7 @@ nextline:
fprintf(stdout, "%s", chenc(wlst[0], dic_enc[d], io_enc).c_str());
}
for (size_t j = 1; j < wlst.size(); ++j) {
- fprintf(stdout, ", %s", chenc(wlst[j], dic_enc[d], io_enc).c_str());
+ fprintf(stdout, ", %s", chenc(wlst[j], dic_enc[d], io_enc).c_str());
}
fprintf(stdout, "\n");
fflush(stdout);
@@ -1194,8 +1194,7 @@ void dialogscreen(TextParser* parser,
}
std::string lower_first_char(const std::string& token, const char* ioenc, int langnum) {
- std::string utf8str(token);
- chenc(utf8str, ioenc, "UTF-8");
+ std::string utf8str = chenc(token, ioenc, "UTF-8");
std::vector<w_char> u;
u8_u16(u, utf8str);
if (!u.empty()) {
@@ -1206,8 +1205,7 @@ std::string lower_first_char(const std::string& token, const char* ioenc, int la
}
std::string scratch;
u16_u8(scratch, u);
- chenc(scratch, "UTF-8", ioenc);
- return scratch;
+ return chenc(scratch, "UTF-8", ioenc);
}
// for terminal interface
@@ -1532,13 +1530,13 @@ int interactive_line(TextParser* parser,
std::vector<std::string> wlst;
dialogscreen(parser, token, filename, info, wlst); // preview
refresh();
- std::string buf(token);
- wlst = pMS[d]->suggest(mystrrep(chenc(buf, io_enc, dic_enc[d]), ENTITY_APOS, "'").c_str());
+ std::string dicbuf = chenc(token, io_enc, dic_enc[d]);
+ wlst = pMS[d]->suggest(mystrrep(dicbuf, ENTITY_APOS, "'").c_str());
if (wlst.empty()) {
dialogexit = dialog(parser, pMS[d], token, filename, wlst, info);
} else {
for (size_t j = 0; j < wlst.size(); ++j) {
- chenc(wlst[j], dic_enc[d], io_enc);
+ wlst[j] = chenc(wlst[j], dic_enc[d], io_enc);
}
dialogexit = dialog(parser, pMS[d], token, filename, wlst, info);
}
diff --git a/src/tools/munch.cxx b/src/tools/munch.cxx
index 17fc6fd..5f51fc6 100644
--- a/src/tools/munch.cxx
+++ b/src/tools/munch.cxx
@@ -348,6 +348,7 @@ int parse_aff_file(FILE* afflst) {
}
fprintf(stderr, " affix: %s %d, strip: %s %d\n", nptr->appnd,
nptr->appndl, nptr->strip, nptr->stripl);
+ // no break
default:
break;
}
diff --git a/src/tools/optionusage/.gitignore b/src/tools/optionusage/.gitignore
new file mode 100644
index 0000000..cd1d076
--- /dev/null
+++ b/src/tools/optionusage/.gitignore
@@ -0,0 +1,3 @@
+./usr
+./var
+./debs
diff --git a/src/tools/optionusage/analyse.py b/src/tools/optionusage/analyse.py
new file mode 100755
index 0000000..f295683
--- /dev/null
+++ b/src/tools/optionusage/analyse.py
@@ -0,0 +1,213 @@
+#!/usr/bin/env python3
+
+from os import listdir, path
+from datetime import datetime
+
+
+def report(output, desc, dikt_has, options, doc, option_count, all_dikts=False):
+ # header
+ output.write('## {} Options\n\n'.format(desc))
+ difopt = 0
+ for option in options:
+ if option in option_count:
+ difopt += 1
+ if difopt == 0:
+ output.write('A total of {} {} different options are recognised by Hunspell. None of these options are used'.format(
+ len(options), desc.lower()))
+ elif difopt == len(options):
+ output.write('A total of {} {} different options are recognised by Hunspell. All of these options are used'.format(
+ len(options), desc.lower()))
+ elif difopt == 1:
+ output.write('A total of {} {} different options are recognised by Hunspell. Of these, only 1 option is used'.format(
+ len(options), desc.lower()))
+ else:
+ output.write('A total of {} {} different options are recognised by Hunspell. Of these, only {} different options are used'.format(
+ len(options), desc.lower(), difopt))
+ if len(dikt_has) == 0:
+ output.write('\n\n')
+ elif len(dikt_has) == 1:
+ if len(dikt_has) == len(doc):
+ output.write(' in all 1 dictionary.\n\n')
+ else:
+ output.write(' in only 1 dictionary.\n\n')
+ else:
+ if len(dikt_has) == len(doc):
+ output.write(' in all {} dictionaries.\n\n'.format(len(dikt_has)))
+ else:
+ output.write(' in only {} dictionaries.\n\n'.format(len(dikt_has)))
+
+ output.write('| {} vs. Dictionary'.format(desc))
+ if all_dikts:
+ for dikt in sorted(doc):
+ output.write(' | {}'.format(dikt.replace('_', '\_')))
+ else:
+ for dikt in sorted(dikt_has):
+ output.write(' | {}'.format(dikt.replace('_', '\_')))
+ output.write(' |\n')
+
+ # format
+ output.write('|---')
+ if all_dikts:
+ for dikt in sorted(doc):
+ output.write('|--:')
+ else:
+ for dikt in sorted(dikt_has):
+ output.write('|--:')
+ output.write('|\n')
+
+ # content
+ for option in options:
+ output.write('| {}'.format(option))
+ if all_dikts:
+ for dikt in sorted(doc):
+ oc = doc[dikt]
+ if option in oc:
+ output.write(' | {}'.format(oc[option]))
+ else:
+ output.write(' |')
+ else:
+ for dikt in sorted(dikt_has):
+ oc = doc[dikt]
+ if option in oc:
+ output.write(' | {}'.format(oc[option]))
+ else:
+ output.write(' |')
+ output.write(' |\n')
+ output.write('\n\n')
+
+# followings list are manually obtained from $ man -K 5 hunspell
+options_general = ('SET', 'FLAG', 'COMPLEXPREFIXES',
+ 'LANG', 'IGNORE', 'AF', 'AM', )
+options_suggest = ('KEY', 'TRY', 'NOSUGGEST', 'MAXCPDSUGS', 'MAXNGRAMSUGS', 'MAXDIFF',
+ 'ONLYMAXDIFF', 'NOSPLITSUGS', 'SUGSWITHDOTS', 'REP', 'MAP', 'PHONE', 'WARN', 'FORBIDWARN', )
+options_compounding = ('BREAK', 'COMPOUNDRULE', 'COMPOUNDMIN', 'COMPOUNDFLAG', 'COMPOUNDBEGIN', 'COMPOUNDLAST', 'COMPOUNDMIDDLE', 'ONLYINCOMPOUND', 'COMPOUNDPERMITFLAG', 'COMPOUNDFORBIDFLAG', 'COMPOUNDMORESUFFIXES', 'COMPOUNDROOT',
+ 'COMPOUNDWORDMAX', 'CHECKCOMPOUNDDUP', 'CHECKCOMPOUNDREP', 'CHECKCOMPOUNDCASE', 'CHECKCOMPOUNDTRIPLE', 'SIMPLIFIEDTRIPLE', 'CHECKCOMPOUNDPATTERN', 'FORCEUCASE', 'COMPOUNDSYLLABLE', 'SYLLABLENUM', ) # 'COMPOUND',
+options_affix = ('PFX', 'SFX', 'CIRCUMFIX', 'FORBIDDENWORD', 'FULLSTRIP', 'KEEPCASE',
+ 'ICONV', 'OCONV', 'NEEDAFFIX', 'SUBSTANDARD', 'WORDCHARS', 'CHECKSHARPS', )
+options_deprecated = ('LEMMA_PRESENT', 'PSEUDOROOT', )
+
+# self-check
+for o in options_general:
+ if o in options_suggest:
+ print('ERROR: Overlap general and sugest')
+ exit(1)
+ if o in options_compounding:
+ print('ERROR: Overlap general and compounding')
+ exit(1)
+ if o in options_affix:
+ print('ERROR: Overlap general and affix')
+ exit(1)
+ if o in options_deprecated:
+ print('ERROR: Overlap general and deprecated')
+ exit(1)
+for o in options_suggest:
+ if o in options_compounding:
+ print('ERROR: Overlap suggest and compounding')
+ exit(1)
+ if o in options_affix:
+ print('ERROR: Overlap suggest and affix')
+ exit(1)
+ if o in options_deprecated:
+ print('ERROR: Overlap sugges and deprecated')
+ exit(1)
+for o in options_compounding:
+ if o in options_affix:
+ print('ERROR: Overlap compounding and affix')
+ exit(1)
+ if o in options_deprecated:
+ print('ERROR: Overlap compounding and deprecated')
+ exit(1)
+for o in options_affix:
+ if o in options_deprecated:
+ print('ERROR: Overlap affix and deprecated')
+ exit(1)
+
+options_found = []
+options_undocumented = []
+option_count = {} # option / count
+
+doc = {} # dictionary / option / count
+options = []
+dikt_has_general = []
+dikt_has_suggest = []
+dikt_has_compounding = []
+dikt_has_affix = []
+dikt_has_deprecated = []
+dikt_has_undocumented = []
+
+directory = 'usr/share/hunspell/'
+for filename in listdir(directory):
+ filepath = directory + filename
+ if filename.endswith('.aff') and path.islink(filepath):
+ print('XX', filename)
+ if filename.endswith('.dic') and not path.islink(filepath):
+ print('YY', filename)
+ if not filename.endswith('.aff') or path.islink(filepath) or filename in ('kk_KZ.aff', ): #FIXME kk_KZ.aff has invalid first character
+ continue
+ input = None
+ print(filename)
+ if filename in ('de_AT_frami.aff', 'de_CH_frami.aff', 'de_DE_frami.aff', 'de_DE.aff', 'en_US.aff', 'pt_BR.aff', 'sl_SI.aff', 'th_TH.aff', 'ru_RU.aff', 'nn_NO.aff', 'an_ES.aff', 'af_ZA.aff', 'el_GR.aff', 'bg_BG.aff', 'de_CH.aff', 'it_IT.aff', 'hu_HU.aff', 'pl_PL.aff', 'cs_CZ.aff', 'eu.aff', 'lt_LT.aff', 'nb_NO.aff', 'oc_FR.aff', 'bs_BA.aff', 'de_AT.aff', ):
+ input = open(filepath, 'r', encoding='ISO-8859-1')
+ else:
+ input = open(filepath, 'r')
+ dikt = filename.replace('.aff', '')
+ doc[dikt] = {}
+ oc = doc[dikt]
+ for line in input:
+ if dikt == 'kk_KZ':
+ line.replace('', '')
+ print(line)
+ line = line.strip()
+ if line == '' or line.startswith('#'):
+ continue
+ while ' ' in line: # TODO
+ line = line.replace(' ', ' ')
+ while '\t' in line: # TODO report?
+ line = line.replace('\t', ' ')
+ br = line.split(' ')
+ option = br[0]
+# print(option, oc[option])
+ if option not in options_found:
+ options_found.append(option)
+ if option in oc:
+ oc[option] += 1
+ else:
+ oc[option] = 1
+ if option in options_general:
+ if dikt not in dikt_has_general:
+ dikt_has_general.append(dikt)
+ elif option in options_suggest:
+ if dikt not in dikt_has_suggest:
+ dikt_has_suggest.append(dikt)
+ elif option in options_compounding:
+ if dikt not in dikt_has_compounding:
+ dikt_has_compounding.append(dikt)
+ elif option in options_affix:
+ if dikt not in dikt_has_affix:
+ dikt_has_affix.append(dikt)
+ elif option in options_deprecated:
+ if dikt not in dikt_has_deprecated:
+ dikt_has_deprecated.append(dikt)
+ else:
+ if dikt not in dikt_has_undocumented:
+ dikt_has_undocumented.append(dikt)
+ if option not in options_undocumented:
+ options_undocumented.append(option)
+ if option in option_count:
+ option_count[option] += 1
+ else:
+ option_count[option] = 1
+
+output = open('option-usage.md', 'w')
+output.write('# Hunspell Option Usage per Dictionary\n\n')
+output.write('This page has been generated at {}. Do not edit this page manually.\n\n'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S').replace(' ' , ' at ')))
+
+print('dictionaries found', len(doc))
+print('options found', len(options_found))
+
+report(output, 'General', dikt_has_general, options_general, doc, option_count, all_dikts=True)
+report(output, 'Suggest', dikt_has_suggest, options_suggest, doc, option_count)
+report(output, 'Compounding', dikt_has_compounding, options_compounding, doc, option_count)
+report(output, 'Affix', dikt_has_affix, options_affix, doc, option_count)
+report(output, 'Deprecated', dikt_has_deprecated, options_deprecated, doc, option_count)
+report(output, 'Undocumented', dikt_has_undocumented, options_undocumented, doc, option_count)
diff --git a/src/tools/optionusage/download.sh b/src/tools/optionusage/download.sh
new file mode 100755
index 0000000..63d1d92
--- /dev/null
+++ b/src/tools/optionusage/download.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+PACKAGES=`apt-cache search hunspell|grep ^hunspell|grep dict|awk '{print $1}'|tr '\n' ' '`
+echo $PACKAGES|sed 's/ /\n/g'
+
+if [ -e usr ]
+then
+ rm -rf usr
+fi
+if [ -e var ]
+then
+ rm -rf var
+fi
+
+if [ -e debs ]
+then
+ rm -rf debs
+fi
+mkdir debs
+
+cd debs
+apt-get download $PACKAGES
+for i in *.deb
+do
+ dpkg -x $i ..
+done
+cd ..
+
+if [ -e debs ]
+then
+ rm -rf debs
+fi
+if [ -e var ]
+then
+ rm -rf var
+fi
+if [ -e usr/share/myspell ]
+then
+ rm -rf usr/share/myspell
+fi
+if [ -e usr/share/doc ]
+then
+ rm -rf usr/share/doc
+fi
diff --git a/src/tools/optionusage/option-usage.md b/src/tools/optionusage/option-usage.md
new file mode 100644
index 0000000..2146f35
--- /dev/null
+++ b/src/tools/optionusage/option-usage.md
@@ -0,0 +1,121 @@
+# Hunspell Option Usage per Dictionary
+
+This page has been generated at 2017-04-25 at 23:17:56. Do not edit this page manually.
+
+## General Options
+
+A total of 7 general different options are recognised by Hunspell. Of these, only 6 different options are used in all 63 dictionaries.
+
+| General vs. Dictionary | af\_ZA | an\_ES | ar | be\_BY | bg\_BG | bn\_BD | bo | br\_FR | bs\_BA | ca | ca\_ES-valencia | cs\_CZ | da\_DK | de\_AT\_frami | de\_CH\_frami | de\_DE\_frami | el\_GR | en\_AU | en\_CA | en\_GB | en\_US | en\_ZA | es\_ES | eu | fr | gd\_GB | gl\_ES | gu\_IN | he\_IL | hi\_IN | hr\_HR | hu\_HU | is\_IS | it\_IT | kmr\_Latn | ko | lo\_LA | lt\_LT | ml\_IN | nb\_NO | ne\_NP | nl\_NL | nn\_NO | oc\_FR | pl\_PL | pt\_BR | pt\_PT | ro\_RO | ru\_RU | se | si\_LK | s [...]
+|---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
+| SET | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+| FLAG | | | 1 | | | | | 1 | | 1 | 1 | | 1 | | | | | | | | | | | 1 | 1 | | 1 | | | | 1 | | 1 | | | 1 | | | | | 1 | 1 | | | | | | | | 1 | 1 | | | | | | | | | | | | |
+| COMPLEXPREFIXES | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+| LANG | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | | 1 | | 1 | | | | | | | | | | | 1 | | | | | | | 1 | 1 | | | | | | | | |
+| IGNORE | | | 1 | | | | 1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | | |
+| AF | | | 512 | | | | | | | | | | | | | | | | | | | | | | 277 | | | | | | 99 | 1307 | | | | 56 | | | | | | | | | | | | | | 3501 | | | | | | | | | | | | | |
+| AM | | | 23625 | | | | | | | | | | | | | | | | | | | | | | 485 | | | | | | | 23051 | 701 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+
+
+## Suggest Options
+
+A total of 14 suggest different options are recognised by Hunspell. Of these, only 12 different options are used in only 60 dictionaries.
+
+| Suggest vs. Dictionary | af\_ZA | an\_ES | ar | be\_BY | bg\_BG | bn\_BD | bo | br\_FR | bs\_BA | ca | ca\_ES-valencia | cs\_CZ | da\_DK | de\_AT\_frami | de\_CH\_frami | de\_DE\_frami | el\_GR | en\_AU | en\_CA | en\_GB | en\_US | en\_ZA | es\_ES | eu | fr | gd\_GB | gl\_ES | gu\_IN | he\_IL | hi\_IN | hr\_HR | hu\_HU | is\_IS | it\_IT | kmr\_Latn | ko | lt\_LT | nb\_NO | ne\_NP | nl\_NL | nn\_NO | oc\_FR | pl\_PL | pt\_BR | pt\_PT | ro\_RO | ru\_RU | se | si\_LK | sk\_SK | sl\_SI | s [...]
+|---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
+| KEY | | | 1 | | | | | | | 1 | 1 | | 1 | | | | | | | | 1 | | | | 1 | | 1 | | | | | 1 | 1 | | | | | | | 1 | | | | | 1 | 1 | | | | | | 1 | 1 | | | | | | | |
+| TRY | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 |
+| NOSUGGEST | | | | | | | | | | | | | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | | | 1 | | | | | | 1 | 1 | | | | | | | | 1 | | | | 1 | | | | | | | | | | 1 | 1 | | | | | |
+| MAXCPDSUGS | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | 1 | | | | | |
+| MAXNGRAMSUGS | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | |
+| MAXDIFF | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | | | | | | | | | | 1 | 1 | | | | | |
+| ONLYMAXDIFF | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | | | | | | | | | | 1 | 1 | | | | | |
+| NOSPLITSUGS | 1 | | | | | | 1 | | | | | | 1 | | | | | | | | | | | 1 | | | 1 | | | | | | 1 | | | | | | | 1 | | | | | | | | | | | | | | 1 | 1 | | | | | |
+| SUGSWITHDOTS | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+| REP | 28 | 114 | 81 | 36 | | | 7 | | | 49 | 49 | | 113 | 29 | 29 | 29 | 523 | 115 | 91 | 28 | 98 | 37 | 21 | 37 | 83 | 49 | 3737 | | | | 100 | 125 | 58 | 5 | 37 | 60 | | | 23 | 488 | | | 65 | 1056 | 26 | 5 | | 74 | 26 | 53 | | 2 | 9 | 60 | 60 | | | 5 | 6 | 19 |
+| MAP | 7 | 37 | 17 | 21 | 27 | | | | | 25 | 25 | | | | | | 6 | | | | | | 6 | | 26 | 6 | 22 | | 11 | | | 6 | | 6 | | 13 | | | | 6 | | 6 | 9 | 7 | 12 | 9 | | | | | | 5 | 5 | 3 | 3 | | | | | 19 |
+| PHONE | | | | | | | | | | | | | | | | | | 105 | | | 106 | 105 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+| WARN | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | | | | | | | | | | | | | 1 | | | | | | | | | | | | | | | | |
+| FORBIDWARN | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+
+
+## Compounding Options
+
+A total of 22 compounding different options are recognised by Hunspell. Of these, only 21 different options are used in only 25 dictionaries.
+
+| Compounding vs. Dictionary | be\_BY | da\_DK | de\_AT\_frami | de\_CH\_frami | de\_DE\_frami | en\_AU | en\_CA | en\_GB | en\_US | en\_ZA | eu | fr | gd\_GB | he\_IL | hr\_HR | hu\_HU | ko | nb\_NO | nl\_NL | nn\_NO | pt\_BR | se | sv\_FI | sv\_SE | uk\_UA |
+|---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
+| BREAK | 3 | | 3 | 3 | 3 | 4 | | | | 4 | 2 | 8 | 2 | 4 | 3 | 5 | | | 2 | | 65 | 2 | 4 | 4 | 2 |
+| COMPOUNDRULE | | | | | | 3 | 3 | 3 | 3 | | | | | | 8 | 3 | 7 | | | | | | 13 | 13 | |
+| COMPOUNDMIN | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | | | | | 1 | 1 | 1 | 1 | 1 | 1 | | | 1 | 1 | |
+| COMPOUNDFLAG | | | | | | | | | | | | | | | 1 | 1 | | 1 | | 1 | | | | | |
+| COMPOUNDBEGIN | | 1 | 1 | 1 | 1 | | | | | | | | | | 1 | 1 | | | 1 | | | 1 | 1 | 1 | |
+| COMPOUNDLAST | | | | | | | | | | | | | | | | 1 | | | | | | | | | |
+| COMPOUNDMIDDLE | | 1 | 1 | 1 | 1 | | | | | | | | | | 1 | | | | 1 | | | 1 | 1 | 1 | |
+| ONLYINCOMPOUND | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | | | | | 1 | 1 | | | 1 | | | 1 | 1 | 1 | |
+| COMPOUNDPERMITFLAG | | 1 | 1 | 1 | 1 | | | | | | | | | | 1 | 1 | | | 1 | | | 1 | 1 | 1 | |
+| COMPOUNDFORBIDFLAG | | | | | | | | | | | | | | | 1 | 1 | | | | | | 1 | | | |
+| COMPOUNDMORESUFFIXES | | | | | | | | | | | | | | | | | | | | | | | | | |
+| COMPOUNDROOT | | | | | | | | | | | | | | | | 1 | | | | | | | | | |
+| COMPOUNDWORDMAX | | 1 | | | | | | | | | | | | | | 1 | | | | | | | | | |
+| CHECKCOMPOUNDDUP | | | | | | | | | | | | | | | | 1 | | | 1 | | | | 1 | 1 | |
+| CHECKCOMPOUNDREP | | | | | | | | | | | | | | | | 1 | | | | | | | 1 | 1 | |
+| CHECKCOMPOUNDCASE | | | | | | | | | | | | | | | | 1 | | | 1 | | | | | | |
+| CHECKCOMPOUNDTRIPLE | | | | | | | | | | | | | | | | 1 | | 1 | | | | | 1 | 1 | |
+| SIMPLIFIEDTRIPLE | | | | | | | | | | | | | | | | | | 1 | | | | | 1 | 1 | |
+| CHECKCOMPOUNDPATTERN | | | | | | | | | | | | | | | | 8 | | | 43 | | | | | | |
+| FORCEUCASE | | | | | | | | | | | | | | | | | | | | | | | 1 | 1 | |
+| COMPOUNDSYLLABLE | | | | | | | | | | | | | | | | 1 | | | | | | | | | |
+| SYLLABLENUM | | | | | | | | | | | | | | | | 1 | | | | | | | | | |
+
+
+## Affix Options
+
+A total of 12 affix different options are recognised by Hunspell. All of these options are used in only 54 dictionaries.
+
+| Affix vs. Dictionary | af\_ZA | an\_ES | ar | be\_BY | bg\_BG | bo | br\_FR | bs\_BA | ca | ca\_ES-valencia | cs\_CZ | da\_DK | de\_AT\_frami | de\_CH\_frami | de\_DE\_frami | el\_GR | en\_AU | en\_CA | en\_GB | en\_US | en\_ZA | es\_ES | eu | fr | gd\_GB | gl\_ES | he\_IL | hr\_HR | hu\_HU | is\_IS | it\_IT | kmr\_Latn | ko | lt\_LT | nb\_NO | ne\_NP | nl\_NL | nn\_NO | oc\_FR | pl\_PL | pt\_BR | pt\_PT | ro\_RO | ru\_RU | se | si\_LK | sk\_SK | sl\_SI | sr\_Latn\_RS | sr\_RS | sv\_FI [...]
+|---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
+| PFX | 20 | 58 | 194 | 10 | | | 27 | | 132 | 132 | 19 | 264 | 68 | 68 | 68 | 10 | 38 | 14 | 36 | 14 | 36 | 78 | 12 | 216 | 34 | | 3335 | | 366 | | 489 | 36 | | 90 | 41 | 2 | 154 | 41 | 16 | 2 | 162 | 38 | 26 | | | | 4 | 10 | | | | | 5 | 6 |
+| SFX | 75 | 996 | 1609 | 879 | 1652 | 40 | 355 | 998 | 13318 | 13368 | 2551 | 1034 | 437 | 437 | 437 | 179 | 1078 | 59 | 1078 | 59 | 1078 | 6767 | 94118 | 9735 | 7 | 8586 | | 534 | 24052 | 13282 | 2744 | 80 | 55722 | 2586 | 495 | 525 | 447 | 383 | 708 | 7102 | 25770 | 1302 | 1624 | 1606 | 371599 | 10000 | 2443 | 526 | | | 492 | 492 | | 4477 |
+| CIRCUMFIX | | | | | | | | | | | | | 1 | 1 | 1 | | | | | | | | | 1 | | | | 1 | | | | | | | | | | | | | | | | | | | | | | | | | | |
+| FORBIDDENWORD | | | | | | | | | 1 | 1 | | 1 | 1 | 1 | 1 | | | | | | | | | 1 | | | | 1 | 1 | | | | 1 | | | | 1 | | | | 1 | | | | | | | | | | 1 | 1 | | |
+| FULLSTRIP | | | | | | | | | 1 | 1 | | | | | | | | | | | | | | 1 | | | | | | 1 | | | | | | | | | | | | | | | | | | | | | 1 | 1 | | |
+| KEEPCASE | | | | | | | | | | | | | 1 | 1 | 1 | | | | | | | | | 1 | | 1 | | 1 | 1 | | | | | | | | 1 | | | | | | | | | | | | | | | | | |
+| ICONV | | | 10 | | | | | | | | | | | | | | 7 | 2 | | | 7 | | | 42 | 2 | | | 29 | 6 | | | | 11173 | | | | 10 | | | | | | | | | | | | 5 | 4 | | | | |
+| OCONV | | | | | | | | | | | | | | | | | 2 | | | | 2 | | | 2 | | | | | | | | | 11173 | | | | 3 | | | | | | | | | | | | | | | | | |
+| NEEDAFFIX | | | | | | 1 | | | | | | 1 | 1 | 1 | 1 | | | | | | | | | 1 | | 1 | 1 | 1 | 1 | | | | | | | | | | | | | | | | 1 | | | | | | 1 | 1 | | |
+| SUBSTANDARD | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 | 1 | | | | | | | | | | | | | | | | | | | | | | | | | |
+| WORDCHARS | | | | 1 | | | 1 | | 1 | 1 | | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | | 1 | | | | 1 | | | 1 | | 1 | | | 1 | | | | | | 1 | 1 | | 1 |
+| CHECKSHARPS | | | | | | | | | | | | | 1 | 1 | 1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+
+
+## Deprecated Options
+
+A total of 2 deprecated different options are recognised by Hunspell. Of these, only 1 option is used in only 1 dictionary.
+
+| Deprecated vs. Dictionary | hu\_HU |
+|---|--:|
+| LEMMA_PRESENT | 1 |
+| PSEUDOROOT | |
+
+
+## Undocumented Options
+
+A total of 12 undocumented different options are recognised by Hunspell. All of these options are used in only 15 dictionaries.
+
+| Undocumented vs. Dictionary | bo | da\_DK | de\_AT\_frami | de\_CH\_frami | de\_DE\_frami | en\_AU | gd\_GB | hr\_HR | hu\_HU | it\_IT | ko | nl\_NL | se | sv\_FI | sv\_SE |
+|---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
+| LANGCODE | 1 | | | | | | | | | | | | | | |
+| NAME | | | | | | | | | 1 | 1 | | | | | |
+| HOME | | | | | | | | | 1 | 1 | | | | | |
+| VERSION | | | | | | | | | 1 | 1 | 1 | | | | |
+| COMPOUNDFIRST | | | | | | | | | 1 | | | | | | |
+| ONLYROOT | | | | | | | | | 1 | | | | | | |
+| HU_KOTOHANGZO | | | | | | | | | 1 | | | | | | |
+| COMPOUNDEND | | 1 | 1 | 1 | 1 | | | 1 | 1 | | | 1 | 1 | 1 | 1 |
+| GENERATE | | | | | | | | | 1 | | | | | | |
+| LEFTHYPHENMIN | | | | | | | 1 | | | | | | | | |
+| MIDWORD | | | | | | 1 | | | | | | | | | |
+| BAD | | | | | | 1 | | | | | | | | | |
+
+
diff --git a/src/tools/unmunch.cxx b/src/tools/unmunch.cxx
index 44b4cb1..82c2f9d 100644
--- a/src/tools/unmunch.cxx
+++ b/src/tools/unmunch.cxx
@@ -272,6 +272,7 @@ int parse_aff_file(FILE* afflst) {
}
fprintf(stderr, " affix: %s %d, strip: %s %d\n", nptr->appnd,
nptr->appndl, nptr->strip, nptr->stripl);
+ // no break
default:
break;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-openoffice/hunspell.git
More information about the Pkg-openoffice-commits
mailing list