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 4bf72c9c6f1ede75200266d0a3d21b1d1af9a652..468a3ef665f3202a73b02eacd3d8ed3a25530300 100644 (file)
@@ -1,3 +1,22 @@
+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,
index 41419b5f7932e8f14ee8f744c9f602a3ff06696f..79b718eadceb5c524b16cf0f1a3ddee2797786af 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;