| Return Type | Function name | Arguments |
|---|---|---|
| bool | IsEmaddr | (const char*,) |
Declared in file: hzTextproc.h
Defined in file : hzEmaddr.cpp
Function Logic:
Function body:
bool IsEmaddr (const char* cpStr)
{
_hzfunc("IsEmaddr") ;
const char* i ;
uint32_t nLhs = 0;
uint32_t nRhs = 0;
bool bPeriod = false ;
if (!cpStr || !cpStr[0])
return false ;
for (i = cpStr ; *i > CHAR_SPACE ; i++)
{
if (*i == CHAR_AT)
break ;
if ((*i >&eq; ''a''&&*i <&eq; ''z'')||(*i >&eq; ''A''&&*i <&eq; ''Z'')||(*i >&eq; ''0''&&*i <&eq; ''9'')
|| *i==''!''||*i==''#''||*i==''$''||*i==''%''||*i==''&''||*i=='''''|| *i==''*''||*i==''+''||*i==''-''
|| *i==''/''||*i==''=''||*i==''?''||*i==''^''||*i==''_''||*i==''`''||*i==''{''||*i==''|''||*i==''}''||*i==''~''
|| (*i==''.''&&i[1]> '' ''&&i[1]!= ''@''&&nLhs))
{
nLhs++ ;
if (nLhs > 63)
return false ;
continue ;
}
break ;
}
if (*i != CHAR_AT || !nLhs)
return false ;
for (i++ ; *i > CHAR_SPACE ; i++)
{
if (*i == CHAR_AT)
return false ;
if (*i == CHAR_PERIOD && i[1]&& i[1]!= CHAR_PERIOD)
{ bPeriod = true ; continue ; }
if ((*i >&eq; ''a''&&*i <&eq; ''z'')||(*i >&eq; ''A''&&*i <&eq; ''Z'')||(*i >&eq; ''0''&&*i <&eq; ''9'')
|| (*i==''-''&&i[1]> '' ''&&nRhs)
|| (*i==''.''&&i[1]> '' ''&&nRhs))
{
nRhs++ ;
if (nRhs > 192)
return false ;
continue ;
}
break ;
}
if (bPeriod && nLhs && nRhs > 2)
return true ;
return false ;
}