| --- plplot-5.13.0/src/plctrl.c.orig |
| +++ plplot-5.13.0/src/plctrl.c |
| @@ -56,6 +56,10 @@ |
| #include <errno.h> |
| #endif |
| |
| +#ifdef _WIN32 |
| +#include <windows.h> |
| +#endif |
| + |
| // Random number generator (Mersenne Twister) |
| #include "mt19937ar.h" |
| |
| @@ -68,6 +72,10 @@ |
| // work even in the single precision floating point case. |
| #define FUZZ_EPSILON 1.e-4 |
| |
| +#ifdef _WIN32 |
| +static HMODULE handle_dll; |
| +#endif |
| + |
| // Static functions |
| |
| // Used by any external init code to suggest a path |
| @@ -124,6 +132,41 @@ |
| #endif |
| |
| #endif |
| + |
| +#ifdef _WIN32 |
| +BOOL WINAPI |
| +DllMain (HINSTANCE hinstDLL, |
| + DWORD fdwReason, |
| + LPVOID lpvReserved) |
| +{ |
| + switch (fdwReason) |
| + { |
| + case DLL_PROCESS_ATTACH: |
| + handle_dll = (HMODULE) hinstDLL; |
| + break; |
| + } |
| + |
| + return TRUE; |
| +} |
| + |
| +char * plGetWinInstallDir() |
| +{ |
| + char *path; |
| + char *p; |
| + |
| + path = (char*) malloc(MAX_PATH); |
| + |
| + GetModuleFileName(handle_dll, path, MAX_PATH); |
| + |
| + p = strrchr (path, '\\'); |
| + *p = '\0'; |
| + p = strrchr (path, '\\'); |
| + *p = '\0'; |
| + |
| + return path; |
| +} |
| +#endif |
| + |
| |
| //-------------------------------------------------------------------------- |
| // Routines that deal with colors & color maps. |
| @@ -2189,6 +2232,14 @@ |
| return fs; |
| #endif |
| |
| +#ifdef _WIN32 |
| + dn = plGetWinInstallDir(); |
| + plGetName( dn, "bin", fn, &fs ); |
| + free(dn); |
| + if ( !plFindName( fs ) ) |
| + return fs; |
| +#endif |
| + |
| // Crapped out |
| |
| free_mem( fs ); |
| @@ -2323,6 +2374,15 @@ |
| if ( file != NULL ) |
| goto done; |
| #endif // macintosh |
| + |
| +#ifdef _WIN32 |
| + dn = plGetWinInstallDir(); |
| + plGetName( dn, "share\\plplot" PLPLOT_VERSION, fn, &fs ); |
| + free(dn); |
| + if ( ( file = pdf_fopen( fs, "rb" ) ) != NULL ) |
| + goto done; |
| + fprintf( stderr, "WININSTALLDIR =\"%s\" ; file=\"%s\"\n", dn, fs ); // what IS set? |
| +#endif |
| |
| if ( plplotLibDir != NULL ) |
| { |
| |