]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Ada] Invalid GPR_PROJECT_PATH_FILE confuses gnatls
authorJustin Squirek <squirek@adacore.com>
Fri, 29 Oct 2021 19:42:28 +0000 (15:42 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 9 Nov 2021 09:44:50 +0000 (09:44 +0000)
gcc/ada/

* gnatls.adb (Initialize_Default_Project_Path): Remove early
abort on invalid path.

gcc/ada/gnatls.adb

index 68990e19605bd4d646d6b7123adc6cec3438f5de..b20cda4fdd68dbc6f69c04d46be5f6055d574f53 100644 (file)
@@ -1339,61 +1339,57 @@ procedure Gnatls is
          if Gpr_Prj_Path_File.all /= "" then
             FD := Open_Read (Gpr_Prj_Path_File.all, GNAT.OS_Lib.Text);
 
-            if FD = Invalid_FD then
-               Osint.Fail
-                 ("warning: could not read project path file """
-                  & Gpr_Prj_Path_File.all & """");
-            end if;
+            if FD /= Invalid_FD then
+               Len := Integer (File_Length (FD));
 
-            Len := Integer (File_Length (FD));
+               declare
+                  Buffer : String (1 .. Len);
+                  Index  : Positive := 1;
+                  Last   : Positive;
+                  Tmp    : String_Access;
 
-            declare
-               Buffer : String (1 .. Len);
-               Index  : Positive := 1;
-               Last   : Positive;
-               Tmp    : String_Access;
+               begin
+                  --  Read the file
 
-            begin
-               --  Read the file
+                  Len := Read (FD, Buffer (1)'Address, Len);
+                  Close (FD);
 
-               Len := Read (FD, Buffer (1)'Address, Len);
-               Close (FD);
+                  --  Scan the file line by line
 
-               --  Scan the file line by line
+                  while Index < Buffer'Last loop
 
-               while Index < Buffer'Last loop
+                     --  Find the end of line
 
-                  --  Find the end of line
+                     Last := Index;
+                     while Last <= Buffer'Last
+                       and then Buffer (Last) /= ASCII.LF
+                       and then Buffer (Last) /= ASCII.CR
+                     loop
+                        Last := Last + 1;
+                     end loop;
 
-                  Last := Index;
-                  while Last <= Buffer'Last
-                    and then Buffer (Last) /= ASCII.LF
-                    and then Buffer (Last) /= ASCII.CR
-                  loop
-                     Last := Last + 1;
-                  end loop;
-
-                  --  Ignore empty lines
+                     --  Ignore empty lines
 
-                  if Last > Index then
-                     Tmp := Self;
-                     Self :=
-                       new String'
-                         (Tmp.all & Path_Separator &
-                          Buffer (Index .. Last - 1));
-                     Free (Tmp);
-                  end if;
+                     if Last > Index then
+                        Tmp := Self;
+                        Self :=
+                          new String'
+                            (Tmp.all & Path_Separator &
+                             Buffer (Index .. Last - 1));
+                        Free (Tmp);
+                     end if;
 
-                  --  Find the beginning of the next line
+                     --  Find the beginning of the next line
 
-                  Index := Last;
-                  while Buffer (Index) = ASCII.CR or else
-                        Buffer (Index) = ASCII.LF
-                  loop
-                     Index := Index + 1;
+                     Index := Last;
+                     while Buffer (Index) = ASCII.CR or else
+                           Buffer (Index) = ASCII.LF
+                     loop
+                        Index := Index + 1;
+                     end loop;
                   end loop;
-               end loop;
-            end;
+               end;
+            end if;
 
          end if;