*
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
#include "IFSContentProvider.h"
|
||||
#include "../../log/CLog.h"
|
||||
namespace LifeCore
|
||||
{
|
||||
static const String pakPathSplitter(_text("\\"));
|
||||
|
||||
IFSContentProvider::IFSContentProvider(const String& file)
|
||||
{
|
||||
IFSFolder* folder = new IFSFolder();
|
||||
g_rootFolder = file;
|
||||
folder->Provider = this;
|
||||
folder->Name = GetDirectoryName(file);
|
||||
|
||||
folder->EntryName = file;
|
||||
|
||||
fileSystem = new IFileSystem(folder);
|
||||
|
||||
IFolder* root = fileSystem->GetRootFolder();
|
||||
|
||||
//printf("%s", file.c_str());
|
||||
ScanDir(file, root);
|
||||
}
|
||||
IFSContentProvider::~IFSContentProvider()
|
||||
{
|
||||
if(fileSystem)
|
||||
delete fileSystem;
|
||||
}
|
||||
void IFSContentProvider::ScanDir( String path, IFolder* directory)
|
||||
{
|
||||
WIN32_FIND_DATA FindData;
|
||||
String modified_address = path;
|
||||
DWORD tmp = 0;
|
||||
modified_address += _text("*");
|
||||
HANDLE Handle = FindFirstFile(modified_address.c_str() , &FindData);
|
||||
while( FindNextFile(Handle, &FindData) )
|
||||
{
|
||||
String file_name = FindData.cFileName;
|
||||
if( FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
|
||||
{
|
||||
if(STRCMP(FindData.cFileName, _text("..")))
|
||||
{
|
||||
String new_path = path;
|
||||
new_path += file_name;
|
||||
new_path += _text("\\");
|
||||
|
||||
IFSFolder* folder = new IFSFolder();
|
||||
folder->Provider = this;
|
||||
folder->Name = file_name;
|
||||
folder->EntryName = new_path;
|
||||
directory->AddFolder(folder);
|
||||
ScanDir( new_path, folder );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
String filepath = path + file_name;
|
||||
HANDLE hf = CreateFile(filepath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
IFSFile* file = new IFSFile();
|
||||
file->FileName = file_name;
|
||||
file->Provider = this;
|
||||
file->Size = GetFileSize(hf,&tmp);
|
||||
file->EntryName = filepath;
|
||||
directory->AddFile(file);
|
||||
CloseHandle(hf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user