s-os_lib.ads, [...] (GM_Time_Of): New routine to create an OS_Time from time parts.

2014-07-18  Pascal Obry  <obry@adacore.com>

	* s-os_lib.ads, s-os_lib.adb (GM_Time_Of): New routine to create an
	OS_Time from time parts.
	* adaint.h, adaint.c (__gnat_to_os_time): New routine.

From-SVN: r212788
This commit is contained in:
Pascal Obry 2014-07-18 09:31:36 +00:00 committed by Arnaud Charlet
parent 6907542db4
commit c3d01e19a3
5 changed files with 60 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2014-07-18 Pascal Obry <obry@adacore.com>
* s-os_lib.ads, s-os_lib.adb (GM_Time_Of): New routine to create an
OS_Time from time parts.
* adaint.h, adaint.c (__gnat_to_os_time): New routine.
2014-07-18 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Container_Indexing): Refine previous patch for

View File

@ -503,6 +503,25 @@ __gnat_to_gm_time (OS_Time *p_time, int *p_year, int *p_month, int *p_day,
*p_year = *p_month = *p_day = *p_hours = *p_mins = *p_secs = 0;
}
void
__gnat_to_os_time (OS_Time *p_time, int year, int month, int day,
int hours, int mins, int secs)
{
struct tm v;
v.tm_year = year;
v.tm_mon = month;
v.tm_mday = day;
v.tm_hour = hours;
v.tm_min = mins;
v.tm_sec = secs;
v.tm_isdst = 0;
/* returns -1 of failing, this is s-os_lib Invalid_Time */
*p_time = (OS_Time) mktime (&v);
}
/* Place the contents of the symbolic link named PATH in the buffer BUF,
which has size BUFSIZ. If PATH is a symbolic link, then return the number
of characters of its content in BUF. Otherwise, return -1.

View File

@ -107,6 +107,8 @@ extern void __gnat_current_time_string (char *);
extern void __gnat_to_gm_time (OS_Time *, int *, int *,
int *, int *,
int *, int *);
extern void __gnat_to_os_time (OS_Time *, int, int, int,
int, int, int);
extern int __gnat_get_maximum_file_name_length (void);
extern int __gnat_get_switches_case_sensitive (void);
extern int __gnat_get_file_names_case_sensitive (void);

View File

@ -1308,6 +1308,28 @@ package body System.OS_Lib is
Second := S;
end GM_Split;
----------------
-- GM_Time_Of --
----------------
function GM_Time_Of
(Year : Year_Type;
Month : Month_Type;
Day : Day_Type;
Hour : Hour_Type;
Minute : Minute_Type;
Second : Second_Type) return OS_Time
is
procedure To_OS_Time
(P_Time_T : Address; Year, Month, Day, Hours, Mins, Secs : Integer);
pragma Import (C, To_OS_Time, "__gnat_to_os_time");
Result : OS_Time;
begin
To_OS_Time
(Result'Address, Year - 1900, Month - 1, Day, Hour, Minute, Second);
return Result;
end GM_Time_Of;
-------------
-- GM_Year --
-------------

View File

@ -152,6 +152,17 @@ package System.OS_Lib is
-- provides a representation of it as a set of component parts, to be
-- interpreted as a date point in UTC.
function GM_Time_Of
(Year : Year_Type;
Month : Month_Type;
Day : Day_Type;
Hour : Hour_Type;
Minute : Minute_Type;
Second : Second_Type) return OS_Time;
-- Analogous to the Time_Of routine in Ada.Calendar, takes a set of
-- time component parts and returns an OS_Time. Returns Invalid_Time
-- if the creation fails.
----------------
-- File Stuff --
----------------