Default to Windows 98 version, introduce new version mode 'auto' to use the DLL linkage heuristics

Mike Hearn mike at navi.cx
Wed Jun 16 08:26:38 CDT 2004


Mike Hearn <mike at navi.cx>
Default to Windows 98 version, introduce new version mode 'auto' 
to use the DLL linkage heuristics.

Index: dlls/ntdll/version.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/version.c,v
retrieving revision 1.3
diff -u -p -r1.3 version.c
--- dlls/ntdll/version.c	17 Nov 2003 20:31:30 -0000	1.3
+++ dlls/ntdll/version.c	16 Jun 2004 13:25:16 -0000
@@ -185,9 +185,9 @@ static const WCHAR special_dlls[][16] =
     {'r','p','c','r','t','4','.','d','l','l',0}
 };
 
-/* the current version has not been autodetected but forced via cmdline */
-static BOOL versionForced = FALSE;
-static WINDOWS_VERSION forcedWinVersion; /* init value irrelevant */
+/* has the reported Windows version been determined via DLL heuristics? */
+static BOOL versionForced = TRUE;
+static WINDOWS_VERSION forcedWinVersion = WIN98;
 
 /**********************************************************************
  *         parse_win_version
@@ -197,7 +197,8 @@ static WINDOWS_VERSION forcedWinVersion;
 static BOOL parse_win_version( HKEY hkey )
 {
     static const WCHAR WindowsW[] = {'W','i','n','d','o','w','s',0};
-
+    static const char *auto_key_name = "auto";
+    
     UNICODE_STRING valueW;
     char tmp[64], buffer[50];
     KEY_VALUE_PARTIAL_INFORMATION *info = (KEY_VALUE_PARTIAL_INFORMATION *)tmp;
@@ -210,7 +211,15 @@ static BOOL parse_win_version( HKEY hkey
 
     RtlUnicodeToMultiByteN( buffer, sizeof(buffer)-1, &len, (WCHAR *)info->Data, info->DataLength );
     buffer[len] = 0;
-
+    
+    if ((len - 1 == strlen(auto_key_name)) && (!strncmp(auto_key_name, buffer, len)))
+    {
+        /* we want to use the automatic version sniffing heuristics */
+        TRACE("using automatic version heuristics\n");
+        versionForced = FALSE;
+        return TRUE;
+    }
+    
     for (i = 0; i < NB_WINDOWS_VERSIONS; i++)
     {
         const char *p, *pCurr = WinVersionNames[i];
@@ -221,7 +230,6 @@ static BOOL parse_win_version( HKEY hkey
             if ( (!strncmp( pCurr, buffer, len )) && (buffer[len] == 0) )
             {
                 forcedWinVersion = i;
-                versionForced = TRUE;
                 TRACE( "got win version %s\n", WinVersionNames[forcedWinVersion] );
                 return TRUE;
             }
@@ -231,6 +239,7 @@ static BOOL parse_win_version( HKEY hkey
 
     MESSAGE("Invalid Windows version value '%s' specified in config file.\n", buffer );
     MESSAGE("Valid versions are:" );
+    MESSAGE(" 'auto',");
     for (i = 0; i < NB_WINDOWS_VERSIONS; i++)
     {
         /* only list the first, "official" alias in case of aliases */



More information about the wine-patches mailing list