Commit c3d01e19 by Pascal Obry Committed by Arnaud Charlet

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
parent 6907542d
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> 2014-07-18 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Container_Indexing): Refine previous patch for * sem_ch4.adb (Try_Container_Indexing): Refine previous patch for
......
...@@ -503,6 +503,25 @@ __gnat_to_gm_time (OS_Time *p_time, int *p_year, int *p_month, int *p_day, ...@@ -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; *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, /* 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 which has size BUFSIZ. If PATH is a symbolic link, then return the number
of characters of its content in BUF. Otherwise, return -1. of characters of its content in BUF. Otherwise, return -1.
......
...@@ -107,6 +107,8 @@ extern void __gnat_current_time_string (char *); ...@@ -107,6 +107,8 @@ extern void __gnat_current_time_string (char *);
extern void __gnat_to_gm_time (OS_Time *, int *, int *, extern void __gnat_to_gm_time (OS_Time *, int *, int *,
int *, int *, 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_maximum_file_name_length (void);
extern int __gnat_get_switches_case_sensitive (void); extern int __gnat_get_switches_case_sensitive (void);
extern int __gnat_get_file_names_case_sensitive (void); extern int __gnat_get_file_names_case_sensitive (void);
......
...@@ -1308,6 +1308,28 @@ package body System.OS_Lib is ...@@ -1308,6 +1308,28 @@ package body System.OS_Lib is
Second := S; Second := S;
end GM_Split; 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 -- -- GM_Year --
------------- -------------
......
...@@ -152,6 +152,17 @@ package System.OS_Lib is ...@@ -152,6 +152,17 @@ package System.OS_Lib is
-- provides a representation of it as a set of component parts, to be -- provides a representation of it as a set of component parts, to be
-- interpreted as a date point in UTC. -- 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 -- -- File Stuff --
---------------- ----------------
......
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