Some sscanf fixes to get wxtide32.exe running

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Tue May 13 15:31:36 CDT 2003


Changelog:
	dlls/msvcrt/scanf.h, wine/dlls/msvcrt/tests/scanf.c:
	Fix some sccanf cases and testcase to get wxtide32.exe running

-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: wine/dlls/msvcrt/scanf.h
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/scanf.h,v
retrieving revision 1.9
diff -u -r1.9 scanf.h
--- wine/dlls/msvcrt/scanf.h	11 Jan 2003 22:50:15 -0000	1.9
+++ wine/dlls/msvcrt/scanf.h	13 May 2003 20:21:02 -0000
@@ -4,7 +4,7 @@
  *
  * Copyright 1996,1998 Marcus Meissner
  * Copyright 1996 Jukka Iivonen
- * Copyright 1997,2000 Uwe Bonnes
+ * Copyright 1997,2000, 2003 Uwe Bonnes
  * Copyright 2000 Jon Griffiths
  * Copyright 2002 Daniel Gudbjartsson
  *
@@ -82,12 +82,12 @@
     if (!*format) return 0;
 #ifndef WIDE_SCANF
 #ifdef CONSOLE
-    WARN("(\"%s\"): semi-stub\n", format);
+    WARN("(%s): semi-stub\n", debugstr_a(format));
 #else /* CONSOLE */
 #ifdef STRING
-    WARN("%s (\"%s\"): semi-stub\n", file, format);
+    WARN("%s (%s): semi-stub\n", file, debugstr_a(format));
 #else /* STRING */
-    WARN("%p (\"%s\"): semi-stub\n", file, format);
+    WARN("%p (%s): semi-stub\n", file, debugstr_a(format));
 #endif /* STRING */
 #endif /* CONSOLE */
 #endif /* WIDE_SCANF */
@@ -260,7 +260,7 @@
                     }
 		    /* get first digit. */
 		    if (!_ISDIGIT_(nch)) break;
-		    cur = (nch - '0') * (negative ? -1 : 1);
+		    cur = (nch - '0');
                     nch = _GETC_(file);
 		    if (width>0) width--;
                     /* read until no more digits */
@@ -409,8 +409,8 @@
 #else /* WIDE_SCANF */
 			*c = nch;
 #endif /* WIDE_SCANF */
-			st = 1;
 		    }
+		    st = 1;
  		    nch = _GETC_(file);
 	        }
 		break;
@@ -422,9 +422,9 @@
 #else /* WIDE_SCANF */
 			*c = _CONVERT_(nch);
 #endif /* WIDE_SCANF */
-			st = 1;
 		    }
 		    nch = _GETC_(file);
+		    st = 1;
 	        }
 		break;
 	    case 'n': {
--- wine/dlls/msvcrt/tests/scanf.c.~1.4.~	2003-01-12 14:24:51.000000000 +0100
+++ wine/dlls/msvcrt/tests/scanf.c	2003-05-13 22:13:49.000000000 +0200
@@ -24,9 +24,12 @@
 
 static void test_sscanf( void )
 {
-    char buffer[100];
+    char buffer[100], buffer1[100];
     char format[20];
     int result, ret;
+    float res1= -82.6267, res2= 27.76, res11, res12;
+    char pname[]=" St. Petersburg, Florida\n";
+    
 
     /* check EOF */
     strcpy(buffer,"");
@@ -51,6 +54,16 @@
     strcpy(format,"%\"%%%d%@");  /* work around gcc format check */
     ok( sscanf(buffer, format, &result) == 1, "sscanf failed" );
     ok( result == 12, "sscanf reads %x instead of %x", result, 12 );
+
+    /*Check float */
+    ret = sprintf(buffer,"%f %f",res1, res2);
+    ret = sscanf(buffer,"%f%f",&res11, &res12);
+    ok( (res11 == res1) && (res12 == res2), "Error reading floats");
+    ret = sprintf(buffer," %s", pname);
+    ret = sscanf(buffer,"%*c%[^\n]",buffer1);
+    ok( ret = 1, "Error with format \"%s\"","%*c%[^\n]");
+    ok( strncmp(pname,buffer1,strlen(buffer1)) == 0, "Error with \"%s\" \"%s\"",pname, buffer1);
+    
 }
 
 



More information about the wine-patches mailing list