Browse Source

pastojs: fixed filecache.directoryexists

git-svn-id: trunk@43149 -
Mattias Gaertner 5 years ago
parent
commit
23c974457a
2 changed files with 13 additions and 8 deletions
  1. 1 1
      packages/pastojs/src/pas2jscompiler.pp
  2. 12 7
      packages/pastojs/src/pas2jsfilecache.pp

+ 1 - 1
packages/pastojs/src/pas2jscompiler.pp

@@ -4299,7 +4299,7 @@ begin
     RaiseInternalError(20170504161340,'internal error: TPas2jsCompiler.Run FileCount>0');
 
   try
-    // set working directory, need by all relative filenames
+    // set working directory, needed by all relative filenames
     SetWorkingDir(aWorkingDir);
 
     CompilerExe:=aCompilerExe; // maybe needed to find the default config

+ 12 - 7
packages/pastojs/src/pas2jsfilecache.pp

@@ -905,14 +905,18 @@ end;
 
 function TPas2jsCachedDirectories.DirectoryExists(Filename: string): boolean;
 var
-  Info: TFileInfo;
+  Dir: TPas2jsCachedDirectory;
 begin
-  Info.Filename:=Filename;
-  if not GetFileInfo(Info) then exit(false);
-  if Info.Dir<>nil then
-    Result:=(Info.Dir.FileAttr(Info.ShortFilename) and faDirectory)>0
+  Dir:=GetDirectory(Filename,true,false);
+  if Dir<>nil then
+    Result:=Dir.Count>0
   else
-    Result:={$IFDEF pas2js}NodeJSFS{$ELSE}SysUtils{$ENDIF}.DirectoryExists(Info.Filename);
+    begin
+    Filename:=ChompPathDelim(ResolveDots(Filename));
+    if not FilenameIsAbsolute(Filename) then
+      Filename:=WorkingDirectory+Filename;
+    Result:={$IFDEF pas2js}NodeJSFS{$ELSE}SysUtils{$ENDIF}.DirectoryExists(Filename);
+    end;
 end;
 
 function TPas2jsCachedDirectories.FileExists(Filename: string): boolean;
@@ -1487,8 +1491,9 @@ procedure TPas2jsFilesCache.WriteFoldersAndSearchPaths;
   procedure WriteFolder(aName, Folder: string);
   begin
     if Folder='' then exit;
+    Folder:=ChompPathDelim(Folder);
     Log.LogMsgIgnoreFilter(nUsingPath,[aName,Folder]);
-    if not DirectoryExists(ChompPathDelim(Folder)) then
+    if not DirectoryExists(Folder) then
       Log.LogMsgIgnoreFilter(nFolderNotFound,[aName,QuoteStr(Folder)]);
   end;