/*lint -e960 */ VOS_VOID SC_Printf(const VOS_CHAR *pcformat, ...) /*lint +e960 */ { VOS_CHAR aucIMEILogFilePath[100]; VOS_CHAR acOutput[SC_LOG_MAX_LEN]; va_list argument; VOS_UINT32 ulRetLen; FILE *fp; VOS_UINT32 ulFileSize; /* 将格式化字符串和可变参数转换为字符串 */ va_start(argument, pcformat); ulRetLen = (VOS_UINT32)vsnprintf(acOutput, SC_LOG_MAX_LEN, pcformat, argument); va_end(argument); if ((SC_LOG_MAX_LEN < ulRetLen) || (0 == ulRetLen)) { return ; } if (VOS_OK != OM_GetLogPath(aucIMEILogFilePath, SC_IMEI_LOG_FILE_PATH, SC_IMEI_UNITARY_LOG_FILE_PATH)) { return ; } #if ((VOS_WIN32 == VOS_OS_VER)||(VOS_VXWORKS == VOS_OS_VER)||(VOS_RTOSCK == VOS_OS_VER)) fp = DRV_FILE_OPEN(aucIMEILogFilePath, "a"); if (VOS_NULL_PTR == fp) { return ; } (VOS_VOID)DRV_FILE_LSEEK(fp, 0, SC_FILE_SEEK_END); ulFileSize = (VOS_UINT32)DRV_FILE_TELL(fp); /* If the log file is too large, we need empty it. */ if (ulFileSize > SC_LOG_FILE_MAX_SIZE) { DRV_FILE_CLOSE(fp); fp = DRV_FILE_OPEN(aucIMEILogFilePath, "w"); if (VOS_NULL_PTR == fp) { return ; } } DRV_FILE_WRITE(acOutput, ulRetLen, 1, fp); DRV_FILE_CLOSE(fp); #endif return ; }
/***************************************************************************** 函 数 名 : USIMM_File_Tell 功能描述 : 返回FILE当前指针位置 输入参数 : Fp --- 文件句柄 输出参数 : 无 返 回 值 : SI_UINT32 函数执行结果 调用函数 : 被调函数 : 外部接口 修改历史 : 1.日 期 : 2013年08月28日 作 者 : zhuli 修改内容 : Create *****************************************************************************/ VOS_INT32 USIMM_File_Tell(FILE *Fp) { VOS_INT32 lFileSize = VOS_ERROR; lFileSize = DRV_FILE_TELL(Fp); if ( VOS_ERROR == lFileSize) { USIMM_WARNING_LOG("Tell File Size fail!"); } return lFileSize; }
/***************************************************************************** Function : NV_File_Tell Description: Return the current value of the file position indicator Input : FILE *Fp -> File position Return : The current value of the file position indicator Other : *****************************************************************************/ VOS_INT32 NV_File_Tell(FILE *Fp) { VOS_INT32 lFileSize = VOS_ERROR; lFileSize = DRV_FILE_TELL(Fp); if ( VOS_ERROR == lFileSize) { NV_Printf("NV:Tell File Size fail.\r\n"); } return lFileSize; }
/***************************************************************************** Prototype : OM_WriteLogProc Description : 处理ACPU发来的write Log请求 Input : pMsg - 指向消息地址 Output : None Return Value : VOS_VOID History : --- Date : 2012-05-08 Author : zhuli Modification : Created function *****************************************************************************/ VOS_VOID OM_WriteLogProc(MsgBlock* pMsg) { OM_WRITELOG_REQ_STRU *pstLogReq; VOS_UINT32 ulLen; FILE *fp; pstLogReq = (OM_WRITELOG_REQ_STRU*)pMsg; fp = DRV_FILE_OPEN((VOS_CHAR*)pstLogReq->aucFileName, "ab+"); /*按照追加方式打开文件*/ if(VOS_NULL_PTR == fp) /*如果文件打开失败说明建立文件也不成功*/ { return; } (VOS_VOID)DRV_FILE_LSEEK(fp, 0, DRV_SEEK_END); ulLen = (VOS_UINT32)DRV_FILE_TELL(fp); if(ulLen >= OM_LOG_FILE_MAX_SIZE) /*文件大小超过限制*/ { DRV_FILE_CLOSE(fp); fp = DRV_FILE_OPEN((VOS_CHAR*)pstLogReq->aucFileName, "wb+"); /*清空文件内容*/ } if(VOS_NULL_PTR == fp) /*如果文件打开失败说明建立文件也不成功*/ { return; } DRV_FILE_WRITE(pstLogReq->aucData, sizeof(VOS_CHAR), pstLogReq->ulLen, fp); DRV_FILE_CLOSE(fp); return; }
VOS_UINT32 NV_Printf(const VOS_CHAR *pcformat, ...) /*lint +e960 */ { VOS_CHAR acOutput[NV_LOG_MAX_LEN]; va_list argument; VOS_UINT32 ulRetLen; #if ((VOS_WIN32 == VOS_OS_VER)||(VOS_VXWORKS == VOS_OS_VER)||(VOS_RTOSCK == VOS_OS_VER)) FILE *fp; VOS_UINT32 ulFileSize; #endif /* 将格式化字符串和可变参数转换为字符串 */ va_start(argument, pcformat); ulRetLen = (VOS_UINT32)vsnprintf(acOutput, NV_LOG_MAX_LEN, pcformat, argument); va_end(argument); if ((NV_LOG_MAX_LEN < ulRetLen) || (0 == ulRetLen)) { return VOS_ERR; } #if (VOS_LINUX == VOS_OS_VER) printk("%s", acOutput); #elif (VOS_VXWORKS == VOS_OS_VER) logMsg("%s", acOutput); #elif (VOS_RTOSCK == VOS_OS_VER) SRE_Printf("%s", acOutput); #endif #if ((VOS_WIN32 == VOS_OS_VER)||(VOS_VXWORKS == VOS_OS_VER)||(VOS_RTOSCK == VOS_OS_VER)) fp = DRV_FILE_OPEN(g_acNvLogFilePath, "a"); if (VOS_NULL_PTR == fp) { return VOS_ERR; } DRV_FILE_LSEEK(fp, 0, NV_FILE_SEEK_END); ulFileSize = (VOS_UINT32)DRV_FILE_TELL(fp); /* If the log file is too large, we need empty it. */ if (ulFileSize > NV_LOG_FILE_MAX_SIZE) { DRV_FILE_CLOSE(fp); fp = DRV_FILE_OPEN(g_acNvLogFilePath, "w"); if (VOS_NULL_PTR == fp) { return VOS_ERR; } } DRV_FILE_WRITE(acOutput, ulRetLen, 1, fp); DRV_FILE_CLOSE(fp); #endif return VOS_OK; }