summarylogtreecommitdiffstats
path: root/0004-reloc.mingw.patch
diff options
context:
space:
mode:
Diffstat (limited to '0004-reloc.mingw.patch')
-rw-r--r--0004-reloc.mingw.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/0004-reloc.mingw.patch b/0004-reloc.mingw.patch
new file mode 100644
index 000000000000..706f2b0223f2
--- /dev/null
+++ b/0004-reloc.mingw.patch
@@ -0,0 +1,123 @@
+--- aspell-0.60.7-20110707/common/info.cpp.orig 2004-11-10 06:18:45.000000000 +0000
++++ aspell-0.60.7-20110707/common/info.cpp 2014-03-20 14:46:13.395537900 +0000
+@@ -39,6 +39,19 @@
+
+ #include "gettext.h"
+
++#ifdef ENABLE_W32_PREFIX
++extern "C" {
++static HINSTANCE dll_hinstance;
++
++BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
++{
++ if (fdwReason == DLL_PROCESS_ATTACH)
++ dll_hinstance = hinstDLL;
++ return TRUE;
++}
++}
++#endif
++
+ namespace acommon {
+
+ class Dir {
+@@ -778,4 +789,60 @@
+ return data;
+ }
+
++#ifdef ENABLE_W32_PREFIX
++
++const char *
++get_w32_prefix ()
++{
++
++ static char *wprefix = NULL;
++
++/*
++ Entry * next;
++ String key;
++ String value;
++ String file;
++*/
++ if (wprefix == NULL)
++ {
++ DWORD bsize = MAX_PATH;
++ DWORD l = bsize;
++ char *bslash, *slash;
++ char *buf = (char *) malloc (bsize);
++ while (l == bsize)
++ {
++ l = GetModuleFileNameA (dll_hinstance, buf, bsize);
++ if (l == 0)
++ {
++ DebugBreak ();
++ abort ();
++ }
++ if (l == bsize)
++ {
++ buf = (char *) realloc ((void *) buf, bsize * 2);
++ bsize *= 2;
++ l = bsize;
++ }
++ }
++ bslash = strrchr (buf, '\\');
++ slash = strrchr (buf, '/');
++ if (bslash > slash)
++ slash = bslash;
++ slash[0] = '\0';
++ l = strlen (buf);
++ if (l > 3 && strcmp (&buf[l - 3], "bin") == 0)
++ {
++ bslash = strrchr (buf, '\\');
++ slash = strrchr (buf, '/');
++ if (bslash > slash)
++ slash = bslash;
++ slash[0] = '\0';
++ }
++ wprefix = buf;
++
++ }
++ return wprefix;
++}
++#endif
++
+ }
+--- aspell-0.60.7-20110707/common/info.hpp.orig 2004-05-30 10:49:17.000000000 +0000
++++ aspell-0.60.7-20110707/common/info.hpp 2014-03-20 14:45:24.476325900 +0000
+@@ -140,8 +140,7 @@
+ };
+
+
+-
+-
++ const char * get_w32_prefix ();
+ }
+
+ #endif /* ASPELL_INFO__HPP */
+--- aspell-0.60.7-20110707/common/config.cpp.orig 2014-03-20 13:52:58.851882300 +0000
++++ aspell-0.60.7-20110707/common/config.cpp 2014-03-20 14:17:49.116621900 +0000
+@@ -310,6 +310,14 @@
+ const Entry * res = 0;
+ const Entry * cur = first_;
+
++#ifdef ENABLE_W32_PREFIX
++ if (key == "prefix")
++ {
++ Entry *e = new Config::Entry();
++ e->value = get_w32_prefix ();
++ return e;
++ }
++#endif
+ while (cur) {
+ if (cur->key == key && cur->action != NoOp) res = cur;
+ cur = cur->next;
+--- aspell-0.60.7-20110707/common/config.cpp.orig 2014-03-20 15:11:29.935614000 +0000
++++ aspell-0.60.7-20110707/common/config.cpp 2014-03-20 15:22:47.619168900 +0000
+@@ -22,6 +22,8 @@
+ # include <langinfo.h>
+ #endif
+
++#include "info.hpp"
++#include <windows.h>
+ #include "cache.hpp"
+ #include "asc_ctype.hpp"
+ #include "config.hpp"