winedos / Fix DESQview checks

Jukka Heinonen jhei at iki.fi
Sun May 4 16:24:29 CDT 2003


This patch fixes DESQview installation check. Previously
set system date accepted and ignored illegal dates. After this
patch, illegal dates are rejected which is how DOS applications
see that certain extensions (like DESQview) are not available.





Changelog:
  Report errors to applications when illegal dates are passed
  to set system date call (required by many installation checks).




Index: dlls/winedos/int21.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/int21.c,v
retrieving revision 1.30
diff -u -r1.30 int21.c
--- dlls/winedos/int21.c	2 May 2003 20:12:52 -0000	1.30
+++ dlls/winedos/int21.c	4 May 2003 21:19:31 -0000
@@ -1543,9 +1543,25 @@
         break;
 
     case 0x2b: /* SET SYSTEM DATE */
-        FIXME("SetSystemDate(%02d/%02d/%04d): not allowed\n",
-              DL_reg(context), DH_reg(context), CX_reg(context) );
-        SET_AL( context, 0 );  /* Let's pretend we succeeded */
+        TRACE( "SET SYSTEM DATE\n" );
+        {
+            WORD year  = CX_reg(context);
+            BYTE month = DH_reg(context);
+            BYTE day   = DL_reg(context);
+
+            if (year  >= 1980 && year  <= 2099 &&
+                month >= 1    && month <= 12   &&
+                day   >= 1    && day   <= 31)
+            {
+                FIXME( "SetSystemDate(%02d/%02d/%04d): not allowed\n",
+                       day, month, year );
+                SET_AL( context, 0 );  /* Let's pretend we succeeded */
+            }
+            else
+            {
+                SET_AL( context, 0xff ); /* invalid date */
+            }
+        }
         break;
 
     case 0x2c: /* GET SYSTEM TIME */




-- 
Jukka Heinonen <http://www.iki.fi/jhei/>



More information about the wine-patches mailing list