void TestFileSystemInit(void) { CFileSystem cSystem; char* szFullName; CFileUtil cFileUtil; CChars szWorkingDirectory; CChars szTemp; CTextFile cTextFile; szWorkingDirectory.Init("Finder"); cFileUtil.FullPath(&szWorkingDirectory); cSystem.Init("Finder"); szFullName = cSystem.GetFileName("Lord/1.rar"); szTemp.Init(szFullName); szTemp.RemoveFromStart(szWorkingDirectory.Length()+1); szTemp.Replace(FILE_SEPARATOR[0], '/'); AssertString("Lord/1.rar", szTemp.Text()); szTemp.Kill(); szFullName = cSystem.GetFileName("File.txt"); cTextFile.Init(); cTextFile.Read(szFullName); AssertString("Hello World.", cTextFile.Text()); cTextFile.Kill(); cSystem.Kill(); }
////////////////////////////////////////////////////////////////////////// // // // // ////////////////////////////////////////////////////////////////////////// BOOL CFiles::AddPackFile(CFileNodeSystemFile* pcFileNodeSystemFile) { CPackFileOffset* pcPackFiles; char* szFullName; CChars szPackFileOffset; CChars* pszFullDirectory; int iLength; BOOL bResult; int iRank; pszFullDirectory = mcFileSystem.GetFullDirectoryName(); iLength = mszPackFilesExtension.Length()+1; pcPackFiles = mcPackFilesArray.Add(); new(pcPackFiles) CPackFileOffset(); szFullName = pcFileNodeSystemFile->GetFullName(); szPackFileOffset.Init(szFullName); szPackFileOffset.RemoveFromStart(pszFullDirectory->Length()+1); szPackFileOffset.RemoveFromEnd(iLength); szPackFileOffset.Replace('\\', '/'); iRank = szPackFileOffset.Count('/'); bResult = pcPackFiles->Init(szPackFileOffset.Text(), szFullName, iRank); szPackFileOffset.Kill(); return bResult; }
void CImageCelsSource::AddDiskFileSources(char* szPathName, char* szFileNameContains, char* szImageName, CImageCelSource* pcCelSource) { CFileUtil cFileUtil; CArrayString cFileNames; int i; CChars* pszName; CImageSourceDiskFile* pcDiskFile; CChars szNiceName; int iIndex; int iLen; if (!szFileNameContains) { return; } iLen = (int)strlen(szFileNameContains); if (iLen == 0) { return; } cFileNames.Init(32); cFileUtil.FindFilesWithNameContaining(szPathName, szFileNameContains, &cFileNames, FALSE); for (i = 0; i < cFileNames.NumElements(); i++) { pszName = cFileNames.Get(i); pcDiskFile = UMalloc(CImageSourceDiskFile); if (szImageName) { szNiceName.Init(*pszName); cFileUtil.RemovePath(&szNiceName); cFileUtil.RemoveExtension(&szNiceName); iIndex = szNiceName.Find(0, szFileNameContains); iIndex += iLen; szNiceName.RemoveFromStart(iIndex); szNiceName.Insert(0, szImageName); pcDiskFile->Init(pszName->Text(), szNiceName.Text()); szNiceName.Kill(); } else { pcDiskFile->Init(pszName->Text()); } AddSource(pcDiskFile, pcCelSource); } cFileNames.Kill(); }
////////////////////////////////////////////////////////////////////////// // // // // ////////////////////////////////////////////////////////////////////////// void CPreprocessor::FindBestInclude(CExternalString* pcInclude, BOOL bSystemFile, CHeaderFile** ppcCFile, CHeaderNameMap** ppcHeaderNameMap) { CChars szInclude; CHeaderFile* pcBestFile; CHeaderNameMap* pcBestHeaderNameMap; int iMatch; int iBestMatch; int i; CHeaderNameMap* pcHeaderNameMap; CHeaderFile** ppcHeaderFile; CHeaderFile* pcHeaderFile; CHeaderNameMapDirectory* pcCurrentDirectory; CChars szPath; szInclude.Init(pcInclude->msz, 0, pcInclude->miLen); szInclude.Replace('\\', '/'); iBestMatch = 0; pcBestFile = NULL; pcBestHeaderNameMap = NULL; for (i = 0; i < mcHeaderNames.NumElements(); i++) { pcHeaderNameMap = *mcHeaderNames.Get(i); ppcHeaderFile = pcHeaderNameMap->mcFileNames.Get(szInclude.Text()); if (ppcHeaderFile) { pcHeaderFile = *ppcHeaderFile; iMatch = 2; if (pcHeaderFile->IsSystemFile() && bSystemFile) { iMatch += 2; } if (iMatch > iBestMatch) { iBestMatch = iMatch; pcBestFile = pcHeaderFile; pcBestHeaderNameMap = pcHeaderNameMap; } } } pcCurrentDirectory = mcHeadersStack.Tail(); if (pcCurrentDirectory) { for (i = 0; i < mcHeaderNames.NumElements(); i++) { pcHeaderNameMap = *mcHeaderNames.Get(i); if (pcHeaderNameMap == pcCurrentDirectory->mpcHeaderNameMap) { if (pcCurrentDirectory->mszBaseDirectoryName.Length() > pcHeaderNameMap->mszBaseDirectory.Length()) { szPath.Init(pcCurrentDirectory->mszBaseDirectoryName); szPath.RemoveFromStart(pcHeaderNameMap->mszBaseDirectory.Length()+1); szPath.Append('/'); szPath.Append(szInclude); ppcHeaderFile = pcHeaderNameMap->mcFileNames.Get(szPath.Text()); if (ppcHeaderFile) { pcHeaderFile = *ppcHeaderFile; iMatch = 2; if (pcHeaderFile->IsSystemFile() && bSystemFile) { iMatch += 2; } if (iMatch > iBestMatch) { iBestMatch = iMatch; pcBestFile = pcHeaderFile; pcBestHeaderNameMap = pcHeaderNameMap; } } szPath.Kill(); } } } } szInclude.Kill(); *ppcCFile = pcBestFile; *ppcHeaderNameMap = pcBestHeaderNameMap; }