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);
|
void* lib = DynamicLib_Load2(&curlLib);
|
||||||
if (!lib) { Logger_DynamicLibWarn("loading", &curlLib); return false; }
|
if (!lib) { Logger_DynamicLibWarn("loading", &curlLib); return false; }
|
||||||
|
|
||||||
|
/* Non-essential functions missing in older curl versions */
|
||||||
|
LoadCurlFunc(curl_easy_strerror);
|
||||||
|
|
||||||
return
|
return
|
||||||
LoadCurlFunc(curl_global_init) && LoadCurlFunc(curl_global_cleanup) &&
|
LoadCurlFunc(curl_global_init) && LoadCurlFunc(curl_global_cleanup) &&
|
||||||
LoadCurlFunc(curl_easy_init) && LoadCurlFunc(curl_easy_perform) &&
|
LoadCurlFunc(curl_easy_init) && LoadCurlFunc(curl_easy_perform) &&
|
||||||
LoadCurlFunc(curl_easy_setopt) && LoadCurlFunc(curl_easy_reset) &&
|
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);
|
LoadCurlFunc(curl_slist_free_all) && LoadCurlFunc(curl_slist_append);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -717,7 +720,10 @@ static CURL* curl;
|
|||||||
static cc_bool curlInited;
|
static cc_bool curlInited;
|
||||||
|
|
||||||
cc_bool Http_DescribeError(cc_result res, String* dst) {
|
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;
|
if (!err) return false;
|
||||||
|
|
||||||
String_AppendConst(dst, err);
|
String_AppendConst(dst, err);
|
||||||
|
@ -1404,8 +1404,17 @@ void* DynamicLib_Load2(const String* path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void* DynamicLib_Get2(void* lib, const char* name) {
|
void* DynamicLib_Get2(void* lib, const char* name) {
|
||||||
NSSymbol sym = NSLookupSymbolInImage(lib, name, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW |
|
String tmp; char tmpBuffer[128];
|
||||||
NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
|
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;
|
return sym ? NSAddressOfSymbol(sym) : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1415,7 +1424,7 @@ cc_bool DynamicLib_DescribeError(String* dst) {
|
|||||||
const char* msg = "";
|
const char* msg = "";
|
||||||
int errNum = 0;
|
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);
|
String_Format4(dst, "%c in %c (%i, sys %i)", msg, name, &err, &errNum);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user