Commit e476f942 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

Move _WIN32_WINNT definition from command line to e_os.h. The change is

inspired by VC6 failure report. In addition abstain from taking screen
snapshots when running in NT service context.
parent bbbd6710
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -624,7 +624,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
#include <tchar.h>

#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
static int IsService(void)
int OPENSSL_isservice(void)
{ HWINSTA h;
  DWORD len;
  WCHAR *name;
@@ -722,7 +722,7 @@ void OPENSSL_showfatal (const char *fmta,...)

#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
    /* this -------------v--- guards NT-specific calls */
    if (GetVersion() < 0x80000000 && IsService())
    if (GetVersion() < 0x80000000 && OPENSSL_isservice())
    {	HANDLE h = RegisterEventSource(0,_T("OPENSSL"));
	const TCHAR *pmsg=buf;
	ReportEvent(h,EVENTLOG_ERROR_TYPE,0,0,0,1,0,&pmsg,0);
@@ -754,6 +754,7 @@ void OPENSSL_showfatal (const char *fmta,...)
    vfprintf (stderr,fmta,ap);
    va_end (ap);
}
int OPENSSL_isservice (void) { return 0; }
#endif

void OpenSSLDie(const char *file,int line,const char *assertion)
+1 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ extern unsigned long OPENSSL_ia32cap_P;
void OPENSSL_showfatal(const char *,...);
void *OPENSSL_stderr(void);
extern int OPENSSL_NONPIC_relocated;
int OPENSSL_isservice(void);

#ifdef  __cplusplus
}
+2 −1
Original line number Diff line number Diff line
@@ -632,6 +632,7 @@ int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam)
void RAND_screen(void) /* function available for backward compatibility */
{
	RAND_poll();
	if (GetVersion() >= 0x80000000 || !OPENSSL_isservice())
		readscreen();
}

+17 −0
Original line number Diff line number Diff line
@@ -235,6 +235,23 @@ extern "C" {
#  define NO_DIRENT

#  ifdef WINDOWS
#    ifndef _WIN32_WINNT
       /*
	* Defining _WIN32_WINNT here in e_os.h implies certain "discipline."
	* Most notably we ought to check for availability of each specific
	* routine with GetProcAddress() and/or quard NT-specific calls with
	* GetVersion() < 0x80000000. One can argue that in latter "or" case
	* we ought to /DELAYLOAD some .DLLs in order to protect ourselves
	* against run-time link errors. This doesn't seem to be necessary,
	* because it turned out that already Windows 95, first non-NT Win32
	* implementation, is equipped with at least NT 3.51 stubs, dummy
	* routines with same name, but which do nothing. Meaning that it's
	* apparently appropriate to guard generic NT calls with GetVersion
	* alone, while NT 4.0 and above calls ought to be additionally
	* checked upon with GetProcAddress.
	*/
#      define _WIN32_WINNT 0x0400
#    endif
#    include <windows.h>
#    include <stddef.h>
#    include <errno.h>
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ $rm='del';

# C compiler stuff
$cc='cl';
$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0333 -DL_ENDIAN -DDSO_WIN32';
$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32';
$lflags="/nologo /subsystem:console /machine:I386 /opt:ref";
$mlflags='';