diff options
author | Antony Kellermann | 2018-08-29 10:31:25 -0400 |
---|---|---|
committer | Antony Kellermann | 2018-08-29 10:31:25 -0400 |
commit | 608e0b29d63453a2e3f8c49d0a152afd667cd58d (patch) | |
tree | 050f982a4fbddd8d6ae4df7c9e64c8aa83858174 | |
parent | 5e1ee1dba10d7df33a65f681d25a1e16d02d39e8 (diff) | |
download | aur-608e0b29d63453a2e3f8c49d0a152afd667cd58d.tar.gz |
Added function to find already loaded data
-rw-r--r-- | api.c | 16 | ||||
-rw-r--r-- | api.h | 2 |
2 files changed, 18 insertions, 0 deletions
@@ -662,6 +662,22 @@ int ref_data_get_index_from_name_bsearch(const Ref_Data* pRef_Data, const char* return ref_data_get_index_from_name_bsearch(pRef_Data, name, left, mid - 1); } +Info* info_array_find_symbol_recursive(const Info_Array* pInfo_Array, const char* symbol) { + Info* pInfo = NULL; + if (pInfo_Array == NULL) + return NULL; + + for (size_t i = 0; i < pInfo_Array->length; i++) { + if (strcmp(pInfo_Array->array[i]->symbol, symbol) == 0) + return pInfo_Array->array[i]; + + pInfo = info_array_find_symbol_recursive(pInfo_Array->array[i]->peers, symbol); + if (pInfo != NULL) + return pInfo; + } + return NULL; +} + void api_ref_data_destroy(Ref_Data** phRef_Data) { if (*phRef_Data == NULL) return; @@ -339,6 +339,8 @@ Info* info_array_get_info_from_symbol(const Info_Array* pInfo_Array, const char* int ref_data_get_index_from_name_bsearch(const Ref_Data* pRef_Data, const char* name, size_t left, size_t right); +Info* info_array_find_symbol_recursive(const Info_Array* pInfo_Array, const char* symbol); + /** * Destroys Ref_Data object and frees memory. Sets the pointer of the Ref_Data to NULL * @param phRef_Data the Ref_Data to destroy |