+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
*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.
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);
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 --
-------------
-- 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 --
----------------