s-os_lib.adb (Normalize_Pathname): Take care of double-quotes in paths...
authorArnaud Charlet <charlet@gcc.gnu.org>
Fri, 1 Aug 2008 08:35:21 +0000 (10:35 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 1 Aug 2008 08:35:21 +0000 (10:35 +0200)
2008-08-01  Jerome Lambourg  <lambourg@adacore.com>

* s-os_lib.adb (Normalize_Pathname): Take care of double-quotes in
paths, which are authorized by Windows but can lead to errors when used
elsewhere.

From-SVN: r138484

gcc/ada/ChangeLog
gcc/ada/s-os_lib.adb

index 3eb081d..fa598cd 100644 (file)
@@ -1,3 +1,19 @@
+2008-08-01  Jose Ruiz  <ruiz@adacore.com>
+
+       * adaint.c (__gnat_tmp_name): Refine the generation of temporary names
+       for RTX. Adding a suffix that is incremented at each iteration.
+
+2008-08-01  Robert Dewar  <dewar@adacore.com>
+
+       * sem_ch6.adb (Analyze_Subprogram_Body): Remove special casing of
+       Raise_Exception
+
+2008-08-01  Jerome Lambourg  <lambourg@adacore.com>
+
+       * s-os_lib.adb (Normalize_Pathname): Take care of double-quotes in
+       paths, which are authorized by Windows but can lead to errors when used
+       elsewhere.
+
 2008-08-01  Ed Schonberg  <schonberg@adacore.com>
 
        * sem_ch12.ads (Need_Subprogram_Instance_Body): new function, to create
index 6df7fa4..532fca4 100755 (executable)
@@ -1921,6 +1921,24 @@ package body System.OS_Lib is
          end;
       end if;
 
+      --  On Windows, remove all double-quotes that are possibly part of the
+      --  path but can cause problems with other methods.
+
+      if On_Windows then
+         declare
+            Index : Natural := Path_Buffer'First;
+         begin
+            for Current in Path_Buffer'First .. End_Path loop
+               if Path_Buffer (Current) /= '"' then
+                  Path_Buffer (Index) := Path_Buffer (Current);
+                  Index := Index + 1;
+               end if;
+            end loop;
+
+            End_Path := Index - 1;
+         end;
+      end if;
+
       --  Start the conversions
 
       --  If this is not finished after Max_Iterations, give up and return an