/*****************************************************************************
函 数 名  : USIMM_OpenDir
功能描述  : 打开文件夹
输入参数  : pcDirName   --- 文件夹路径
输出参数  : 无
返 回 值  : SI_UINT32 函数执行结果
调用函数  :
被调函数  : 外部接口

修改历史      :
1.日    期  : 2013年08月28日
  作    者  : zhuli
  修改内容  : Create
*****************************************************************************/
VOS_INT32 USIMM_OpenDir(VOS_CHAR *pcDirName)
{
    DRV_DIR_STRU           *pstTmpDir;

    /* coverity[alloc_fn] */
    pstTmpDir = DRV_FILE_OPENDIR(pcDirName);

    if(VOS_NULL_PTR == pstTmpDir)
    {
        USIMM_WARNING_LOG("Make Dir fail!");
        return VOS_ERR;
    }
    /* coverity[leaked_storage] */
    return VOS_OK;
}
/*****************************************************************************
Function   : NV_DeleteFileBySuffix
Description: Delete files by file's suffix name.
Input      : pcDirName - the file's directory.
Return     : VOID
Other      :
*****************************************************************************/
VOS_VOID NV_DeleteFilesBySuffix(VOS_CHAR *pcDirPath, VOS_CHAR *pcSuffixName)
{
    DRV_DIR_STRU                       *pstTmpDir;
    DRV_DIRENT_STRU                    *pstTmpDirent;
    VOS_UINT32                          ulNameLen;
    VOS_CHAR                            acSuffixSrc[NV_XML_SUFFIX_STR_SIZE];
    VOS_UINT32                          i;
    VOS_UINT32                          ulLoopNum = 0;
    VOS_UINT32                          ulFileNum = 0;

    pstTmpDir = DRV_FILE_OPENDIR(pcDirPath);

    if (VOS_NULL_PTR == pstTmpDir)
    {
        NV_Printf("NV_DeleteFilesBySuffix, DRV_FILE_OPENDIR %s fail.\r\n", pcDirPath);

        return;
    }

    do
    {
        pstTmpDirent = DRV_FILE_READDIR(pstTmpDir);

        /* readdir's return value is zero, so the loop should be over. */
        if (VOS_NULL_PTR != pstTmpDirent)
        {
            /* ulNumLen includes the ending of string. */
            ulNameLen = VOS_StrLen(pstTmpDirent->d_name) + 1;

            if (NV_XML_SUFFIX_STR_SIZE < ulNameLen)
            {
                for (i = 0; i < NV_XML_SUFFIX_STR_SIZE; i++)
                {
                    acSuffixSrc[i] = (VOS_CHAR)tolower(pstTmpDirent->d_name[ulNameLen - (NV_XML_SUFFIX_STR_SIZE - i)]);
                }

                if (VOS_OK == VOS_StrCmp(acSuffixSrc, pcSuffixName))
                {
                    NV_File_Remove(pcDirPath, pstTmpDirent->d_name);
                    ulFileNum++;
                }
            }
        }

        /* Avoid dead loop.*/
        ulLoopNum++;
    }while ((VOS_NULL_PTR != pstTmpDirent) && (ulLoopNum < NV_XML_FILE_MAX_NUM));

    if (VOS_OK != DRV_FILE_CLOSEDIR(pstTmpDir))
    {
        NV_Printf("NV_DeleteFilesBySuffix, DRV_FILE_CLOSEDIR fail.\r\n");
    }

    if (NV_XML_FILE_MAX_NUM == ulLoopNum)
    {
        NV_Printf("NV_DeleteFilesBySuffix, File system crashed.\r\n");
    }

    /* Record the number of deleted files. */
    if (0 != ulFileNum)
    {
        NV_Printf("NV_DeleteFilesBySuffix, the num of deleted files: %d.\r\n", ulFileNum);
    }

    return;
}