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

📄 cdradm.cpp

📁 中国移动的短信网关程序
💻 CPP
字号:
#include "stdafx.h"
#include "share.h"

static struct tm g_rOldTm;
static char g_sSmsCDRFileName[256] = {0x00};
static FILE *g_fpSmsCDR;

FILE *OpenSmsCDRFile(char *flag);
int IsFullPathDir ( char *sName);
int  IsDirectroy ( char *sDir );
void WriteSmsCDR(char *s);

extern char g_sProcName[];
extern void ClearMoAndMtCounts();

void WriteSmsCDR(char *s)
{
    time_t nTime;
    struct tm rCurTm;

	if(g_fpSmsCDR == NULL)
	{
		if((g_fpSmsCDR = OpenSmsCDRFile("a+")) == NULL)
			return;
	}
	
    time(&nTime);
    memcpy(&rCurTm, localtime(&nTime), sizeof(rCurTm));

    if(rCurTm.tm_mday != g_rOldTm.tm_mday || 
	rCurTm.tm_mon != g_rOldTm.tm_mon || 
	rCurTm.tm_year != g_rOldTm.tm_year)
    {
		ClearMoAndMtCounts();
        fclose(g_fpSmsCDR);
        if((g_fpSmsCDR = OpenSmsCDRFile("w")) == NULL)
	        return ;
    }

    fprintf(g_fpSmsCDR, "%s\n",s);
    fflush(g_fpSmsCDR);

    return;
}

FILE *OpenSmsCDRFile(char *flag)
{
    time_t nTime;
  
    time(&nTime);
    memcpy(&g_rOldTm, localtime(&nTime), sizeof(g_rOldTm));

    sprintf(g_sSmsCDRFileName, "%s/CDR/%s/%04d/%02d/CDR%04d%02d%02d.log",
		getenv("HOME"), g_sProcName, g_rOldTm.tm_year+1900,g_rOldTm.tm_mon+1, 
		g_rOldTm.tm_year+1900, g_rOldTm.tm_mon+1, g_rOldTm.tm_mday);

    if ( IsFullPathDir(g_sSmsCDRFileName) != 0 )
        return (FILE *)NULL;
    return fopen(g_sSmsCDRFileName, flag);
}

int IsFullPathDir ( char *sName)
{
    char *p;
    char *q;
    char tmpName[256];
    int  j=0,i=1;

    while ( 1 )
    {
        strcpy(tmpName, sName );

        if ( tmpName[0] == '/')
            q = &tmpName[1];
        else
            q = &tmpName[0];

        for ( j=0; j<i; j++ )
        {
            p = (char *)strchr(q,'/');
            q = p+1;
        }

        if ( p!=NULL )
        {
            *p = '\0';
            if ( IsDirectroy ( tmpName ) != 0  )
                return -1;
            if ( p==NULL )
                return 0;
            else 
                i++;
        }
        else
            return 0;
    }    
}

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;
}

⌨️ 快捷键说明

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