core/systems/LibrarySys.cpp
changeset 1974 1967de77ebac
parent 1952 b7aa2b626807
child 2011 d0be3ddbba1e
     1.1 --- a/core/systems/LibrarySys.cpp	Sun Apr 06 17:54:53 2008 +0000
     1.2 +++ b/core/systems/LibrarySys.cpp	Tue Apr 08 23:35:58 2008 +0000
     1.3 @@ -286,11 +286,23 @@
     1.4  			maxlength,
     1.5  			NULL);
     1.6  #elif defined PLATFORM_POSIX
     1.7 -		snprintf(error, maxlength, "%s", strerror(errno));
     1.8 +		UTIL_Format(error, maxlength, "%s", strerror(errno));
     1.9  #endif
    1.10  	}
    1.11  }
    1.12  
    1.13 +void LibrarySystem::GetLoaderError(char *buffer, size_t maxlength)
    1.14 +{
    1.15 +#if defined PLATFORM_WINDOWS
    1.16 +	GetPlatformError(buffer, maxlength);
    1.17 +#elif defined PLATFORM_POSIX
    1.18 +	if (buffer != NULL && maxlength)
    1.19 +	{
    1.20 +		strncopy(buffer, dlerror(), maxlength);
    1.21 +	}
    1.22 +#endif
    1.23 +}
    1.24 +
    1.25  void LibrarySystem::CloseDirectory(IDirectory *dir)
    1.26  {
    1.27  	delete dir;
    1.28 @@ -301,19 +313,15 @@
    1.29  	LibraryHandle lib;
    1.30  #if defined PLATFORM_WINDOWS
    1.31  	lib = LoadLibraryA(path);
    1.32 -	if (!lib)
    1.33 -	{
    1.34 -		GetPlatformError(error, maxlength);
    1.35 -		return false;
    1.36 -	}
    1.37  #elif defined PLATFORM_POSIX
    1.38  	lib = dlopen(path, RTLD_NOW);
    1.39 -	if (!lib)
    1.40 +#endif
    1.41 +
    1.42 +	if (lib == NULL)
    1.43  	{
    1.44 -		GetPlatformError(error, maxlength);
    1.45 -		return false;
    1.46 +		GetLoaderError(error, maxlength);
    1.47 +		return NULL;
    1.48  	}
    1.49 -#endif
    1.50  
    1.51  	return new CLibrary(lib);
    1.52  }