If you wonder about the (unsigned char) casts, these are necessary
because the variable 'c' is of type signed int, which breaks the
comparison for non-ASCII char values without the cast.
The code creating the decpt value at the start of vfwscanf is the same
code as in vfwprintf.
Thanks for any review,
Corinna
* vfscanf.c (__SVFSCANF_R): Handle radix char language-dependent
per POSIX.
(__SVFWSCANF_R): Ditto.
Index: libc/stdio/vfscanf.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/stdio/vfscanf.c,v
retrieving revision 1.54
diff -u -p -r1.54 vfscanf.c
--- libc/stdio/vfscanf.c 29 Apr 2013 21:06:23 -0000 1.54
+++ libc/stdio/vfscanf.c 17 Dec 2013 21:51:21 -0000
@@ -162,6 +162,7 @@ Supporting OS subroutines required:
#ifdef FLOATING_POINT
...
+ if (decptpos > 0)
+ {
+ /* We read part of a multibyte decimal point,
+ but the rest is invalid or we're at EOF,
+ so back off. */
+ while (decptpos-- > 0)
+ {
+ _ungetc_r (rptr, decpt[decptpos], fp);