aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntony Kellermann2018-08-29 10:31:25 -0400
committerAntony Kellermann2018-08-29 10:31:25 -0400
commit608e0b29d63453a2e3f8c49d0a152afd667cd58d (patch)
tree050f982a4fbddd8d6ae4df7c9e64c8aa83858174
parent5e1ee1dba10d7df33a65f681d25a1e16d02d39e8 (diff)
downloadaur-608e0b29d63453a2e3f8c49d0a152afd667cd58d.tar.gz
Added function to find already loaded data
-rw-r--r--api.c16
-rw-r--r--api.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/api.c b/api.c
index c3bd539a11bd..779967d88698 100644
--- a/api.c
+++ b/api.c
@@ -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;
diff --git a/api.h b/api.h
index 03fcff071e7b..f2a746a46864 100644
--- a/api.h
+++ b/api.h
@@ -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