diff --git a/include/belle-sip/parameters.h b/include/belle-sip/parameters.h index 304c381fbe7f474d1d2856abcf2e6f512eebaad3..8c17c7cadbdfbf8d37e7e881c84832dbda5bfafb 100644 --- a/include/belle-sip/parameters.h +++ b/include/belle-sip/parameters.h @@ -49,6 +49,13 @@ BELLESIP_EXPORT unsigned int belle_sip_parameters_has_parameter(const belle_sip_ BELLESIP_EXPORT void belle_sip_parameters_set_parameter(belle_sip_parameters_t* obj,const char* name,const char* value); +/** + * Assign a full set of parameters to the belle_sip_parameters_t object. + * Parameters are given as string of key=value pairs separated with semicolons, where value is optional. + * @example belle_sip_parameters_set(parameters,"param1=value1;param2;param3=value3"); +**/ +BELLESIP_EXPORT void belle_sip_parameters_set(belle_sip_parameters_t *parameters, const char* params); + BELLESIP_EXPORT const belle_sip_list_t * belle_sip_parameters_get_parameter_names(const belle_sip_parameters_t* obj); BELLESIP_EXPORT const belle_sip_list_t * belle_sip_parameters_get_parameters(const belle_sip_parameters_t* obj); diff --git a/src/belle_sip_parameters.c b/src/belle_sip_parameters.c index 963ad5288f18c9a3442e80cf4b7d072a3be51e47..3d3c6a090916bdb548e3e8e429c6f1e8bf72d512 100644 --- a/src/belle_sip_parameters.c +++ b/src/belle_sip_parameters.c @@ -105,6 +105,37 @@ void belle_sip_parameters_set_parameter(belle_sip_parameters_t* params,const cha params->paramnames_list=belle_sip_list_append(params->paramnames_list,lNewpair->name); } +void belle_sip_parameters_set(belle_sip_parameters_t *parameters, const char* params){ + belle_sip_parameters_clean(parameters); + if (params && *params!='\0'){ + char *tmp=belle_sip_strdup(params); + char *end_of_param; + char *current=tmp; + char *equal; + char *next; + + do{ + end_of_param=strchr(current,';'); + equal=strchr(current,'='); + if (!end_of_param) { + end_of_param=current+strlen(current); + next=end_of_param; + }else{ + *end_of_param='\0'; + next=end_of_param+1; + } + if (equal && equalparamnames_list:NULL; }