mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 11:08:06 +00:00
add function to extract ccc from e164 number
This commit is contained in:
parent
96dc7aac83
commit
501c5ce4db
3 changed files with 42 additions and 2 deletions
|
|
@ -94,8 +94,14 @@ void linphone_core_remove_iterate_hook(LinphoneCore *lc, LinphoneCoreIterateHook
|
|||
*@return call country code or -1 if not found
|
||||
*/
|
||||
int linphone_dial_plan_lookup_ccc_from_iso(const char* iso);
|
||||
|
||||
|
||||
/**
|
||||
* @ingroup misc
|
||||
*Function to get call country code from an e164 number, ex: +33952650121 will return 33
|
||||
*@param e164 phone number
|
||||
*@return call country code or -1 if not found
|
||||
*/
|
||||
int linphone_dial_plan_lookup_ccc_from_e164(const char* e164);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -607,6 +607,32 @@ static dial_plan_t const dial_plans[]={
|
|||
};
|
||||
static dial_plan_t most_common_dialplan={ "generic" ,"", "", 10, "00"};
|
||||
|
||||
int linphone_dial_plan_lookup_ccc_from_e164(const char* e164) {
|
||||
dial_plan_t* dial_plan;
|
||||
dial_plan_t* elected_dial_plan=NULL;
|
||||
unsigned int found;
|
||||
unsigned int i=0;
|
||||
if (e164[1]=='1') {
|
||||
/*USA case*/
|
||||
return 1;
|
||||
}
|
||||
do {
|
||||
found=0;
|
||||
i++;
|
||||
for (dial_plan=(dial_plan_t*)dial_plans; dial_plan->country!=NULL; dial_plan++) {
|
||||
if (strncmp(dial_plan->ccc,&e164[1],i) == 0) {
|
||||
elected_dial_plan=dial_plan;
|
||||
found++;
|
||||
}
|
||||
}
|
||||
} while (found>1 || found==0);
|
||||
if (found==1) {
|
||||
return atoi(elected_dial_plan->ccc);
|
||||
} else {
|
||||
return -1; /*not found */
|
||||
}
|
||||
|
||||
}
|
||||
int linphone_dial_plan_lookup_ccc_from_iso(const char* iso) {
|
||||
dial_plan_t* dial_plan;
|
||||
for (dial_plan=(dial_plan_t*)dial_plans; dial_plan->country!=NULL; dial_plan++) {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
|
||||
#include "linphonecore.h"
|
||||
#include "linphonecore_utils.h"
|
||||
|
||||
int main(int argc , char *argv[]){
|
||||
LinphoneProxyConfig *cfg;
|
||||
|
|
@ -35,6 +36,13 @@ int main(int argc , char *argv[]){
|
|||
if (argc>3 && strcmp(argv[3],"--escape-plus")==0)
|
||||
linphone_proxy_config_set_dial_escape_plus(cfg,TRUE);
|
||||
linphone_proxy_config_normalize_number(cfg,argv[1],normalized_number,sizeof(normalized_number));
|
||||
|
||||
printf("Normalized number is %s\n",normalized_number);
|
||||
/*check extracted ccc*/
|
||||
if (linphone_dial_plan_lookup_ccc_from_e164(normalized_number) != atoi(linphone_proxy_config_get_dial_prefix(cfg))) {
|
||||
printf("Error ccc [%i] not correctly parsed\n",linphone_dial_plan_lookup_ccc_from_e164(normalized_number));
|
||||
} else {
|
||||
printf("Extracted ccc is [%i] \n",linphone_dial_plan_lookup_ccc_from_e164(normalized_number));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue