📄 jprovoma.c
字号:
root_p = root_p->next;
if (root_p != NULL)
{
attr_p = root_p->attribute_list;
if (attr_p == NULL && root_p->name == NULL)
{
*nextroot_p = root_p;
return i_ret;
}
}
else
{
*nextroot_p = root_p;
return i_ret;
}
}
return i_ret;
}
/*****************************************************************************
* FUNCTION
* mmi_prov_oma_handle_napauthinfo_tag
* DESCRIPTION
* This function deals with the NAPAUTHINFO characteristic tag and its PARM elements
* PARAMETERS
* nextroot_p [IN] IN\OUT
* data_account_data_p [IN] IN\OUT
* RETURNS
* PROV_OK
*****************************************************************************/
PROV_RETCODE mmi_prov_oma_handle_napauthinfo_tag(
TAG **nextroot_p,
prov_data_account_data_struct **data_account_data_p)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
PROV_RETCODE i_ret = PROV_OK;
ATTRIBUTE *attr_p = NULL;
TAG *root_p;
S8 parm_element[PROV_OMA_MIN_SIZE_REQ + 1];
U32 len;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
root_p = *nextroot_p;
root_p = root_p->next;
attr_p = root_p->attribute_list;
while (root_p != NULL)
{
if (strcmp(root_p->name, CHARACTERISTIC) == 0)
{
*nextroot_p = root_p;
return i_ret;
}
else if (strcmp(root_p->name, PARM) == 0)
{
if (strcmp(attr_p->name, NAME) == 0)
{
UnicodeToAnsii(parm_element, (S8*) attr_p->value);
if (strcmp(parm_element, AUTHTYPE) == 0)
{
attr_p = attr_p->next;
if (strcmp(attr_p->name, VALUE) == 0)
{
UnicodeToAnsii(parm_element, (S8*) attr_p->value);
if (strcmp(parm_element, PAP) == 0)
{
(*data_account_data_p)->authType = PROV_AUTHTYPE_PAP;
}
else if (strcmp(parm_element, CHAP) == 0)
{
(*data_account_data_p)->authType = PROV_AUTHTYPE_CHAP;
}
else
{
(*data_account_data_p)->authType = PROV_AUTHTYPE_PAP;
}
}
}
else if (strcmp(parm_element, AUTHNAME) == 0)
{
attr_p = attr_p->next;
if (strcmp(attr_p->name, VALUE) == 0)
{
len = UCS2Strlen((S8*) attr_p->value);
if (len >= PROV_MAX_USER_LEN)
{
len = PROV_MAX_USER_LEN - 1;
}
UnicodeNToAnsii(
(S8*) (*data_account_data_p)->userName,
(S8*) attr_p->value,
len * ENCODING_LENGTH);
(*data_account_data_p)->userName[len] = '\0';
}
}
else if (strcmp(parm_element, AUTHSECRET) == 0)
{
attr_p = attr_p->next;
if (strcmp(attr_p->name, VALUE) == 0)
{
len = UCS2Strlen((S8*) attr_p->value);
if (len >= PROV_MAX_PASSWD_LEN)
{
len = PROV_MAX_PASSWD_LEN - 1;
}
UnicodeNToAnsii(
(S8*) (*data_account_data_p)->password,
(S8*) attr_p->value,
len * ENCODING_LENGTH);
(*data_account_data_p)->password[len] = '\0';
}
}
}
}
root_p = root_p->next;
if (root_p != NULL)
{
attr_p = root_p->attribute_list;
if (attr_p == NULL && root_p->name == NULL)
{
*nextroot_p = root_p;
return i_ret;
}
}
else
{
*nextroot_p = root_p;
return i_ret;
}
}
return i_ret;
}
/*****************************************************************************
* FUNCTION
* mmi_prov_oma_handle_application_tag
* DESCRIPTION
* This function deals with the APPLICATION characteristic tag and its PARM elements
* PARAMETERS
* nextroot_p [IN] IN\OUT
* RETURNS
* PROV_OK
*****************************************************************************/
PROV_RETCODE mmi_prov_oma_handle_application_tag(TAG **nextroot_p)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U32 len;
PROV_RETCODE i_ret = PROV_OK;
ATTRIBUTE *attr_p = NULL;
TAG *root_p;
S8 parm_element[PROV_OMA_MIN_SIZE_REQ + 1];
U8 app_id[PROV_APPLICATION_APP_ID_LEN + 1];
U32 redundant_parm = 0x00;
U32 unsupported_appl = 0x00;
// MAUI_00355388 Start
U8 uri[PROV_PROFILE_MMSC_URL_LEN + 1];
// MAUI_00355388 End
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
root_p = *nextroot_p;
root_p = root_p->next;
attr_p = root_p->attribute_list;
while (root_p != NULL)
{
if (strcmp(root_p->name, CHARACTERISTIC) == 0)
{
UnicodeToAnsii(parm_element, (S8*) root_p->attribute_list->value);
if (strcmp(parm_element, RESOURCE) == 0)
{
if (!unsupported_appl)
{
mmi_prov_oma_handle_resource_tag(&root_p);
}
}
*nextroot_p = root_p;
return i_ret;
}
else if (strcmp(root_p->name, PARM) == 0)
{
if (strcmp(attr_p->name, NAME) == 0)
{
if (unsupported_appl)
{
goto next;
}
UnicodeToAnsii(parm_element, (S8*) attr_p->value);
if (strcmp(parm_element, APPID) == 0)
{
attr_p = attr_p->next;
if (strcmp(attr_p->name, VALUE) == 0)
{
len = UCS2Strlen((S8*) attr_p->value);
if (len >= PROV_APPLICATION_APP_ID_LEN)
{
len = PROV_APPLICATION_APP_ID_LEN - 1;
}
UnicodeNToAnsii((S8*) app_id, (S8*) attr_p->value, len * ENCODING_LENGTH);
app_id[len] = '\0';
if (strcmp((S8*) app_id, BRW_APPL) == 0)
{
if (g_prov_app_brw_p == NULL)
{
g_prov_app_brw_p = (application_data*) jdd_MemAlloc(sizeof(application_data), 1);
}
if (strcmp((S8*) app_id, (S8*) g_prov_app_brw_p->app_id) == 0)
{
g_prov_app_brw_p->flags |= PROV_OMA_IGNORE_OTHER_WAP_APPL;
goto next;
}
UnicodeNToAnsii(
(S8*) g_prov_app_brw_p->app_id,
(S8*) attr_p->value,
len * ENCODING_LENGTH);
g_prov_app_brw_p->app_id[len] = '\0';
g_prov_appl_flag |= PROV_BROWSER_APPLICATION;
}
else if (strcmp((S8*) app_id, MMS_APPL) == 0)
{
if (g_prov_app_mms_p == NULL)
{
g_prov_app_mms_p = (application_data*) jdd_MemAlloc(sizeof(application_data), 1);
}
if (strcmp((S8*) app_id, (S8*) g_prov_app_mms_p->app_id) == 0)
{
g_prov_app_mms_p->flags |= PROV_OMA_IGNORE_OTHER_MMS_APPL;
goto next;
}
UnicodeNToAnsii(
(S8*) g_prov_app_mms_p->app_id,
(S8*) attr_p->value,
len * ENCODING_LENGTH);
g_prov_app_mms_p->app_id[len] = '\0';
g_prov_appl_flag |= PROV_MMS_APPLICATION;
g_prov_setting_type |= PROV_MMS_SETTINGS;
}
else
{
//handle all other supported application before this
//handle unsupported applications
unsupported_appl = 0x01;
}
}
}
else if (strcmp(parm_element, NAME_PARM) == 0)
{
attr_p = attr_p->next;
if (strcmp(attr_p->name, VALUE) == 0)
{
len = UCS2Strlen((S8*) attr_p->value);
if (len >= PROV_APPLICATION_APP_NAME_LEN)
{
len = PROV_APPLICATION_APP_NAME_LEN - 1;
}
if (strcmp((S8*) app_id, BRW_APPL) == 0)
{
if (g_prov_app_brw_p->flags & PROV_OMA_IGNORE_OTHER_WAP_APPL)
{
goto next;
}
UnicodeNToAnsii(
(S8*) g_prov_app_brw_p->application_name,
(S8*) attr_p->value,
len * ENCODING_LENGTH);
g_prov_app_brw_p->application_name[len] = '\0';
}
else if (strcmp((S8*) app_id, MMS_APPL) == 0)
{
if (g_prov_app_mms_p->flags & PROV_OMA_IGNORE_OTHER_MMS_APPL)
{
goto next;
}
UnicodeNToAnsii(
(S8*) g_prov_app_mms_p->application_name,
(S8*) attr_p->value,
len * ENCODING_LENGTH);
g_prov_app_mms_p->application_name[len] = '\0';
}
}
}
else if (strcmp(parm_element, TO_PROXY) == 0)
{
attr_p = attr_p->next;
if (redundant_parm & PROV_OMA_APPL_IGNORE_OTHER_TO_PROXY)
{
goto next;
}
if (strcmp(attr_p->name, VALUE) == 0)
{
len = UCS2Strlen((S8*) attr_p->value);
if (len >= PROV_PROXY_ID_LEN)
{
len = PROV_PROXY_ID_LEN - 1;
}
if (strcmp((S8*) app_id, BRW_APPL) == 0)
{
if (g_prov_app_brw_p->flags & PROV_OMA_IGNORE_OTHER_WAP_APPL)
{
goto next;
}
UnicodeNToAnsii(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -