aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPascal Obry <obry@adacore.com>2014-07-18 09:31:36 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2014-07-18 11:31:36 +0200
commitc3d01e19a33b26764c40d67e6f3f86efbd86b203 (patch)
tree3cf048a2785ddc3db22b53a2e4094c9d31181a00 /gcc
parent6907542db49aa9d73dcfe4a991bac455b1818953 (diff)
downloadgcc-c3d01e19a33b26764c40d67e6f3f86efbd86b203.zip
gcc-c3d01e19a33b26764c40d67e6f3f86efbd86b203.tar.gz
gcc-c3d01e19a33b26764c40d67e6f3f86efbd86b203.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/adaint.c19
-rw-r--r--gcc/ada/adaint.h2
-rw-r--r--gcc/ada/s-os_lib.adb22
-rw-r--r--gcc/ada/s-os_lib.ads11
5 files changed, 60 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 7321d41..897853b 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 607ba82..6e0e4a3d 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -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.
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
index 3c3e476..f6b6f69 100644
--- a/gcc/ada/adaint.h
+++ b/gcc/ada/adaint.h
@@ -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);
diff --git a/gcc/ada/s-os_lib.adb b/gcc/ada/s-os_lib.adb
index 17ac32e..796fe08f 100644
--- a/gcc/ada/s-os_lib.adb
+++ b/gcc/ada/s-os_lib.adb
@@ -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 --
-------------
diff --git a/gcc/ada/s-os_lib.ads b/gcc/ada/s-os_lib.ads
index 9552d86..810d7d4 100644
--- a/gcc/ada/s-os_lib.ads
+++ b/gcc/ada/s-os_lib.ads
@@ -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 --
----------------