diff options
Diffstat (limited to '0004-reloc.mingw.patch')
-rw-r--r-- | 0004-reloc.mingw.patch | 123 |
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" |