Guard use of struct tms with #ifdef __TMS like done earlier in apps/lib/apps.c
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Thu, 7 May 2020 19:37:28 +0000 (21:37 +0200)
committerDr. David von Oheimb <David.von.Oheimb@siemens.com>
Fri, 15 May 2020 18:20:08 +0000 (20:20 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/11755)

apps/lib/apps.c

index 6facdf3..4b72011 100644 (file)
@@ -2320,17 +2320,30 @@ double app_tminterval(int stop, int usertime)
 double app_tminterval(int stop, int usertime)
 {
     double ret = 0;
-    struct tms rus;
-    clock_t now = times(&rus);
+    clock_t now;
     static clock_t tmstart;
+    long int tck = sysconf(_SC_CLK_TCK);
+# ifdef __TMS
+    struct tms rus;
 
+    now = times(&rus);
     if (usertime)
         now = rus.tms_utime;
+# else
+    if (usertime)
+        now = clock();          /* sum of user and kernel times */
+    else {
+        struct timeval tv;
+        gettimeofday(&tv, NULL);
+        now = (clock_t)((unsigned long long)tv.tv_sec * tck +
+                        (unsigned long long)tv.tv_usec * (1000000 / tck)
+            );
+    }
+# endif
 
     if (stop == TM_START) {
         tmstart = now;
     } else {
-        long int tck = sysconf(_SC_CLK_TCK);
         ret = (now - tmstart) / (double)tck;
     }