typedef VOID (WINAPI *FILEENUMPROC)(VOID *pParam, CHAR *pFilePath, CHAR *pFileName);
BOOL FolderFileEnum(FILEENUMPROC FileEnumProc, VOID *ProcParam, CHAR *pPath, CHAR *pFindFile = "*.*")
{
WIN32_FIND_DATAA FindData;
HANDLE hFind;
CHAR szFindDir[MAX_PATH*2];
CHAR szFulllFindFile[MAX_PATH*2];
BOOL bRetVal;
strcpy(szFindDir, pPath);
if(szFindDir[strlen(szFindDir)-1] == '//')
szFindDir[strlen(szFindDir)-1] = 0;
sprintf(szFulllFindFile, "%s//%s", szFindDir, pFindFile);
ZeroMemory(&FindData, sizeof(FindData));
hFind = FindFirstFileA(szFulllFindFile, &FindData);
if(hFind == INVALID_HANDLE_VALUE)
return FALSE;
for(bRetVal = TRUE;
bRetVal;
bRetVal = FindNextFileA(hFind, &FindData))
{
if(FindData.cFileName[0] == '.' &&
(FindData.cFileName[1] == 0 || (FindData.cFileName[1] == '.' && FindData.cFileName[2] == 0))
)
continue;
FileEnumProc(ProcParam, szFindDir, FindData.cFileName);
if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CHAR szNewFolder[MAX_PATH*2];
sprintf(szNewFolder, "%s//%s", szFindDir, FindData.cFileName);
FolderFileEnum(FileEnumProc, ProcParam, szNewFolder, pFindFile);
}
}
FindClose(hFind);
return TRUE;
}
class CHtmDirConvert
{
CHtmDirConvert()
{
AddFileExType(".htm");
AddFileExType(".html");
}
~CHtmDirConvert()
{
}
static VOID WINAPI FileEnumProc(VOID *pParam, CHAR *pPath, CHAR *pFile)
{
CHtmDirConvert *pThis;
CHAR szExName[MAX_PATH];
pThis = (CHtmDirConvert *)pParam;
_splitpath(pFile, NULL, NULL, NULL, szExName);
if(pThis->CheckExName(szExName) == FALSE)
return;
pThis->ReplaceOneFile(pPath, pFile);
}
BOOL ReplaceOneFile(CHAR *pPath, CHAR *pFile)
{
NLog::LogString("%s//%s", pPath, pFile);
return FALSE;
}
BOOL CheckExName(CHAR *pFileExName)
{
if(m_FileExList.Find(pFileExName) == NULL)
return FALSE;
return TRUE;
}
BOOL ClearFileExType(BOOL bKeepDefault = TRUE)
{
m_FileExList.RemoveAll();
AddFileExType(".htm");
AddFileExType(".html");
}
BOOL AddFileExType(CHAR *pFileEx)
{
m_FileExList.AddTail(pFileEx);
return FALSE;
}
BOOL Convert(CHAR *pHttpPath, CHAR *pFileRoot)
{
m_cStrHttpPath = pHttpPath;
m_cStrFileRoot = pFileRoot;
FolderFileEnum(FileEnumProc, this, pFileRoot);
return TRUE;
}
CString m_cStrHttpPath;
CString m_cStrFileRoot;
CStringList m_FileExList;
};