Browse Source

Search for .inc .pp .pas if an include file name has no extension

git-svn-id: trunk@43227 -
michael 5 years ago
parent
commit
a9340e727f
1 changed files with 39 additions and 10 deletions
  1. 39 10
      packages/fcl-passrc/src/pscanner.pp

+ 39 - 10
packages/fcl-passrc/src/pscanner.pp

@@ -2483,6 +2483,24 @@ function TFileResolver.FindIncludeFileName(const AName: string): String;
       end;
       end;
   end;
   end;
 
 
+  Function FindInPath(FN : String) : String;
+
+  var
+    I : integer;
+
+  begin
+    Result:='';
+    I:=0;
+    While (Result='') and (I<FIncludePaths.Count) do
+      begin
+      Result:=SearchLowUpCase(FIncludePaths[i]+FN);
+      Inc(I);
+      end;
+    // search in BaseDirectory
+    if (Result='') and (BaseDirectory<>'') then
+      Result:=SearchLowUpCase(BaseDirectory+FN);
+  end;
+
 var
 var
   i: Integer;
   i: Integer;
   FN : string;
   FN : string;
@@ -2493,23 +2511,34 @@ begin
   FN:=SetDirSeparators(AName);
   FN:=SetDirSeparators(AName);
   If FilenameIsAbsolute(FN) then
   If FilenameIsAbsolute(FN) then
     begin
     begin
-    // Maybe this should also do a SearchLowUpCase ?
-    if FileExists(FN) then
-      Result := FN;
+    Result := SearchLowUpCase(FN);
+    if (Result='') and (ExtractFileExt(FN)='') then
+      begin
+      Result:=SearchLowUpCase(FN+'.inc');
+      if Result='' then
+        begin
+        Result:=SearchLowUpCase(FN+'.pp');
+        if Result='' then
+          Result:=SearchLowUpCase(FN+'.pas');
+        end;
+      end;
     end
     end
   else
   else
     begin
     begin
     // file name is relative
     // file name is relative
     // search in include path
     // search in include path
-    I:=0;
-    While (Result='') and (I<FIncludePaths.Count) do
+    Result:=FindInPath(FN);
+    // No extension, try default extensions
+    if (Result='') and (ExtractFileExt(FN)='') then
       begin
       begin
-      Result:=SearchLowUpCase(FIncludePaths[i]+AName);
-      Inc(I);
+      Result:=FindInPath(FN+'.inc');
+      if Result='' then
+        begin
+        Result:=FindInPath(FN+'.pp');
+        if Result='' then
+          Result:=FindInPath(FN+'.pas');
+        end;
       end;
       end;
-    // search in BaseDirectory
-    if (Result='') and (BaseDirectory<>'') then
-      Result:=SearchLowUpCase(BaseDirectory+AName);
     end;
     end;
 end;
 end;