From: Michael Tremer Date: Wed, 2 Oct 2019 14:07:13 +0000 (+0000) Subject: libloc: Add function to set country code to database enumerator X-Git-Tag: 0.9.0~62 X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Flibloc.git;a=commitdiff_plain;h=35bb3a32f117d43e45a13e452ab1148ca2aa023f libloc: Add function to set country code to database enumerator Signed-off-by: Michael Tremer --- diff --git a/src/database.c b/src/database.c index fe5e6dc..e8ec9b7 100644 --- a/src/database.c +++ b/src/database.c @@ -69,6 +69,7 @@ struct loc_database_enumerator { // Search string char* string; + char country_code[3]; // Index of the AS we are looking at unsigned int as_index; @@ -610,6 +611,24 @@ LOC_EXPORT int loc_database_enumerator_set_string(struct loc_database_enumerator return 0; } +LOC_EXPORT int loc_database_enumerator_set_country_code(struct loc_database_enumerator* enumerator, const char* country_code) { + // Set empty country code + if (!country_code || !*country_code) { + *enumerator->country_code = '\0'; + return 0; + } + + // Country codes must be two characters + if (strlen(country_code) != 2) + return -EINVAL; + + for (unsigned int i = 0; i < 3; i++) { + enumerator->country_code[i] = country_code[i]; + } + + return 0; +} + LOC_EXPORT struct loc_as* loc_database_enumerator_next_as(struct loc_database_enumerator* enumerator) { struct loc_database* db = enumerator->db; struct loc_as* as; diff --git a/src/libloc.sym b/src/libloc.sym index 42e89e5..7faa9c0 100644 --- a/src/libloc.sym +++ b/src/libloc.sym @@ -54,6 +54,7 @@ global: loc_database_enumerator_new; loc_database_enumerator_next_as; loc_database_enumerator_ref; + loc_database_enumerator_set_country_code; loc_database_enumerator_set_string; loc_database_enumerator_unref; diff --git a/src/loc/database.h b/src/loc/database.h index 37810eb..7cb8020 100644 --- a/src/loc/database.h +++ b/src/loc/database.h @@ -49,6 +49,7 @@ struct loc_database_enumerator* loc_database_enumerator_ref(struct loc_database_ struct loc_database_enumerator* loc_database_enumerator_unref(struct loc_database_enumerator* enumerator); int loc_database_enumerator_set_string(struct loc_database_enumerator* enumerator, const char* string); +int loc_database_enumerator_set_country_code(struct loc_database_enumerator* enumerator, const char* country_code); struct loc_as* loc_database_enumerator_next_as(struct loc_database_enumerator* enumerator); #endif