📄 mmimmsglobaldef.c
字号:
case MSG_HDR_TYPE_BCC:
case MSG_HDR_TYPE_CC:
case MSG_HDR_TYPE_RECEIVER:
case MSG_HDR_TYPE_SENDER:
case MSG_HDR_TYPE_TITLE:
case MSG_HDR_TYPE_STATE:
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
break;
case MSG_HDR_TYPE_DATE:
flag_continue = 0;
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
break;
case MSG_HDR_TYPE_FILENAME:
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
if(msg_hdr_type_len == 0)
{
MMS_TRACE_EVENT(("WARNING: No MSG_HDR_TYPE_FILENAME content"));
}
break;
case MSG_HDR_TYPE_MSGSIZE:
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
if(msg_hdr_type_len != 4)
{
MMS_TRACE_EVENT(("msg_hdr_type_len \!= 4"));
FREE_MEMORY((U8*)file_content_buffer,(U16)(sizeof(MMS_S8)*(file_len + 256)));
return -1;
}
break;
default:
case MSG_HDR_TYPE_UNKNOWN:
FREE_MEMORY((U8*)file_content_buffer,(U16)(sizeof(MMS_S8)*(file_len + 256)));
return FALSE;
}
}
msgSum++;
}
FREE_MEMORY((U8*)file_content_buffer,(U16)(sizeof(MMS_S8)*(file_len + 256)));
return msgSum;
}
MMS_S32 MMS_Get_Msg_Sum()
{
#ifdef _INNOVATION_EMULATOR_
MMS_S8 fullname[128];
MMS_S8 path[128];
WIN32_FIND_DATA FileData;
HANDLE hSearch;
BOOL fFinished = FALSE;
BOOL isDirectory;
int nfiles = 0;
GetCurrentDirectoryA(sizeof(path),path);
strcat(path,"\\filesystem");
strcat(path, "/mms/message/");
strcpy(fullname, path, strlen(path));
strcat(fullname, "*.*");
hSearch = FindFirstFileA(fullname, &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
return -1;
}
while (!fFinished)
{
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0x00)
{
if(FileData.cFileName[0] != 0)
{
if(FileData.cFileName[0]>='0' && FileData.cFileName[0]<='9')
nfiles ++;
}
}
if (!FindNextFileA(hSearch, &FileData))
{
fFinished = TRUE;
}
}
FindClose(hSearch );
return nfiles;
#else
T_FFS_DIR sDir;
MMS_S32 iSum = 0;
MMS_S32 iRet = 0;
MMS_S8 filename[32];
if((iRet = ffs_opendir("/mms/message", &sDir)) >= 0)
{
memset(filename, 0, sizeof(filename));
while((iRet = ffs_readdir(&sDir, filename, sizeof(filename))) > 0 )
{
MMS_TRACE_EVENT(("MMS_Get_Msg_Sum():file names: %s", filename));
if(filename[0]>='0' && filename[0]<='9')
iSum++;
}
}
else
{
iSum = -1;
MMS_TRACE_EVENT(("Open /mms/message error"));
}
return iSum;
#endif
}
BOOL MMS_Check_MsgSum()
{
MMS_S32 iSum = 0;
MMS_S32 iSum2;
MMS_S32 iRet;
T_FFS_DIR sDir;
if( MMS_fstat("/mms/dmf.txt") > 0)
{
iRet = MMS_GetFolder_MsgSum("/mms/",MMS_FOLDER_TYPE_DRAFT);
if(iRet > 0)
iSum += iRet;
}
if( MMS_fstat("/mms/smf.txt") > 0)
{
iRet = MMS_GetFolder_MsgSum("/mms/",MMS_FOLDER_TYPE_SEND);
if(iRet > 0)
iSum += iRet;
}
if(MMS_fstat("/mms/rmf.txt") > 0)
{
iRet = MMS_GetFolder_MsgSum("/mms/",MMS_FOLDER_TYPE_RECV);
if(iRet > 0)
iSum += iRet;
}
if(MMS_fstat("/mms/usmf.txt") > 0)
{
iRet = MMS_GetFolder_MsgSum("/mms/",MMS_FOLDER_TYPE_UNSEND);
if(iRet > 0)
iSum += iRet;
}
iSum2 = MMS_Get_Msg_Sum();
if(iSum2 == iSum)
return TRUE;
else
return FALSE;
}
typedef struct tagMMS_FILE_LIST MMS_FILE_LIST;
typedef MMS_FILE_LIST *pMMS_FILE_LIST;
struct tagMMS_FILE_LIST
{
char *pFileName;
unsigned char lenth;
pMMS_FILE_LIST pNext;
};
pMMS_FILE_LIST mmsFileList=NULL;
pMMS_FILE_LIST curMMSFileListNode = NULL;
BOOL MMS_Read_FolderMsg(unsigned char folderType)
{
MMS_FILE fp;
MMS_S8 pathname[64];
MMS_S8 *file_content_buffer = NULL;
MMS_S32 file_len = 0;
MMS_S32 file_pos = 0;
MMS_S8 flag_continue = 1;
MMS_S8 *ptr_buf = NULL;
MMS_S32 count = 0;
MMS_memset(pathname, 0, 64);
MMS_strcpy(pathname, "/mms/");
switch (folderType)
{
case MMS_FOLDER_TYPE_RECV:
MMS_strcat(pathname, "rmf.txt");
break;
case MMS_FOLDER_TYPE_SEND:
MMS_strcat(pathname, "smf.txt");
break;
case MMS_FOLDER_TYPE_DRAFT:
MMS_strcat(pathname, "dmf.txt");
break;
case MMS_FOLDER_TYPE_UNSEND:
MMS_strcat(pathname, "usmf.txt");
break;
default:
return FALSE;
}
file_len = MMS_fstat(pathname);
if(file_len == 0)
{
return TRUE;
}
else if(file_len < 0)
{
return FALSE;
}
fp = MMS_fopen(pathname, "r");
if((int)fp <= 0)
{
MMS_TRACE_EVENT(("MMS_fopen failed"));
return FALSE;
}
file_content_buffer = (MMS_S8*)ALLOC_MEMORY(sizeof(MMS_S8)*(file_len + 256));
MMS_fread(file_content_buffer, file_len,1, fp);
MMS_fclose(fp);
file_pos = 0;
while(1)
{
if(file_pos >= file_len)
{
break;
}
flag_continue = 1;
while(flag_continue)
{
MMS_S8 msg_hdr_type = MSG_HDR_TYPE_UNKNOWN;
MMS_U8 msg_hdr_type_len = 0;
if(file_pos >= file_len)
{
MMS_TRACE_EVENT(("file_pos error!"));
FREE_MEMORY((U8*)file_content_buffer,(U16)(sizeof(MMS_S8)*(file_len + 256)));
return FALSE;
}
msg_hdr_type = (MMS_S8)*(file_content_buffer + file_pos);
msg_hdr_type_len = (MMS_U8)*(file_content_buffer + file_pos + 1);
ptr_buf = file_content_buffer + file_pos + 2;
file_pos += (msg_hdr_type_len + 2);
if(file_pos > file_len)
{
MMS_TRACE_EVENT(("file_len error , data may be corrupted!"));
FREE_MEMORY((U8*)file_content_buffer, (U16)(sizeof(MMS_S8)*(file_len + 256)));
return FALSE;
}
switch(msg_hdr_type)
{
case MSG_HDR_TYPE_BCC:
case MSG_HDR_TYPE_CC:
case MSG_HDR_TYPE_RECEIVER:
case MSG_HDR_TYPE_SENDER:
case MSG_HDR_TYPE_TITLE:
case MSG_HDR_TYPE_STATE:
case MSG_HDR_TYPE_MSGSIZE:
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
break;
case MSG_HDR_TYPE_DATE:
flag_continue = 0;
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
break;
case MSG_HDR_TYPE_FILENAME:
MMS_TRACE_EVENT(("case MSG_HDR_TYPE_FILENAME:%",msg_hdr_type));
if(msg_hdr_type_len != 0)
{
if(!curMMSFileListNode)
{
curMMSFileListNode = (pMMS_FILE_LIST)ALLOC_MEMORY(sizeof(MMS_FILE_LIST));
curMMSFileListNode->pFileName = (MMS_S8 *)ALLOC_MEMORY(msg_hdr_type_len+1+2);
MMS_memset(curMMSFileListNode->pFileName, 0, msg_hdr_type_len+1+2);
MMS_memcpy(curMMSFileListNode->pFileName, ptr_buf, msg_hdr_type_len);
curMMSFileListNode->lenth = msg_hdr_type_len+1+2;
curMMSFileListNode->pNext = NULL;
mmsFileList = curMMSFileListNode;
}
else
{
pMMS_FILE_LIST tempFileListNode = NULL;
tempFileListNode = (pMMS_FILE_LIST)ALLOC_MEMORY(sizeof(MMS_FILE_LIST));
tempFileListNode->pFileName = (MMS_S8 *)ALLOC_MEMORY(msg_hdr_type_len+1+2);
MMS_memset(tempFileListNode->pFileName, 0, msg_hdr_type_len+1+2);
MMS_memcpy(tempFileListNode->pFileName, ptr_buf, msg_hdr_type_len);
tempFileListNode->lenth = msg_hdr_type_len+1+2;
tempFileListNode->pNext = NULL;
curMMSFileListNode->pNext = tempFileListNode;
curMMSFileListNode = tempFileListNode;
}
MMS_TRACE_EVENT((curMMSFileListNode->pFileName));
}else
{
MMS_TRACE_EVENT(("WARNING: No MSG_HDR_TYPE_FILENAME content"));
}
break;
default:
case MSG_HDR_TYPE_UNKNOWN:
FREE_MEMORY((U8*)file_content_buffer, (U16)(sizeof(MMS_S8)*(file_len + 256)));
return FALSE;
}
}
}
FREE_MEMORY((U8*)file_content_buffer,(U16)(sizeof(MMS_S8)*(file_len + 256)));
return TRUE;
}
void MMS_Delete_Msg_List()
{
if(mmsFileList)
{
pMMS_FILE_LIST pTempNode = NULL;
do
{
pTempNode = mmsFileList;
FREE_MEMORY((U8*)pTempNode->pFileName, (U16)pTempNode->lenth);
FREE_MEMORY((U8*)pTempNode, (U16)sizeof(MMS_FILE_LIST));
mmsFileList = mmsFileList->pNext;
} while(mmsFileList);
curMMSFileListNode = NULL;
mmsFileList = NULL;
}
}
void MMS_Create_Msg_List()
{
if(FALSE == MMS_Read_FolderMsg(MMS_FOLDER_TYPE_RECV))
{
MMS_Delete_Msg_List();
return ;
}
if(FALSE == MMS_Read_FolderMsg(MMS_FOLDER_TYPE_SEND))
{
MMS_Delete_Msg_List();
return;
}
if(FALSE == MMS_Read_FolderMsg(MMS_FOLDER_TYPE_DRAFT))
{
MMS_Delete_Msg_List();
return;
}
if(FALSE == MMS_Read_FolderMsg(MMS_FOLDER_TYPE_UNSEND))
{
MMS_Delete_Msg_List();
return;
}
}
BOOL isInMMSMsgList(char *strFileName)
{
if(mmsFileList && strFileName)
{
pMMS_FILE_LIST pTempNode = mmsFileList;
do
{
if(0 == strcmp(pTempNode->pFileName,strFileName))
return TRUE;
else
pTempNode = pTempNode->pNext;
} while(pTempNode);
return FALSE;
}
return FALSE;
}
#endif
//Return 1 if suc, 0 for fail
BOOL MMS_Check_Files(void)
{
T_FFS_RET error;
T_FFS_STAT stat;
if(!mmi_mms_chkDir(MMS_PATH)) return 0;
if(!mmi_mms_chkDir(MMS_TEMP_PATH)) return 0;
if(!mmi_mms_chkDir(MMS_MESSAGE_PATH)) return 0;
if(!mmi_mms_chkDir(MMS_IMAGE_FILEPATH)) return 0;
if(!mmi_mms_chkDir(MMS_MUSIC_FILEPATH)) return 0;
if(!mmi_mms_chkSettingsFile()) return 0;
if(!mmi_mms_chkFile("/mms/dmf.txt" , NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/dmfu.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/mset.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/rmf.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/rmfu.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/smf.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/smfu.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/usmf.txt", NULL, 0)) return 0;
if(!mmi_mms_chkFile("/mms/usmfu.txt",NULL, 0)) return 0;
MMS_TRACE_EVENT(("MMS_Check_Files():check all MMS config ok!!!"));
return 1;
}
void MMS_Initialize()
{
BOOL ret;
int funRet;
#if 1
MMS_FILE fp;
fp = MMS_fopen("/mms/rmfu.txt", "r+b");
if(fp)
{
MMS_fread(&gNewMMSNum,sizeof(gNewMMSNum),1,fp);
MMS_fclose(fp);
}
#endif
//delete filess remained in temp directory
{
char tempPath[64];
strcpy(tempPath, MMS_TEMP_PATH);
strcat(tempPath, "/");
MMS_deletefiles(tempPath);
}
//delete .mms files which do not ocuur in .txt
//MMS_S32 MMS_fstat(MMS_S8 *filename)
#if 1
{
if(FALSE == MMS_Check_MsgSum())
{
MMS_Create_Msg_List();
#ifdef _INNOVATION_EMULATOR_
{
MMS_S8 fullname[128];
MMS_S8 path[128];
int len;
WIN32_FIND_DATA FileData;
HANDLE hSearch;
BOOL fFinished = FALSE;
BOOL isDirectory;
int nfiles = 0;
int i = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -