| 242 | |
| 243 | |
| 244 | cc_bool DynamicLib_LoadAll(const cc_string* path, const struct DynamicLibSym* syms, int count, void** _lib) { |
| 245 | cc_bool foundAllRequired = true; |
| 246 | cc_string symName; |
| 247 | int i; |
| 248 | void* addr; |
| 249 | void* lib; |
| 250 | |
| 251 | lib = DynamicLib_Load2(path); |
| 252 | *_lib = lib; |
| 253 | if (!lib) { Logger_DynamicLibWarn("loading", path); return false; } |
| 254 | |
| 255 | for (i = 0; i < count; i++) { |
| 256 | addr = DynamicLib_Get2(lib, syms[i].name); |
| 257 | *syms[i].symAddr = addr; |
| 258 | |
| 259 | if (addr || !syms[i].required) continue; |
| 260 | symName = String_FromReadonly(syms[i].name); |
| 261 | |
| 262 | Logger_DynamicLibWarn("loading symbol", &symName); |
| 263 | foundAllRequired = false; |
| 264 | } |
| 265 | return foundAllRequired; |
| 266 | } |
| 267 | |
| 268 | |
| 269 | /*########################################################################################################################* |
no test coverage detected