📄 cli_lib.c
字号:
Description. :
Calls :
Called By :
Table Accessed : None
Table Updated : None
Input :
Output :
Return :
Others : None
**************************************************************************/
_U32 _VerifyAndCvtDword (_S8 * szNum, _U32 dwLow, _U32 dwHigh, _U32 *
pdwValue)
{
_U32 dwData;
_S8 *pTemp, buf[32];
if((szNum == G_NULL) || (pdwValue == G_NULL))
{
MT_ERRLOG(0);
return G_FAILURE;
}
pTemp = _btrim(szNum);
if (!strlen (pTemp) || _isdecstr (pTemp) != 0)
return G_FAILURE;
dwData = (_U32) atol (pTemp);
EOS_Sprintf (buf, "%u", dwData);
while (*pTemp == '0' && *(pTemp + 1) != 0)
pTemp ++;
if (strcmp (pTemp, buf))
return G_FAILURE;
if ((dwData < dwLow) || (dwData > dwHigh))
return G_FAILURE;
*pdwValue = dwData;
return G_SUCCESS;
}
_U32 _VerifyAndCvtDwordH (_S8 * szNum, _U32 dwLow, _U32 dwHigh, _U32 *
pdwValue)
{
_U32 dwData;
_S8 *pTemp;
if((szNum == G_NULL) || (pdwValue == G_NULL))
{
MT_ERRLOG(0);
return G_FAILURE;
}
pTemp = _btrim(szNum);
if (!strlen (pTemp) || _isxdecstr (pTemp) != 0)
return G_FAILURE;
//如果范围越界,直接返回失败
if ((strlen(pTemp) > 10)
|| (*(pTemp+1) != 'x' && (strlen(pTemp) > 8)))
return G_FAILURE;
dwData = (_U32) _strtol (pTemp, 16);
if ((dwData < dwLow) || (dwData > dwHigh))
return G_FAILURE;
*pdwValue = dwData;
return G_SUCCESS;
}
/**************************************************************************
* PROTOTYPE : _S32 _isdecstr(_S8 * pStr) *
* FUNCTION : Check if a string is a valid decimal string? *
* INPUTS : pStr = Pointer to the string to be checked *
* OUTPUTS : *
* RETURNS : 0 : YES; Other : NO *
* REQUEST : None *
* DATA TYPE : None *
* WORK FLOW : Omit *
* CALLED BY : Anywhere *
* OTHERS : None *
***************************************************************************/
_U32 _isdecstr (_S8 * pStr)
{
_S8 * p;
if(pStr == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
for (p = pStr; *p; p++)
if (!isdigit (*p)) return G_FAILURE;
return G_SUCCESS;
}
_U32 _isxdecstr (_S8 * pStr)
{
_S8 * p;
if(pStr == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
if ( (*pStr == '0') && (tolower(*(pStr+1)) == 'x') )
pStr += 2;
for (p = pStr; *p; p++)
{
if (!isxdigit (*p))
return G_FAILURE;
}
return G_SUCCESS;
}
/*********************************************************************/
/* 函数名称 : _DateOrTimeToUl() */
/* 函数功能 : 将时间或日期转换成长整型. 该函数不作格式检查,如需检查, */
/* 调用者使用函数_VerifyDate自行检查 */
/* 输入参数 : szDate 日期字符串 */
/* 输出参数 : pulDate 转换后的日期整型 */
/* 返回 : 成功/失败 */
/* 上层函数 : */
/* 创建者 : Liuzequn */
/* 修改记录 : */
/*********************************************************************/
_U32 _DateOrTimeToUl(_S8 *szDate, _U32 *pulDate)
{
_S8 *pcDst, *pcSrc ;
_U8 ucType;
_S8 szSrc[20];
_U32 ulTime[3];
if (szDate == G_NULL || pulDate == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
strcpy(szSrc, szDate);
pcSrc = szSrc;
pcDst = szSrc;
ucType = 0;
for (; ;)
{
if (*pcSrc <= '9' && *pcSrc >= '0')
pcSrc++;
else if (*pcSrc == '-' || *pcSrc == ':'|| *pcSrc == '\0')
{
if (ucType > 2)
return G_FAILURE;
if (*pcSrc == '\0')
{
if ((_U32)_atoul(pcDst, &ulTime[ucType]) != G_SUCCESS)
return G_FAILURE;
break;
}
*pcSrc = 0;
if ((_U32)_atoul(pcDst, &ulTime[ucType]) != G_SUCCESS)
return G_FAILURE;
pcSrc++;
pcDst = pcSrc;
ucType++;
}
else
{
return G_FAILURE;
}
}
*pulDate = (ulTime[0] << 16) | (ulTime[1] << 8) | (ulTime[2]);
return G_SUCCESS;
}
/*********************************************************************/
/* 函数名称 : _VerifyDate() */
/* 函数功能 : 判断日期类型的合法性 */
/* 输入参数 : */
/* 输出参数 : */
/* 返回 : */
/* 上层函数 : */
/* 创建者 : Liuzequn */
/* 修改记录 : */
/*********************************************************************/
_U32 _VerifyDate (_S8 *szDate1)
{
_S8 *pcTmp, *pcDate ;
_S8 szTmp[10] = "", szDate[20];
_U8 ucType;
_U32 ulNum[3];
_U32 ulLimit[3][2] = {{G_YEAR_MIN, G_YEAR_MAX},
{1, 12},
{1, 31}};
_U32 ulMaxDay[12] = {31, 29, 31, 30,
31, 30, 31, 31,
30, 31, 30, 31};
if (szDate1 == G_NULL || strlen(szDate1) > 10 || szDate1[0] == 0)
return G_FAILURE;
strcpy(szDate, szDate1);
pcTmp = szTmp;
pcDate = szDate;
ucType = 0;
for (;;)
{
if (*pcDate <= '9' && *pcDate >= '0')
*pcTmp++ = *pcDate++;
else if (*pcDate == '-' || *pcDate == '\0')
{
if (ucType > 2)
return G_FAILURE;
*pcTmp = 0;
if ((_U32)_atoul(szTmp, &ulNum[ucType]) != G_SUCCESS)
return G_FAILURE;
if (ulNum[ucType] > ulLimit[ucType][1]|| ulNum[ucType] < ulLimit[ucType][0])
return G_FAILURE;
if (*pcDate == '\0')
break;
pcDate++;
pcTmp = szTmp;
*szTmp = '\0';
ucType++;
}
else
{
return G_FAILURE;
}
}
if (ucType < 2)
return G_FAILURE;
if (ulNum[0] % 4 != 0)
ulMaxDay[1] = 28;
if (ulNum[2] > ulMaxDay[ulNum[1] - 1])
return G_FAILURE;
return G_SUCCESS;
}
/*********************************************************************/
/* 函数名称 : _VerifyTime() */
/* 函数功能 : 判断时间类型的合法性 */
/* 输入参数 : */
/* 输出参数 : */
/* 返回 : */
/* 上层函数 : */
/* 创建者 : Liuzequn */
/* 修改记录 : */
/*********************************************************************/
_U32 _VerifyTime (_S8 *szTime1)
{
_S8 *pcTmp, *pcTime ;
_S8 szTmp[10] = "", szTime[20];
_U8 ucType;
_U32 ulNum;
_U32 ulLimit[3] = {23, 59, 59};
if (szTime1 == G_NULL || strlen(szTime1) > 8 || szTime1[0] == G_NULL)
return G_FAILURE;
strcpy(szTime, szTime1);
pcTmp = szTmp;
pcTime = szTime;
ucType = 0;
for(; ;)
{
if (*pcTime <= '9' && *pcTime >= '0')
*pcTmp++ = *pcTime++;
else if (*pcTime == ':' || *pcTime == '\0')
{
if (ucType > 2 || szTmp[0] == '\0')
return G_FAILURE;
*pcTmp = 0;
if ((_U32)_atoul(szTmp, &ulNum) != G_SUCCESS)
return G_FAILURE;
if (ulNum > ulLimit[ucType])
return G_FAILURE;
if (*pcTime == '\0')
break;
pcTime++;
pcTmp = szTmp;
*szTmp = '\0';
ucType++;
}
else
{
return G_FAILURE;
}
}
if (ucType < 2)
return G_FAILURE;
return G_SUCCESS;
}
_U32 _VerifyHostIPAddress(_S8 *szIPAdd)
{
_S8 *pData;
_U32 ulCount = 0, ulIpByte = 0;
_S8 pTmp[4];
pData = szIPAdd;
pTmp[0] = pTmp[1] = pTmp[2] = pTmp[3] = '\0';
if(pData == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
for(;;)
{
if(isdigit(*pData))
{
if(ulIpByte > 2)
return G_FAILURE;
pTmp[ulIpByte] = *pData;
}
else if((*pData == '.') || (*pData == '\0'))
{
ulCount ++;
ulIpByte = (_U32)-1;
if(ulCount > 4)
return G_FAILURE;
if((atoi(pTmp) > 255) || (pTmp[0] == '\0'))
return G_FAILURE;
if((pTmp[0] == '0') && (pTmp[1] == '\0')
&& (ulCount == 1))
return G_FAILURE;
pTmp[0] = pTmp[1] = pTmp[2] = pTmp[3] = '\0';
if(*pData == '\0')
{
if(ulCount < 4)
return G_FAILURE;
return G_SUCCESS;
}
}
else return G_FAILURE;
pData ++;
ulIpByte ++;
}
}
_U32 _VerifyGeneralIPAddress(_S8 *szIPAdd)
{
_S8 *pData;
_U32 ulCount = 0, ulIpByte = 0;
_S8 pTmp[4];
pData = szIPAdd;
pTmp[0] = pTmp[1] = pTmp[2] = pTmp[3] = '\0';
if(pData == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
for(;;)
{
if(isdigit(*pData))
{
if(ulIpByte > 2)
return G_FAILURE;
pTmp[ulIpByte] = *pData;
}
else if((*pData == '.') || (*pData == '\0'))
{
ulCount ++;
ulIpByte = (_U32)-1;
if(ulCount > 4)
return G_FAILURE;
if((atoi(pTmp) > 255) || (pTmp[0] == '\0'))
return G_FAILURE;
pTmp[0] = pTmp[1] = pTmp[2] = pTmp[3] = '\0';
if(*pData == '\0')
{
if(ulCount < 4)
return G_FAILURE;
return G_SUCCESS;
}
}
else return G_FAILURE;
pData ++;
ulIpByte ++;
}
}
_U32 _VerifyMASKAddress(_S8 *szMaskAdd)
{
_S8 *pData;
_U8 ucMask = 0xff;
_U8 ucTmpMask;
_U8 ucByte;
_U32 ulCount = 0, ulIpByte = 0;
_S8 pTmp[4];
_U32 i, ulAllOne = 1;
_U32 ulByte;
pData = szMaskAdd;
pTmp[0] = pTmp[1] = pTmp[2] = pTmp[3] = '\0';
if(pData == G_NULL)
{
MT_ERRLOG(0);
return G_FAILURE;
}
for(;;)
{
if(isdigit(*pData))
{
if(ulIpByte > 2)
return G_FAILURE;
pTmp[ulIpByte] = *pData;
}
else if((*pData == '.') || (*pData == '\0'))
{
ulCount ++;
ulIpByte = (_U32)-1;
ulByte = (_U32)atoi(pTmp);
if((ulCount > 4) || (pTmp[0] == '\0') || (ulByte > 255))
return G_FAILURE;
ucByte = (_U8)ulByte;
ucTmpMask = ucMask;
for(i = 0; i < 8; i++)
{
if(ucByte == ucTmpMask)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -