mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-12 09:06:55 -04:00
Fix <10.4 macOS dynamic symbol getting, also support libcurl versions which lack curl_easy_strerror
This commit is contained in:
parent
bbd4204b53
commit
44c348197c
10
src/Http.c
10
src/Http.c
@ -705,11 +705,14 @@ static cc_bool LoadCurlFuncs(void) {
|
||||
void* lib = DynamicLib_Load2(&curlLib);
|
||||
if (!lib) { Logger_DynamicLibWarn("loading", &curlLib); return false; }
|
||||
|
||||
/* Non-essential functions missing in older curl versions */
|
||||
LoadCurlFunc(curl_easy_strerror);
|
||||
|
||||
return
|
||||
LoadCurlFunc(curl_global_init) && LoadCurlFunc(curl_global_cleanup) &&
|
||||
LoadCurlFunc(curl_easy_init) && LoadCurlFunc(curl_easy_perform) &&
|
||||
LoadCurlFunc(curl_easy_setopt) && LoadCurlFunc(curl_easy_reset) &&
|
||||
LoadCurlFunc(curl_easy_cleanup) && LoadCurlFunc(curl_easy_strerror) &&
|
||||
LoadCurlFunc(curl_easy_cleanup) &&
|
||||
LoadCurlFunc(curl_slist_free_all) && LoadCurlFunc(curl_slist_append);
|
||||
}
|
||||
|
||||
@ -717,7 +720,10 @@ static CURL* curl;
|
||||
static cc_bool curlInited;
|
||||
|
||||
cc_bool Http_DescribeError(cc_result res, String* dst) {
|
||||
const char* err = _curl_easy_strerror((CURLcode)res);
|
||||
const char* err;
|
||||
|
||||
if (!_curl_easy_strerror) return false;
|
||||
err = _curl_easy_strerror((CURLcode)res);
|
||||
if (!err) return false;
|
||||
|
||||
String_AppendConst(dst, err);
|
||||
|
@ -1404,8 +1404,17 @@ void* DynamicLib_Load2(const String* path) {
|
||||
}
|
||||
|
||||
void* DynamicLib_Get2(void* lib, const char* name) {
|
||||
NSSymbol sym = NSLookupSymbolInImage(lib, name, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW |
|
||||
NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
|
||||
String tmp; char tmpBuffer[128];
|
||||
NSSymbol sym;
|
||||
String_InitArray_NT(tmp, tmpBuffer);
|
||||
|
||||
/* NS linker api rquires symbols to have a _ prefix */
|
||||
String_Append(&tmp, '_');
|
||||
String_AppendConst(&tmp, name);
|
||||
tmp.buffer[tmp.length] = '\0';
|
||||
|
||||
sym = NSLookupSymbolInImage(lib, tmp.buffer, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW |
|
||||
NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
|
||||
return sym ? NSAddressOfSymbol(sym) : NULL;
|
||||
}
|
||||
|
||||
@ -1415,7 +1424,7 @@ cc_bool DynamicLib_DescribeError(String* dst) {
|
||||
const char* msg = "";
|
||||
int errNum = 0;
|
||||
|
||||
NSLinkEditError(&editError, &errno, &name, &msg);
|
||||
NSLinkEditError(&err, &errNum, &name, &msg);
|
||||
String_Format4(dst, "%c in %c (%i, sys %i)", msg, name, &err, &errNum);
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user