openssl: fix keypress requirement in apps on win32
authorShigeki Ohtsu <ohtsu@iij.ad.jp>
Tue, 17 Feb 2015 02:30:28 +0000 (11:30 +0900)
committerShigeki Ohtsu <ohtsu@iij.ad.jp>
Fri, 12 Jun 2015 17:25:24 +0000 (02:25 +0900)
Reapply b910613792dac946b295855963869933a9089044 .

Fixes: https://github.com/iojs/io.js/issues/589
PR-URL: https://github.com/iojs/io.js/pull/1389
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
deps/openssl/openssl/apps/s_client.c

index e55f2c5..ce196e3 100644 (file)
@@ -180,6 +180,13 @@ typedef unsigned int u_int;
 # include <fcntl.h>
 #endif
 
+/* Use Windows API with STD_INPUT_HANDLE when checking for input?
+   Don't look at OPENSSL_SYS_MSDOS for this, since it is always defined if
+   OPENSSL_SYS_WINDOWS is defined */
+#if defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_WINCE) && defined(STD_INPUT_HANDLE)
+#define OPENSSL_USE_STD_INPUT_HANDLE
+#endif
+
 #undef PROG
 #define PROG    s_client_main
 
@@ -1758,10 +1765,7 @@ int MAIN(int argc, char **argv)
                     tv.tv_usec = 0;
                     i = select(width, (void *)&readfds, (void *)&writefds,
                                NULL, &tv);
-# if defined(OPENSSL_SYS_WINCE) || defined(OPENSSL_SYS_MSDOS)
-                    if (!i && (!_kbhit() || !read_tty))
-                        continue;
-# else
+#if defined(OPENSSL_USE_STD_INPUT_HANDLE)
                     if (!i && (!((_kbhit())
                                  || (WAIT_OBJECT_0 ==
                                      WaitForSingleObject(GetStdHandle
@@ -1769,6 +1773,8 @@ int MAIN(int argc, char **argv)
                                                          0)))
                                || !read_tty))
                         continue;
+#else
+                    if(!i && (!_kbhit() || !read_tty) ) continue;
 # endif
                 } else
                     i = select(width, (void *)&readfds, (void *)&writefds,
@@ -1970,12 +1976,12 @@ int MAIN(int argc, char **argv)
             }
         }
 #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS)
-# if defined(OPENSSL_SYS_WINCE) || defined(OPENSSL_SYS_MSDOS)
-        else if (_kbhit())
-# else
+#if defined(OPENSSL_USE_STD_INPUT_HANDLE)
         else if ((_kbhit())
                  || (WAIT_OBJECT_0 ==
                      WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0)))
+#else
+        else if (_kbhit())
 # endif
 #elif defined (OPENSSL_SYS_NETWARE)
         else if (_kbhit())