s-fileio.adb (Open): When file open operation fails...
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 6 Aug 2008 09:41:04 +0000 (11:41 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 6 Aug 2008 09:41:04 +0000 (11:41 +0200)
2008-08-06  Thomas Quinot  <quinot@adacore.com>

* s-fileio.adb (Open): When file open operation fails, raise Name_Error
only when the operating system reports a non-existing file or directory
(ENOENT), otherwise raise Name_Error.

From-SVN: r138786

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

index 4bf72c9..468a3ef 100644 (file)
@@ -1,5 +1,24 @@
 2008-08-06  Thomas Quinot  <quinot@adacore.com>
 
+       * sem_res.adb: Minor reformatting
+
+       * s-fileio.adb (Open): When file open operation fails, raise Name_Error
+       only when the operating system reports a non-existing file or directory
+       (ENOENT), otherwise raise Name_Error.
+
+       * exp_ch11.adb: Minor reformatting
+
+2008-08-06  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Access_Subprogram_Declaration): If the return type is
+       incomplete, add the access_to_subprogram type to the list of private
+       dependents only if the incomplete type will be completed in the current
+       scope.
+       (Build_Discriminant_Constraints): If the type of the discriminant is
+       access_to_variable, reject a constraint that is access_to_constant.
+
+2008-08-06  Thomas Quinot  <quinot@adacore.com>
+
        * g-socket-dummy.adb, g-socket-dummy.ads, g-sothco-dummy.adb,
        g-sothco-dummy.ads, g-socthi-dummy.adb, g-socthi-dummy.ads,
        g-sttsne-dummy.ads: New files.
index 41419b5..79b718e 100644 (file)
 
 with Ada.Finalization;            use Ada.Finalization;
 with Ada.IO_Exceptions;           use Ada.IO_Exceptions;
+with Interfaces.C;
 with Interfaces.C_Streams;        use Interfaces.C_Streams;
 
 with System.CRTL;
 with System.Case_Util;            use System.Case_Util;
+with System.OS_Constants;
+with System.OS_Lib;
 with System.Soft_Links;
 
 with Ada.Unchecked_Deallocation;
@@ -47,6 +50,7 @@ package body System.File_IO is
 
    package SSL renames System.Soft_Links;
 
+   use type Interfaces.C.int;
    use type System.CRTL.size_t;
 
    ----------------------
@@ -984,7 +988,11 @@ package body System.File_IO is
             Stream := fopen (Namestr'Address, Fopstr'Address, Encoding);
 
             if Stream = NULL_Stream then
-               if not Tempfile and then file_exists (Namestr'Address) = 0 then
+               --  Raise Name_Error if trying to open a non-existent file.
+               --  Otherwise raise Use_Error. Should we raise Device_Error for
+               --  ENOSPC???
+
+               if System.OS_Lib.Errno = System.OS_Constants.ENOENT then
                   raise Name_Error;
                else
                   raise Use_Error;