apps/speed.c: clean up SIGARM handling.
authorAndy Polyakov <appro@openssl.org>
Sat, 19 May 2018 13:53:29 +0000 (15:53 +0200)
committerAndy Polyakov <appro@openssl.org>
Wed, 30 May 2018 16:25:36 +0000 (18:25 +0200)
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6311)

apps/speed.c

index e5132631cf7416b082ced9f81e1e7accf6b37c7b..4facebfbfbe81594eb314d2a75ec6716cb8b7460 100644 (file)
@@ -197,29 +197,29 @@ static const int lengths_list[] = {
 };
 static const int *lengths = lengths_list;
 
+#define START   0
+#define STOP    1
+
 #ifdef SIGALRM
-# if defined(__STDC__) || defined(sgi) || defined(_AIX)
-#  define SIGRETTYPE void
-# else
-#  define SIGRETTYPE int
-# endif
 
-static SIGRETTYPE sig_done(int sig);
-static SIGRETTYPE sig_done(int sig)
+static void alarmed(int sig)
 {
-    signal(SIGALRM, sig_done);
+    signal(SIGALRM, alarmed);
     run = 0;
 }
-#endif
 
-#define START   0
-#define STOP    1
+static double Time_F(int s)
+{
+    double ret = app_tminterval(s, usertime);
+    if (s == STOP)
+        alarm(0);
+    return ret;
+}
 
-#if defined(_WIN32)
+#elif defined(_WIN32)
+
+# define SIGALRM -1
 
-# if !defined(SIGALRM)
-#  define SIGALRM
-# endif
 static unsigned int lapse;
 static volatile unsigned int schlock;
 static void alarm_win32(unsigned int secs)
@@ -263,13 +263,9 @@ static double Time_F(int s)
     return ret;
 }
 #else
-
 static double Time_F(int s)
 {
-    double ret = app_tminterval(s, usertime);
-    if (s == STOP)
-        alarm(0);
-    return ret;
+    return app_tminterval(s, usertime);
 }
 #endif
 
@@ -1961,10 +1957,8 @@ int speed_main(int argc, char **argv)
 /* not worth fixing */
 #  error "You cannot disable DES on systems without SIGALRM."
 # endif                         /* OPENSSL_NO_DES */
-#else
-# ifndef _WIN32
-    signal(SIGALRM, sig_done);
-# endif
+#elif SIGALRM > 0
+    signal(SIGALRM, alarmed);
 #endif                          /* SIGALRM */
 
 #ifndef OPENSSL_NO_MD2