diff -ur globus_common-10.2.orig/library/globus_common_include.h globus_common-10.2/library/globus_common_include.h --- globus_common-10.2.orig/library/globus_common_include.h 2008-03-12 20:01:04.000000000 +0100 +++ globus_common-10.2/library/globus_common_include.h 2009-05-10 09:54:07.000000000 +0200 @@ -95,7 +95,7 @@ #endif #if defined(TARGET_ARCH_WIN32) -# include +# include # include # include # include diff -ur globus_common-10.2.orig/library/globus_libc.c globus_common-10.2/library/globus_libc.c --- globus_common-10.2.orig/library/globus_libc.c 2008-04-05 05:09:41.000000000 +0200 +++ globus_common-10.2/library/globus_libc.c 2009-05-10 09:54:07.000000000 +0200 @@ -80,11 +80,13 @@ char * buffer, size_t buflen); +#if !defined(TARGET_ARCH_WIN32) static void globus_l_libc_copy_pwd_data_to_buffer( struct passwd * pwd, char * buffer, size_t buflen); +#endif /****************************************************************************** Function: globus_libc_lock() diff -ur globus_common-10.2.orig/library/globus_libc.h globus_common-10.2/library/globus_libc.h --- globus_common-10.2.orig/library/globus_libc.h 2008-04-05 05:09:41.000000000 +0200 +++ globus_common-10.2/library/globus_libc.h 2009-05-10 09:54:07.000000000 +0200 @@ -287,11 +287,13 @@ const time_t *timep, struct tm *result); +#if !defined(TARGET_ARCH_WIN32) int globus_libc_getpwnam_r(char *name, struct passwd *pwd, char *buffer, int bufsize, struct passwd **result); +#endif int globus_libc_strncasecmp( diff -ur globus_common-10.2.orig/library/globus_libtool_windows.c globus_common-10.2/library/globus_libtool_windows.c --- globus_common-10.2.orig/library/globus_libtool_windows.c 2008-03-12 20:01:05.000000000 +0100 +++ globus_common-10.2/library/globus_libtool_windows.c 2009-05-10 10:06:04.000000000 +0200 @@ -68,7 +68,7 @@ HANDLE hDllHandle; char pcFileName[MAX_FILE_NAME_Z]; int iRefCount; - } DllModule, *pDllModule; + } DllModule; // Static Variables @@ -255,6 +255,7 @@ lt_dlhandle lt_dlopenext (const char *filename) { pDllModule pModule = NULL; +char *ffilename = NULL; // Check Argument if(!filename) { @@ -273,8 +274,13 @@ return NULL; } + // If there will be modules with sonames other than 0 this will not work + ffilename = malloc(strlen(filename) + 3); + strncpy(ffilename, filename, strlen(filename) + 1); + strcat(ffilename, "-0"); + // Is This Module Already Open? - pModule = FindLoadedModuleByName(filename); + pModule = FindLoadedModuleByName(ffilename); if(pModule) { // Bump The Reference Count pModule->iRefCount += 1; @@ -284,6 +290,7 @@ // Return The Address Of The Data Struct As The Handle iLastError = 0; + free (ffilename); return (lt_dlhandle) pModule; } @@ -292,7 +299,7 @@ // Section Before Doing The Open, But That Would Require A Mechanism // To Prevent A Second Request For The Same Module To Be Handled While // A First One Is In Progress - This Is A "Later If Needed" Item - pModule = OpenModule(filename); + pModule = OpenModule(ffilename); if(pModule) { // Bump The Reference Count pModule->iRefCount += 1; @@ -300,6 +307,7 @@ // Return The Module LeaveCriticalSection(&csLibLock); iLastError = 0; + free (ffilename); return (lt_dlhandle) pModule; } @@ -308,6 +316,7 @@ // Not Found Or Opened iLastError = LT_ERROR_DEPLIB_NOT_FOUND; + free (ffilename); return (lt_dlhandle) pModule; } @@ -635,7 +644,9 @@ } // Try To Load The Library + SetDllDirectory(user_search_path); DllHandle = LoadLibrary(NormName); + SetDllDirectory(NULL); if(DllHandle == NULL) { return NULL; } diff -ur globus_common-10.2.orig/library/globus_uuid.c globus_common-10.2/library/globus_uuid.c --- globus_common-10.2.orig/library/globus_uuid.c 2008-03-12 20:01:05.000000000 +0100 +++ globus_common-10.2/library/globus_uuid.c 2009-05-10 09:54:07.000000000 +0200 @@ -17,8 +17,8 @@ #include "globus_common_include.h" #include "globus_libc.h" #ifdef WIN32 -#include -#include +#include +#include typedef unsigned __int64 uint64_t; typedef unsigned short uint16_t; typedef unsigned char uint8_t;