Commit f5e976a5 by Arnaud Charlet

[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
parent 658cea5b
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,
......
......@@ -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
......
......@@ -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 --
------------
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment