s-fileio.adb (Open): When file open operation fails...

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
This commit is contained in:
Arnaud Charlet 2008-08-06 11:41:04 +02:00
parent 49f7fe608b
commit c6aecf3bee
2 changed files with 28 additions and 1 deletions

View 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,

View file

@ -33,10 +33,13 @@
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;