From a4e14164742bbf69bfc294167fd46e203f7eacdd Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 5 Oct 2000 16:48:37 +0000 Subject: [PATCH] Remove /DWIN32S_COMPAT by detecting presence of GetSystemPowerStatus at runtime using GetProcAddress git-svn-id: svn://svn.tartarus.org/sgt/putty@672 cda61777-01e9-0310-a592-d414129be87e --- Makefile | 3 --- noise.c | 25 +++++++++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 7d927203..bd106ce1 100644 --- 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 includes its own WinSock # header file, so that it won't try to include . diff --git a/noise.c b/noise.c index 88b13a97..3be3c063 100644 --- a/noise.c +++ b/noise.c @@ -11,6 +11,12 @@ #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)); + } } /* -- 2.11.0