From 2c590cf59c9d08513447b07cdb9a8277ddbd57e7 Mon Sep 17 00:00:00 2001 From: "David G. Holm" Date: Mon, 17 Jan 2000 20:28:49 +0000 Subject: [PATCH] See ChangeLog entry 2000-01-17 15:30 GMT-5 David G. Holm --- harbour/ChangeLog | 5 +++++ harbour/source/rtl/environ.c | 36 +++++++++++++++--------------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3b37ae34cc..6185e98496 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,8 @@ +2000-01-17 15:30 GMT-5 David G. Holm + + * source/environ.c + ! Fixed problems in new Windows build version logic. + 20000117-22:09 GMT+3 Alexander Kresin * source/pp/hbpp.c * Few bugs fixed, reported by Matteo Baccan diff --git a/harbour/source/rtl/environ.c b/harbour/source/rtl/environ.c index 82d0f613f3..2a58b5ee32 100644 --- a/harbour/source/rtl/environ.c +++ b/harbour/source/rtl/environ.c @@ -59,13 +59,14 @@ be ahead of any other #include statements! */ #include "hbwinapi.h" -#if defined(__BORLANDC__) && defined(_WINDOWS_) && ! defined(VER_PLATFORM_WIN32_WINDOWS) +#if defined(HARBOUR_USE_WIN_GTAPI) || defined(WINNT) +#if ! defined(VER_PLATFORM_WIN32_WINDOWS) #define VER_PLATFORM_WIN32_WINDOWS 1 #endif - -#if defined(_WINDOWS_) && ! defined(VER_PLATFORM_WIN32_CE) +#if ! defined(VER_PLATFORM_WIN32_CE) #define VER_PLATFORM_WIN32_CE 3 #endif +#endif #include "extend.h" #include "errorapi.h" @@ -164,7 +165,7 @@ HARBOUR HB_OS( void ) /* TODO: add MSVC support but MSVC cannot detect any OS except Windows! */ #if defined(__TURBOC__) || defined(__BORLANDC__) || defined(_MSC_VER) || defined(__MINGW32__) -#if defined(_WINDOWS_) || defined(WINNT) || defined(__BORLANDC__) +#if defined(_Windows) || defined(WINNT) /* NOTE: Support for determining the window version by Luiz Rafael Culik @@ -174,9 +175,12 @@ HARBOUR HB_OS( void ) dezac@corevia.com */ +#define HB_OS_VERSION_WINDOWS OSVERSIONINFO osVer; /* for GetVersionEx() */ + char szBuild[ 128 ] = ""; LONG lVersion; + cformat = "%s%s %d.%02d.%04d"; osVer.dwOSVersionInfoSize = sizeof( osVer ); if( GetVersionEx( &osVer ) ) @@ -206,17 +210,8 @@ HARBOUR HB_OS( void ) hb_os = "Windows 98 SE"; else hb_os = "Windows"; - - /* TODO: Can you fix it, please ? - strcat( hb_os, osVer.szCSDVersion ); - - I don't know why in each call this code returns: - - Windows 95 OSR2 B ... - - Windows 95 OSR2 B B ... - - Windows 95 OSR2 B B B ... - - Add this info in the NT section too. - */ + strncpy( szBuild, osVer.szCSDVersion, sizeof( szBuild ) ); + szBuild[ sizeof( szBuild ) ] = '\0'; break; case VER_PLATFORM_WIN32_NT: @@ -237,21 +232,17 @@ HARBOUR HB_OS( void ) else hb_os = "Windows NT"; - /* TODO: szCSDVersion should contain the service pack installed if( osVer.szCSDVersion ) { int i = 0; WORD wServicePack; - char szBuffer[ 128 ]; while( osVer.szCSDVersion[ i ] != '\0' && !isdigit( osVer.szCSDVersion[ i ] ) ) i++; wServicePack = (WORD)( atoi( &osVer.szCSDVersion[ i ] ) ); - sprintf( szBuffer, "%s %i", hb_os, wServicePack ); - strcopy( hb_os, szBuffer ); + sprintf( szBuild, "%i", wServicePack ); } - */ /* TODO: Add support for: * NT Stand Alone Server * NT Enterprise Edition @@ -279,7 +270,6 @@ HARBOUR HB_OS( void ) hb_os = "Windows CE"; break; } - cformat = "%s %d.%02d.%04d"; } #else #if defined(_MSC_VER) @@ -374,7 +364,11 @@ HARBOUR HB_OS( void ) if( ! hb_os ) strcpy( version, "Unknown" ); else if( hb_osmajor == -1 ) strcpy( version, hb_os ); else if( hb_osmajor == -2 ) { /* NOP */ } +#ifdef HB_OS_VERSION_WINDOWS + else sprintf( version, cformat, hb_os, szBuild, hb_osmajor, hb_osminor, hb_osletter ); +#else else sprintf( version, cformat, hb_os, hb_osmajor, hb_osminor, hb_osletter ); +#endif hb_retc( version ); #ifdef __DJGPP__ hb_xfree( hb_os );