aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/g-socthi.ads
diff options
context:
space:
mode:
authorThomas Quinot <quinot@adacore.com>2005-11-15 14:50:37 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2005-11-15 14:50:37 +0100
commit3e1fd98f3dcc4c06007d1dfbe9fc913e0032a38c (patch)
treed1576a6497bfbada92fc3b0b451f8c360df4d37d /gcc/ada/g-socthi.ads
parentb4f32d07aa53d6831a12a7aabb1c74ee4e7ba269 (diff)
downloadgcc-3e1fd98f3dcc4c06007d1dfbe9fc913e0032a38c.zip
gcc-3e1fd98f3dcc4c06007d1dfbe9fc913e0032a38c.tar.gz
gcc-3e1fd98f3dcc4c06007d1dfbe9fc913e0032a38c.tar.bz2
g-soccon.ads: Minor reformatting.
2005-11-14 Thomas Quinot <quinot@adacore.com> * g-soccon.ads: Minor reformatting. Update comments. * gsocket.h: Include <sys/times.h> in the VxWorks case, in order to gain visibility on the declaration of struct timeval. * g-soccon-freebsd.ads, g-soccon-darwin.ads, g-soccon-tru64.ads, g-soccon-aix.ads, g-soccon-irix.ads, g-soccon-hpux.ads, g-soccon-solaris.ads, g-soccon-vms.ads, g-soccon-mingw.ads, g-soccon-vxworks.ads (SIZEOF_tv_sec, SIZEOF_tv_usec): New constants. * g-soccon-hpux-ia64.ads, g-soccon-linux-ppc.ads, g-soccon-solaris-64.ads, g-soccon-linux-64.ads, g-soccon-linux-x86.ads: New files. * g-socthi-mingw.adb: (Socket_Error_Message): Remove redundant use of GNAT.Sockets.Constants * g-socthi-vxworks.ads, g-socthi-vms.ads, g-socthi-mingw.ads (time_t, suseconds_t): New types constructed to match the tv_sec and tv_usec fields of C struct timeval. (Timeval): Construct structure in terms of the new types. (Host_Errno): New function (imported from socket.c), returns last hosts database error. * g-socthi-vxworks.adb: Add error handling circuitry. * g-socket.ads, g-socket.adb (To_Timeval): Reflect change of type for components of struct timeval. (Get_Host_By_Name, Get_Host_By_Address): Fix error reporting circuitry. (Check_Selector): In error conditions, clear internal socket sets to avoid a memory leak. (Get_Socket_Option, Set_Socket_Option): Support for Multicast_If, Send_Timeout, Receive_Timeout. * g-socthi.ads (time_t, suseconds_t): New types constructed to match the tv_sec and tv_usec fields of C struct timeval. (Timeval): Construct structure in terms of the new types. (Host_Errno): New function (imported from socket.c), returns last hosts database error. * socket.c (__gnat_get_h_errno): New function to retrieve h_errno, the hosts database last error code. * gen-soccon.c: Complete value expansion should not be performed on TARGET, as it has the form of a math expression, and some components may be platform-defined macros. For VxWorks, generate the OK and ERROR values. New constants giving the sizes of the components of C struct timeval. From-SVN: r106949
Diffstat (limited to 'gcc/ada/g-socthi.ads')
-rw-r--r--gcc/ada/g-socthi.ads23
1 files changed, 18 insertions, 5 deletions
diff --git a/gcc/ada/g-socthi.ads b/gcc/ada/g-socthi.ads
index 10a9a21..5d06d99 100644
--- a/gcc/ada/g-socthi.ads
+++ b/gcc/ada/g-socthi.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2005 Ada Core Technologies, Inc. --
+-- Copyright (C) 2001-2005, AdaCore --
-- --
-- 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- --
@@ -65,15 +65,28 @@ package GNAT.Sockets.Thin is
-- Returns the error message string for the error number Errno. If Errno is
-- not known it returns "Unknown system error".
+ function Host_Errno return Integer;
+ pragma Import (C, Host_Errno, "__gnat_get_h_errno");
+ -- Returns last host error number
+
subtype Fd_Set_Access is System.Address;
No_Fd_Set : constant Fd_Set_Access := System.Null_Address;
- type Timeval_Unit is new C.int;
- pragma Convention (C, Timeval_Unit);
+ type time_t is
+ range -2 ** (8 * Constants.SIZEOF_tv_sec - 1)
+ .. 2 ** (8 * Constants.SIZEOF_tv_sec - 1) - 1;
+ for time_t'Size use 8 * Constants.SIZEOF_tv_sec;
+ pragma Convention (C, time_t);
+
+ type suseconds_t is
+ range -2 ** (8 * Constants.SIZEOF_tv_usec - 1)
+ .. 2 ** (8 * Constants.SIZEOF_tv_usec - 1) - 1;
+ for suseconds_t'Size use 8 * Constants.SIZEOF_tv_usec;
+ pragma Convention (C, suseconds_t);
type Timeval is record
- Tv_Sec : Timeval_Unit;
- Tv_Usec : Timeval_Unit;
+ Tv_Sec : time_t;
+ Tv_Usec : suseconds_t;
end record;
pragma Convention (C, Timeval);