Remove /DWIN32S_COMPAT by detecting presence of GetSystemPowerStatus at
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 5 Oct 2000 16:48:37 +0000 (16:48 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Thu, 5 Oct 2000 16:48:37 +0000 (16:48 +0000)
runtime using GetProcAddress

git-svn-id: svn://svn.tartarus.org/sgt/putty@672 cda61777-01e9-0310-a592-d414129be87e

Makefile
noise.c

index 7d92720..bd106ce 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,9 +18,6 @@
 #      Generates executables whose About box report them as being a
 #      release version.
 #
-#  - COMPAT=/DWIN32S_COMPAT
-#      Generates a binary that works (minimally) with Win32s.
-#
 #  - COMPAT=/DAUTO_WINSOCK
 #      Causes PuTTY to assume that <windows.h> includes its own WinSock
 #      header file, so that it won't try to include <winsock.h>.
diff --git a/noise.c b/noise.c
index 88b13a9..3be3c06 100644 (file)
--- a/noise.c
+++ b/noise.c
 #include "storage.h"
 
 /*
+ * GetSystemPowerStatus function.
+ */
+typedef BOOL (WINAPI *gsps_t)(LPSYSTEM_POWER_STATUS);
+gsps_t gsps;
+
+/*
  * This function is called once, at PuTTY startup, and will do some
  * seriously silly things like listing directories and getting disk
  * free space and a process snapshot.
@@ -20,6 +26,7 @@ void noise_get_heavy(void (*func) (void *, int)) {
     HANDLE srch;
     WIN32_FIND_DATA finddata;
     char winpath[MAX_PATH+3];
+    HMODULE mod;
 
     GetWindowsDirectory(winpath, sizeof(winpath));
     strcat(winpath, "\\*");
@@ -32,6 +39,13 @@ void noise_get_heavy(void (*func) (void *, int)) {
     }
 
     read_random_seed(func);
+
+    gsps = NULL;
+    mod = GetModuleHandle("KERNEL32");
+    if (mod) {
+        gsps = (gsps_t)GetProcAddress(mod, "GetSystemPowerStatus");
+        debug(("got gsps=%p\n", gsps));
+    }
 }
 
 void random_save_seed(void) {
@@ -59,10 +73,13 @@ void noise_get_light(void (*func) (void *, int)) {
     GetSystemTimeAdjustment(&adjust[0], &adjust[1], &rubbish);
     func(&adjust, sizeof(adjust));
 
-#ifndef WIN32S_COMPAT
-    if (GetSystemPowerStatus(&pwrstat))
-       func(&pwrstat, sizeof(pwrstat));
-#endif
+    /*
+     * Call GetSystemPowerStatus if present.
+     */
+    if (gsps) {
+        if (gsps(&pwrstat))
+            func(&pwrstat, sizeof(pwrstat));
+    }
 }
 
 /*