⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 share.cpp

📁 中国移动的短信网关程序
💻 CPP
字号:
/*--------------------------------------------------------------* * Name: share.cpp                                              * * Desc: This program include all functions that share with all * *       hardware infterface route.                             * *--------------------------------------------------------------*/#include "stdafx.h"#include "share.h"extern   TIME_REC s_rCurTime;extern FILE *DebugFp;extern int  DebugLine;extern FILE *ErrorFp;extern int  ErrorLine;/*-------------------------------------------------------------* * Nmae : getSysTime                                           * * Desc : get system clock , second & ms to var 'rTime'        * *-------------------------------------------------------------*/void getSysTime(TIME_REC *rTime){    struct timeb rTm;    ftime(&rTm);    rTime->sec =  rTm.time;    rTime->ms  =  rTm.millitm;}/*-------------------------------------------------------------* * Name: diffMsTime                                            * * Desc: return the value(MS) of (rTime1-rTime)                * *-------------------------------------------------------------*/long diffMsTime(TIME_REC *rTime1,TIME_REC *rTime2){    return ( ((rTime1->sec - rTime2->sec)*1000) +              (rTime1->ms  - rTime2->ms )  ) ;}int getIntFromStr( char *str, int i){    char sTmpStr[20];    if( i >= 20 )        return -1;    memcpy(sTmpStr, str, i);    sTmpStr[i] = '\0';    return (atoi(sTmpStr));} void writeLog(FILE *fp, int *nLines, char *s, char sName[], int nMode){    int nNameNo = 32;    char sOldName[128];    char sNewName[128];    char *p;    if( fp == NULL)  return;    fprintf(fp, "%s",s);    if( nMode )        fprintf(fp, "\n");    (*nLines) +=1 ;    fflush(fp);    if( (*nLines) >= MaxLogLines)    {        while ( nNameNo )        {	    strcpy(sOldName, sName);	    strcpy(sNewName, sName);	    p = strchr(sNewName, '.');	    sprintf(sNewName+(p-sNewName-1), "%02d.log", nNameNo--);	    p = strchr(sOldName, '.');	    sprintf(sOldName+(p-sOldName-1), "%02d.log", nNameNo);            unlink(sNewName);            rename(sOldName, sNewName);        }        fclose(fp);        unlink(sOldName);        rename(sName, sOldName);        fp = fopen(sName,"w");        (*nLines) = 0;    }    return;}void creatLogLine(char sBuf[],char sPrompt[],long nSec,long nMs,char sCom[]){    char *p;    strcpy(sBuf, ctime(&nSec ));    if (  ( p=strchr ( sBuf , '\n')) != NULL )        *p = '\0';    else        p = sBuf+strlen(sBuf);       sprintf(p, ":%04ld " , nMs );      strcat(p, sPrompt);    strcat(p, sCom);}FILE *openLogFile( char sName[], char *flag){    if ( isFullPathDir(sName) != 0 )        return (FILE *)NULL;    return fopen(sName, flag);}/*--------------------------------------------------------------* * Name: isFullPathDir(char *)                                  * * Desc: input a string such as "/vox/1/2/3/4/5.vox". In this   * *       function, first creat /vox if this dir no exist, then  * *       creat /1 if it unexist ......                          * *--------------------------------------------------------------*/ int isFullPathDir ( char sName[]){    char *p;    char *q;    char tmpName[256];    while ( 1 )    {        strcpy(tmpName, sName );        if ( tmpName[0] == '\\')            q = &tmpName[1];        else            q = &tmpName[0];        p = (char *)strchr(q,'\\');        if ( p!=NULL )        {            *p = '\0';            if ( isDirectroy ( tmpName ) != 0  )                return -1;        }        else            return 0;    }}/*--------------------------------------------------------------* * Name: isDirectroy( char *)                                   * * Desc: check The "sDir" if exist. if not exist, creat this    * *       directory;  else if exist, but isn't a directory, then * *       delete it and creat a directory                        * *--------------------------------------------------------------*/ int  isDirectroy ( char *sDir ){    struct stat  rStat;     if ( stat(sDir, &rStat ) != 0 )    {        /*          * the directory no exist, creat itu         */        if(mkdir(sDir) != 0 )           return -1;        return 0;    }    if ( !( rStat.st_mode & _S_IFDIR) )    {        /*         * the directory had exist, but is file,now  delete it,         * and then creat a diretory         */        if ( unlink(sDir) !=0 )            return -1;        if(mkdir(sDir) != 0 )           return -1;        return  0;    }    return 0;}#define ToChar(c)       (c)>=10?((c)-10+'a'):((c)+'0')int CreateBinLog( char *CurCom, char *strPrompts, int CurLen, char *DesCom ){    int i=0, nLen=0;    char *p, *q;    if( CurLen == 0 )	return -1;    if(strPrompts)    {        memcpy(DesCom, strPrompts, strlen(strPrompts));        q = (char *)DesCom+strlen(strPrompts);    }    else	q = (char *)DesCom;    p = (char *)CurCom;    while( i++ < CurLen )    {/*	if( *p > 0x20 && *p <= 'z')        {            *(q++) = *(p++);            nLen++;        }        else*/        {            *(q++) = '[';            *(q++) = ToChar((char(*p)>>4)&0x0f);	    *(q++) = ToChar((*p)&0x0f);            p++;            *(q++) = ']';            nLen += 4;        }    }    *q = 0x00;    return nLen;}/*--------------------------------------------------------------* * Name:creatALogLine                                           *  * Desc:creat a log line to [sBuf]. nLen is the buf size of     * *      [sBuf]. first, add system time to [sBuf], then add      * *      sPrompt. at last, add sItem. if there is a control char * *      in sItem, should add '['+0x??+']'                       * * Retn: None                                                   * *--------------------------------------------------------------*/char * creatALogLine(char *sPrompt,char *sInItem, int nInLen, int nIsSmpp){    static char   sBuf[MaxCommBuff+100], sTmpStr[5];    time_t        nCurTime;    char          * psCurrTime, *psInItem;    int           nAddLen = 0, i;       i=0;    /*  add time strings to sBuf */    sBuf[0]= '\0';    time( &nCurTime );     psCurrTime = ctime( &nCurTime );    sprintf( sBuf,"%.11s> ",  psCurrTime+8);    /* add item string to sBuf */    psInItem = sInItem; nAddLen = strlen(sBuf);    if(nIsSmpp ==1 &&  nInLen < 12 )    {	strcat(sBuf, "Is Smpp procotol but nLen < 12\n");	return sBuf;    }     else if(nIsSmpp == 1)    {	for(i = 0; i< 12; i++)	{	    sprintf(sBuf+nAddLen, "[%02x]", (unsigned char) *psInItem);		psInItem ++, nAddLen += 4; 	}	nInLen -= 12;    }    if(nInLen > 0)	strcpy(sTmpStr, " ##");    else	sTmpStr[0]='\0';    nAddLen = strlen(sBuf);    while (  nInLen -- >0  )    {        if ( *psInItem >= 32 && *psInItem <= 127 && nAddLen < MaxCommBuff)         {            sBuf[nAddLen++] =  * psInItem;	    psInItem ++;	}        else  if(nAddLen +4 < MaxCommBuff)	{             sprintf( sBuf+nAddLen, "[%02x]", (unsigned char) *psInItem  );	    psInItem ++;            nAddLen += 4;        }	else	   break;    }      /* Note: if the tail char isn't '\n', should add a '\n' */    sprintf(sBuf + nAddLen, "%s%.90s\n", sTmpStr, sPrompt);    return sBuf;}int bDataJudge[129]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,					  1,-1,-1, 1,-1,-1,-1,-1,-1,-1,					 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,					 -1,-1, 1, 1, 1, 1,-1, 1, 1, 1,					  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,					  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,					  1, 1, 1, 1,-1, 1, 1, 1, 1, 1,					  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,					  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,					  1, 1,-1,-1,-1,-1,-1, 1, 1, 1,					  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,					  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,					  1, 1, 1,-1,-1,-1,-1,-1,-1};int checkNokiaUserData(char * sInItem, int nInLen, char * sOutItem, int *pnOutLen){    char sCheckBuff[MaxCommBuff];    char * pcInItem, *pcOutItem;    int nLen ;     if( sInItem == NULL || nInLen ==0)    {	return -1;    }    pcInItem = sInItem;    pcOutItem = sCheckBuff;    memset(sCheckBuff, '\0', sizeof(sCheckBuff) );    nLen = 0;    while( *pcInItem && nInLen-->0)    {	if( *pcInItem < 0 || *pcInItem > 126)	{	    pcInItem ++;	    continue;	}	if( bDataJudge[*pcInItem] == -1)	{	    pcInItem ++;	    continue;	}	else	{	    *pcOutItem++ = *pcInItem++;	    nLen ++;	    if(nLen > MaxCommBuff)		break;	}    }    if(nLen <=0)    {	return -2;    }    if(sOutItem == NULL)    {	memset(sInItem, '\0', nLen-1);	memcpy(sInItem, sCheckBuff, nLen );	*pnOutLen = nLen ;	return 0;    }    memcpy(sOutItem, sCheckBuff, nLen );    *pnOutLen = nLen;    return  0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -