delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1998/08/18/23:21:29

From: noer AT cygnus DOT com (Geoffrey Noer)
Subject: Re: How to detect win9 vs NT?
18 Aug 1998 23:21:29 -0700 :
Message-ID: <19980817214701.F9505.cygnus.gnu-win32@cygnus.com>
References: <159d9843 DOT 35d6f94e AT aol DOT com>
Mime-Version: 1.0
To: N8TM AT aol DOT com
Cc: gnu-win32 AT cygnus DOT com

On Sun, Aug 16, 1998 at 11:22:53AM -0400, N8TM AT aol DOT com wrote:
>
> Are we going to assume that things should run correctly only on the
> type of system they were built on?  I suppose there are things which
> might be fixed to facilitate builds, but I thought that cpu_time()
> and clock() should check at run time the first time they are called
> to see which system is running.

Yes, runtime is the way to go for this sort of thing.  The
development version of Cygwin32 checks the type of OS running when the
DLL loads.  It stores the result in a global variable that is
consulted whenever a runtime choice needs to be made.  Appended is the
code that does this (from winsup/dcrt0.cc in the development
snapshots).

-- 
Geoffrey Noer
noer AT cygnus DOT com

-------------------------- snip ------------------------------

enum os_type {winNT, win95, win98, win32s, unknown};

/* remember the type of Win32 OS being run for future use. */
os_type NO_COPY os_being_run;

/* set_os_type: Set global variable os_being_run with type of Win32
   operating system being run.  This information is used internally
   to manage the inconsistency in Win32 API calls between Win32
   OSes. */
/* Cygwin32 internal */
static
void
set_os_type ()
{
  OSVERSIONINFO os_version_info;
  os_version_info.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);

  GetVersionEx (&os_version_info);

  switch (os_version_info.dwPlatformId)
    {
      case VER_PLATFORM_WIN32_NT:
        os_being_run = winNT;
        break;
      case VER_PLATFORM_WIN32_WINDOWS:
        if (os_version_info.dwMinorVersion == 0)
          os_being_run = win95;
        else /* os_version_info.dwMinorVersion == 10 */
          os_being_run = win98;
        break;
      case VER_PLATFORM_WIN32s:
        os_being_run = win32s;
        break;
      default:
        os_being_run = unknown;
        break;
    }
}
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019