www.pudn.com > Net_apps.rar > str_function.c
/*
*********************************************************************************************************
* Copyright 2003 Service & Quality Technology CO., LTD. ALL RIGHTS RESERVED.
* This software is provided under license and contains proprietary and
* confidential material which is the property of SQ tech.
*
* FileName : str_function.c
* Description :
*
*
* Version control:
* $Revision: 0.1 $ Date: 2003/12/15 12:00:00 gofly
* first implemetation
*
*********************************************************************************************************
*/
#include "..\include\L3\net_apps\str_function.h"
/****************************************************************************/
/* FUNCTION NAME : extra_strncmp
/* DESCRIPTION : strncmp str
/* in PARAMETERS : 2 str
/*
/* out PARAMETERS: a,b => if a == b return 0
/* => if a== NULL || b == NULL return 0 ***
/* => if a!=b return 1
/*
/* RETURN VALUES :
/*
/*
/* EXAMPLE :
*****************************************************************************/
INT8U extra_strncmp(INT8U *a,INT8U *b)
{
INT32U aLen, bLen, MaxLen;
if(a == NULL || b == NULL)
return 0;
aLen = strlen((const char*)a);
bLen = strlen((const char*)b);
MaxLen = (aLen > bLen) ? aLen :bLen;
if(aLen != bLen)
return 1;
if(strncmp((const char*)a,(const char*)b,(size_t)MaxLen))
return 1;
return 0;
}
/*
*********************************************************************************************************
* ustrlen()
* Description : find the length of a string
*
* Arguments : @s The string to be sized
* Returns :
*********************************************************************************************************
*/
INT32U ustrlen(const char * s)
{
HINT8U *sc;
HINT8U *se = (HINT8U *) s;
for (sc = se; *sc != '\0'; ++sc)
/* nothing */;
return sc - se;
}
/****************************************************************************/
/* FUNCTION NAME : s_f_replace_k_w
/* DESCRIPTION : replace key word
/* in PARAMETERS :
/* out PARAMETERS:
/* RETURN VALUES :
*****************************************************************************/
// s_f string function k_w key word
INT8S s_f_replace_k_w(S_p_replace s)
{
INT8U search[64];//key word 64 keywordmaxsize
INT8U temp[128]; //replace 128 replace maxsize
INT8U *begin,*end,*p8,*p8t;
INT32U *data;
INT16U i;
data = (INT32U*)(&s->data);// for debug printf msg ex: behalf show UID PID
if(s->source == NULL || s->tag == NULL || s->source_size <= 0 || s->tag_size <= 0 )
{
#if DEBUG_S_F_REPLACE_K_W
printf("ERR: DEBUG_S_F_REPLACE_K_W R_PARAMETER_ER\n");
#endif
return R_PARAMETER_ER;
}
begin = end = p8 = s->source;
*s->tag = 0x00;
for(i=0; i < 60000; i++)
{
begin = (INT8U*) strchr((const INT8S*)p8 ,'$');
if(begin == NULL)
{
break;
}
p8t = (INT8U*)memccpy(s->tag + strlen((const INT8S*)s->tag), end,'$',s->tag_size);
*(p8t -1) = 0x00;
end = (INT8U*) strchr((const INT8S*)begin,'=');
if(end == NULL)
{
break;
}
if(end - begin < 0 || end - begin >= sizeof(search))
{
#if DEBUG_S_F_REPLACE_K_W
printf("ERR: DEBUG_S_F_REPLACE_K_W replace search size = %d >= %d\n",end-begin,sizeof(search));
#endif
return R_ER;
}
p8t = (INT8U*) memccpy(search,begin+1,'=',sizeof(search));
*(p8t - 1) = 0x00;
#if DEBUG_S_F_REPLACE_K_W
printf("DEBUG_S_F_REPLACE_K_W search %s \n",search);
#endif
s->replace_law(search,temp,IOR,0);// 0 = root
strcpy(( INT8S*)((INT8S*)(s->tag+strlen((const INT8S*)s->tag))),(const INT8S*)temp);
p8 = end + 1;
if(*end == '=')
{
end++;
}
}
if(end != NULL && end <= s->source + s->source_size)
{
strcpy((INT8S*)(s->tag + strlen((const INT8S*)s->tag)),(const INT8S*)end);
}
return R_OK;
}
/* example
s_replace.source = smtp_text_head;
s_replace.tag = G_big_temp_buf;
s_replace.source_size = sizeof(smtp_text_head);
s_replace.tag_size = sizeof(G_big_temp_buf);
s_replace.data = NULL;
s_replace.replace_law = smtp_replace_law;
s_f_replace_k_w(&s_replace);
INT8S smtp_replace_law(INT8U *search,INT8U *search_tag)
{
static INT8U r_g_b = 0;
*search_tag = 0x00;
if(search == NULL || search_tag == NULL)
{
return R_ER;
}
if(!strncmp((const INT8S*)search,(INT8S*)"SMTP_SUBJECT",strlen((const INT8S*)search)))
{
strcpy((INT8S*)search_tag,"SMTP_SUBJECT");
}
else if(!strncmp((const INT8S*)search,(INT8S*)"SMTP_TIME",strlen((const INT8S*)search)))
{
strcpy((INT8S*)search_tag,"SMTP_TIME");
}
#if DEBUG_S_F_REPLACE_K_W
printf("DEBUG_S_F_REPLACE_K_W REPLACE : %s %s\n", search, search_tag);
#endif
return R_OK;
}
*/