[multiple changes]

2009-09-18  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Is_Open): New function indicating whether a
	Selector_Type object is open.

2009-09-18  Vincent Celier  <celier@adacore.com>

	* osint-c.adb (Create_Output_Library_Info): Make sure that the ALI file
	is deleted before creating it.

2009-09-18  Robert Dewar  <dewar@adacore.com>

	* bindgen.adb: Minor reformatting

From-SVN: r151842
This commit is contained in:
Arnaud Charlet 2009-09-18 15:50:26 +02:00
parent 658cea5b3e
commit f5e976a5b5
4 changed files with 51 additions and 24 deletions

View file

@ -1,3 +1,17 @@
2009-09-18 Thomas Quinot <quinot@adacore.com>
* g-socket.adb (Is_Open): New function indicating whether a
Selector_Type object is open.
2009-09-18 Vincent Celier <celier@adacore.com>
* osint-c.adb (Create_Output_Library_Info): Make sure that the ALI file
is deleted before creating it.
2009-09-18 Robert Dewar <dewar@adacore.com>
* bindgen.adb: Minor reformatting
2009-09-18 Arnaud Charlet <charlet@adacore.com>
* s-taprop-tru64.adb, s-taprop-linux.adb, s-taprop-solaris.adb,

View file

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -198,7 +198,6 @@ package body Bindgen is
-- Zero_Cost_Exceptions is set to one if zero cost exceptions are used for
-- this partition, and to zero if longjmp/setjmp exceptions are used.
-- the use of zero
-- Detect_Blocking indicates whether pragma Detect_Blocking is active or
-- not. A value of zero indicates that the pragma is not present, while a

View file

@ -265,6 +265,10 @@ package body GNAT.Sockets is
-- fd_set component is actually cleared. Note that the case where it is
-- not can occur for an uninitialized Socket_Set_Type object.
function Is_Open (S : Selector_Type) return Boolean;
-- Return True for an "open" Selector_Type object, i.e. one for which
-- Create_Selector has been called and Close_Selector has not been called.
---------
-- "+" --
---------
@ -282,9 +286,7 @@ package body GNAT.Sockets is
Res : C.int;
begin
if Selector.R_Sig_Socket = No_Socket
or else Selector.W_Sig_Socket = No_Socket
then
if not Is_Open (Selector) then
raise Program_Error with "closed selector";
end if;
@ -336,11 +338,7 @@ package body GNAT.Sockets is
Status : out Selector_Status)
is
begin
if Selector /= null
and then (Selector.R_Sig_Socket = No_Socket
or else
Selector.W_Sig_Socket = No_Socket)
then
if Selector /= null and then not Is_Open (Selector.all) then
raise Program_Error with "closed selector";
end if;
@ -492,9 +490,7 @@ package body GNAT.Sockets is
TPtr : Timeval_Access;
begin
if Selector.R_Sig_Socket = No_Socket
or else Selector.W_Sig_Socket = No_Socket
then
if not Is_Open (Selector) then
raise Program_Error with "closed selector";
end if;
@ -583,9 +579,10 @@ package body GNAT.Sockets is
procedure Close_Selector (Selector : in out Selector_Type) is
begin
if Selector.R_Sig_Socket = No_Socket
or else Selector.W_Sig_Socket = No_Socket
then
if not Is_Open (Selector) then
-- Selector already in closed state: nothing to do
return;
end if;
@ -662,10 +659,7 @@ package body GNAT.Sockets is
-- Used to set Socket to non-blocking I/O
begin
if Selector /= null and then
(Selector.R_Sig_Socket = No_Socket
or else Selector.W_Sig_Socket = No_Socket)
then
if Selector /= null and then not Is_Open (Selector.all) then
raise Program_Error with "closed selector";
end if;
@ -760,9 +754,9 @@ package body GNAT.Sockets is
Res : C.int;
begin
if Selector.R_Sig_Socket /= No_Socket
or else Selector.W_Sig_Socket /= No_Socket
then
if Is_Open (Selector) then
-- Raise exception to prevent socket descriptor leak
raise Program_Error with "selector already open";
end if;
@ -1392,6 +1386,22 @@ package body GNAT.Sockets is
return True;
end Is_IP_Address;
-------------
-- Is_Open --
-------------
function Is_Open (S : Selector_Type) return Boolean is
begin
-- Either both controlling socket descriptors are valid (case of an
-- open selector) or neither (case of a closed selector).
pragma Assert ((S.R_Sig_Socket /= No_Socket)
=
(S.W_Sig_Socket /= No_Socket));
return S.R_Sig_Socket /= No_Socket;
end Is_Open;
------------
-- Is_Set --
------------

View file

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -202,8 +202,12 @@ package body Osint.C is
--------------------------------
procedure Create_Output_Library_Info is
Dummy : Boolean;
pragma Unreferenced (Dummy);
begin
Set_Library_Info_Name;
Delete_File (Name_Buffer (1 .. Name_Len), Dummy);
Create_File_And_Check (Output_FD, Text);
end Create_Output_Library_Info;