codetools: fixed FindDiskFilename to recursively check all directories

git-svn-id: trunk@41553 -
This commit is contained in:
mattias 2013-06-05 19:30:33 +00:00
parent 4ce8683fd7
commit db4e6e9744
3 changed files with 12 additions and 3 deletions

View File

@ -1640,6 +1640,7 @@ var
begin
Result:=ChompPathDelim(TrimFilename(Filename));
if Result='' then exit;
//debugln(['TCTDirectoryCachePool.FindDiskFilename Filename=',Result]);
{$IF defined(NotLiteralFilenames) or defined(CaseInsensitiveFilenames)}
{$ELSE}
if (not SearchCaseInsensitive) then exit;
@ -1647,9 +1648,14 @@ begin
ADirectory:=ExtractFilePath(Result);
if ADirectory=Result then
exit; // e.g. / under Linux
if SearchCaseInsensitive then
// search recursively all directory parts
ADirectory:=AppendPathDelim(FindDiskFilename(ADirectory,true));
Cache:=GetCache(ADirectory,true,false);
//debugln(['TCTDirectoryCachePool.FindDiskFilename Dir=',Cache.Directory]);
Result:=ExtractFileName(Result);
DiskShortFilename:=Cache.FindFile(Result,ctsfcAllCase);
//debugln(['TCTDirectoryCachePool.FindDiskFilename DiskShortFilename=',DiskShortFilename]);
if DiskShortFilename<>'' then Result:=DiskShortFilename;
Result:=Cache.Directory+Result;
end;

View File

@ -19,7 +19,7 @@ uses
{$ENDIF};
{$I BROKENincfiles.inc}// must be fixed to brokenincfiles.inc
{$I ../ScanExamples/BROKENincfiles.inc}// must be fixed to ../scanexamples/brokenincfiles.inc
{$I ../ScanInstances/BROKENincfile2.inc}// must be fixed to ../scaninstances/brokenincfiles.inc
implementation

View File

@ -6447,8 +6447,11 @@ var
AFilePath:=ExtractFilePath(Result);
if AFilePath<>'' then begin
// search relative to unit
//debugln(['SearchIncludeFilename BaseDir+Result=',BaseDir+Result]);
CurFilename:=DirectoryCache.Pool.FindDiskFilename(BaseDir+Result,true);
Result:=copy(CurFilename,length(BaseDir)+1,length(CurFilename));
//debugln(['SearchIncludeFilename DiskFilename=',CurFilename]);
Result:=CreateRelativePath(CurFilename,BaseDir);
//debugln(['SearchIncludeFilename RelativeDiskFilename=',Result]);
if FileExistsCached(CurFilename) then
Add(FilenameSrcPos,CurFilename,true)
else
@ -6504,7 +6507,7 @@ var
end;
AFilename:=SearchIncludeFilename(StartPos,AFilename);
if OldFilename<>AFilename then begin
DebugLn('FixFilename replacing in '+Code.Filename+' include directive "',OldFilename,'" with "',AFilename,'"');
DebugLn('TStandardCodeTool.FixIncludeFilenames.FixFilename replacing in '+Code.Filename+' include directive "',OldFilename,'" with "',AFilename,'"');
SourceChangeCache.ReplaceEx(gtNone,gtNone,0,0,Code,StartPos,EndPos,AFilename);
end;
end;