Browse Source

* fix executable not found exception

git-svn-id: trunk@9239 -
peter 18 years ago
parent
commit
e07b0ee147
1 changed files with 10 additions and 8 deletions
  1. 10 8
      packages/fcl-process/src/unix/process.inc

+ 10 - 8
packages/fcl-process/src/unix/process.inc

@@ -104,9 +104,9 @@ Procedure CommandToList(S : String; List : TStrings);
           end;
           end;
        inc(wend);
        inc(wend);
        end;
        end;
-       
+
      Result:=Copy(S,WStart,WEnd-WStart);
      Result:=Copy(S,WStart,WEnd-WStart);
-     
+
      if  (Length(Result) > 0)
      if  (Length(Result) > 0)
      and (Result[1] = Result[Length(Result)]) // if 1st char = last char and..
      and (Result[1] = Result[Length(Result)]) // if 1st char = last char and..
      and (Result[1] in Literals) then // it's one of the literals, then
      and (Result[1] in Literals) then // it's one of the literals, then
@@ -248,6 +248,7 @@ Var
   FEnv     : PPChar;
   FEnv     : PPChar;
   Argv     : PPChar;
   Argv     : PPChar;
   fd       : Integer;
   fd       : Integer;
+  FoundName,
   PName    : String;
   PName    : String;
 
 
 begin
 begin
@@ -270,14 +271,15 @@ begin
           If (PName='') then
           If (PName='') then
             PName:=CommandLine;
             PName:=CommandLine;
           end;
           end;
-          
-        if not FileExists(PName) then begin
-          PName := FileSearch(Pname,fpgetenv('PATH'));
 
 
-          if Length(PName) = 0 then
+        if not FileExists(PName) then begin
+          FoundName := FileSearch(Pname,fpgetenv('PATH'));
+          if FoundName<>'' then
+            PName:=FoundName
+          else
             raise EProcess.CreateFmt(SErrNoSuchProgram,[PName]);
             raise EProcess.CreateFmt(SErrNoSuchProgram,[PName]);
         end;
         end;
-      
+
         Pid:=fpfork;
         Pid:=fpfork;
         if Pid<0 then
         if Pid<0 then
           Raise EProcess.Create('Failed to Fork process');
           Raise EProcess.Create('Failed to Fork process');
@@ -302,7 +304,7 @@ begin
             fpdup2(HO[peWrite],1);
             fpdup2(HO[peWrite],1);
             if (poStdErrToOutPut in Options) then
             if (poStdErrToOutPut in Options) then
               fpdup2(HO[peWrite],2)
               fpdup2(HO[peWrite],2)
-            else 
+            else
               begin
               begin
               fpclose(HE[peRead]);
               fpclose(HE[peRead]);
               fpdup2(HE[peWrite],2);
               fpdup2(HE[peWrite],2);