📄 mconfig.c
字号:
tmp = M_ALLOC( strlen(cfgStrValues[sKey]) + 1);
strcpy( tmp, cfgStrValues[sKey]);
}
MMSa_getConfigStrResponse(MMS_RESULT_OK, sKey, tmp);
#else
MMSa_getConfigStrResponse(MMS_RESULT_OK, sKey, cfgStrValues[sKey]);
#endif
}
break;
#endif
case MMS_SIG_CORE_SET_CONFIG_INT :
iKey = (MmsConfigInt)sig->u_param2;
if (iKey < 0 || iKey >= MMS_CFG_TOTAL_INT)
{
MMS_LOG_I(("cfgMain: Illegal int key (%d)\n", (int)iKey));
MMSa_setConfigIntResponse(MMS_RESULT_CONFIG_VARIABLE_NOT_FOUND, iKey);
}
else if (checkIntValue( iKey, sig->u_param1))
{
if (cfgIntValues[iKey] != sig->u_param1)
{
cfgIntValues[iKey] = sig->u_param1;
afterChangeCheckInt(iKey);
}
MMSa_setConfigIntResponse(MMS_RESULT_OK, iKey);
}
else
{
MMSa_setConfigIntResponse(MMS_RESULT_CONFIG_ILLEGAL_VALUE, iKey);
}
break;
case MMS_SIG_CORE_SET_CONFIG_STR :
sKey = (MmsConfigStr)sig->u_param1;
if (sKey < 0 || sKey >= MMS_CFG_TOTAL_STR)
{
MMS_LOG_I(("cfgMain: Illegal string key (%d)\n", (int)sKey));
M_FREE(sig->p_param);
MMSa_setConfigStrResponse(MMS_RESULT_CONFIG_VARIABLE_NOT_FOUND, sKey);
}
else if (checkStrValue( sKey, (const char *)sig->p_param))
{
if ((cfgStrValues[sKey] == NULL && sig->p_param == NULL) ||
(cfgStrValues[sKey] != NULL && sig->p_param != NULL &&
strcmp( cfgStrValues[sKey], (char *)sig->p_param) == 0))
{
if (sig->p_param != NULL)
{
M_FREE(sig->p_param);
}
}
else
{
if (cfgStrValues[sKey] != NULL)
{
M_FREE(cfgStrValues[sKey]);
}
cfgStrValues[sKey] = (char *)sig->p_param;
afterChangeCheckStr(sKey);
}
MMSa_setConfigStrResponse(MMS_RESULT_OK, sKey);
}
else
{
M_FREE(sig->p_param);
MMSa_setConfigStrResponse(MMS_RESULT_CONFIG_ILLEGAL_VALUE, sKey);
}
break;
default:
MMS_LOG_I(("MMS FSM CORE CONFIG: received unknown signal\n"));
break;
}
mSignalDelete(sig);
}
void cfgTerminate(void)
{
int i = 0;
mSignalDeregister(M_FSM_CORE_CONFIG);
for (i = 0; i < MMS_CFG_TOTAL_STR; i++)
{
if (cfgStrValues[i] != NULL)
{
M_FREE(cfgStrValues[i]);
cfgStrValues[i] = NULL;
}
}
MMS_LOG_I(("MMS FSM CORE CONFIG: terminated\n"));
}
static CMN_BOOL checkIntValue(MmsConfigInt key, UINT32 value)
{
CMN_BOOL ret = FALSE;
switch (key)
{
case MMS_CFG_DELIVERY_REPORT :
if (value == MMS_DELIVERY_REPORT_YES || value == MMS_DELIVERY_REPORT_NO)
{
ret = TRUE;
}
break;
case MMS_CFG_FROM_ADDRESS_INSERT_TYPE :
if (value == MMS_FROM_ADDRESS_PRESENT || value == MMS_FROM_INSERT_ADDRESS)
{
ret = TRUE;
}
break;
case MMS_CFG_FROM_ADDRESS_TYPE :
if ( value == MMS_ADDRESS_PLMN || value == MMS_ADDRESS_EMAIL)
{
ret = TRUE;
}
break;
case MMS_CFG_PORT :
if (value == 0 || (value >= MMS_MIN_PORT && value <= MMS_MAX_PORT))
{
ret = TRUE;
}
break;
case MMS_CFG_PROXY_RELAY_VERSION :
if (value == MMS_VERSION_10 || value == MMS_VERSION_11 ||
value == MMS_VERSION_12)
{
ret = TRUE;
}
break;
default:
ret = TRUE;
break;
}
return ret;
}
static CMN_BOOL checkStrValue(MmsConfigStr key, const char *value)
{
CMN_BOOL ret = FALSE;
switch (key)
{
case MMS_CFG_FROM_ADDRESS :
ret = validAddress(value);
break;
case MMS_CFG_IMMEDIATE_RETRIEVAL_SERVER :
ret = validHostName(value);
break;
case MMS_CFG_POST_URI :
ret = validUri(value);
break;
case MMS_CFG_PROXY_RELAY :
ret = validHostName(value);
break;
case MMS_CFG_SCHEME :
ret = validScheme(value);
break;
case MMS_CFG_FROM_NAME :
ret = validName( value);
break;
case MMS_CFG_CLASS_STRING :
ret = validName( value);
break;
default :
ret = TRUE;
break;
}
return ret;
}
static CMN_BOOL validAddress(const char *address)
{
CMN_BOOL ret = FALSE;
int i = 0;
if (address == NULL)
{
ret = TRUE;
}
else
{
for ( i = 0; address[i] != EOS; ++i)
{
if ( !IS_ADDRESS_LETTER((unsigned char)address[i]) )
{
return FALSE;
}
}
if (i < MAX_ADDRESS_LEN)
{
ret = TRUE;
}
}
return ret;
}
static CMN_BOOL validHostName(const char *hostName)
{
int i = 0;
if (hostName == NULL)
{
return TRUE;
}
for ( i = 0; hostName[i] != EOS; ++i)
{
if (!IS_HOST_LETTER((unsigned char)hostName[i]) &&
!IS_HOST_SEPARATOR((unsigned char)hostName[i]) &&
!IS_PORT((unsigned char)hostName[i]))
{
return FALSE;
}
}
return TRUE;
}
static CMN_BOOL validScheme(const char *scheme)
{
int i = 0;
if (scheme == NULL)
{
return FALSE;
}
for ( i = 0; myValidSchemes[i] != NULL; ++i)
{
if ( strcmp( scheme, myValidSchemes[i]) == 0 )
{
return TRUE;
}
}
return FALSE;
}
static CMN_BOOL validUri(const char *uri)
{
int i = 0;
if (uri == NULL)
{
return TRUE;
}
for ( i = 0; uri[i] != EOS; ++i)
{
if ( !IS_URI_LETTER((unsigned char)uri[i]) )
{
return FALSE;
}
}
return TRUE;
}
static CMN_BOOL validName(const char *name)
{
int i = 0;
if ( name == NULL)
{
return TRUE;
}
for ( i = 0; name[i] != EOS; ++i)
{
if ( (unsigned char)name[i] <= 31 )
{
return FALSE;
}
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -