mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[crt]
fix swscanf winetest svn path=/trunk/; revision=62202
This commit is contained in:
parent
e3a1a7262d
commit
3797d9184a
1 changed files with 20 additions and 16 deletions
|
@ -26,7 +26,7 @@
|
||||||
#ifdef WIDE_SCANF
|
#ifdef WIDE_SCANF
|
||||||
#define _CHAR_ wchar_t
|
#define _CHAR_ wchar_t
|
||||||
#define _EOF_ WEOF
|
#define _EOF_ WEOF
|
||||||
#define _EOF_RET WEOF
|
#define _EOF_RET (short)WEOF
|
||||||
#define _ISSPACE_(c) iswspace(c)
|
#define _ISSPACE_(c) iswspace(c)
|
||||||
#define _ISDIGIT_(c) iswdigit(c)
|
#define _ISDIGIT_(c) iswdigit(c)
|
||||||
#define _WIDE2SUPPORTED_(c) c /* No conversion needed (wide to wide) */
|
#define _WIDE2SUPPORTED_(c) c /* No conversion needed (wide to wide) */
|
||||||
|
@ -88,8 +88,11 @@ _FUNCTION_ {
|
||||||
#endif /* STRING */
|
#endif /* STRING */
|
||||||
#endif /* CONSOLE */
|
#endif /* CONSOLE */
|
||||||
#endif /* WIDE_SCANF */
|
#endif /* WIDE_SCANF */
|
||||||
|
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
if (nch == _EOF_) return _EOF_RET;
|
if (nch == _EOF_) {
|
||||||
|
return _EOF_RET;
|
||||||
|
}
|
||||||
|
|
||||||
while (*format) {
|
while (*format) {
|
||||||
/* a whitespace character in the format string causes scanf to read,
|
/* a whitespace character in the format string causes scanf to read,
|
||||||
|
@ -248,11 +251,12 @@ _FUNCTION_ {
|
||||||
/* skip initial whitespace */
|
/* skip initial whitespace */
|
||||||
while ((nch!=_EOF_) && _ISSPACE_(nch))
|
while ((nch!=_EOF_) && _ISSPACE_(nch))
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
/* get sign. */
|
|
||||||
|
/* get sign. */
|
||||||
if (nch == '-' || nch == '+') {
|
if (nch == '-' || nch == '+') {
|
||||||
negative = (nch=='-');
|
negative = (nch=='-');
|
||||||
if (width>0) width--;
|
if (width>0) width--;
|
||||||
if (width==0) break;
|
if (width==0) break;
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
}
|
}
|
||||||
/* get first digit. */
|
/* get first digit. */
|
||||||
|
@ -274,12 +278,12 @@ _FUNCTION_ {
|
||||||
if (width!=0 && nch == '.') {
|
if (width!=0 && nch == '.') {
|
||||||
long double dec = 1;
|
long double dec = 1;
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
if (width>0) width--;
|
if (width>0) width--;
|
||||||
while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) {
|
while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) {
|
||||||
dec /= 10;
|
dec /= 10;
|
||||||
cur += dec * (nch - '0');
|
cur += dec * (nch - '0');
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
if (width>0) width--;
|
if (width>0) width--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* handle exponent */
|
/* handle exponent */
|
||||||
|
@ -287,19 +291,19 @@ _FUNCTION_ {
|
||||||
int exponent = 0, negexp = 0;
|
int exponent = 0, negexp = 0;
|
||||||
double expcnt, shift;
|
double expcnt, shift;
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
if (width>0) width--;
|
if (width>0) width--;
|
||||||
/* possible sign on the exponent */
|
/* possible sign on the exponent */
|
||||||
if (width!=0 && (nch=='+' || nch=='-')) {
|
if (width!=0 && (nch=='+' || nch=='-')) {
|
||||||
negexp = (nch=='-');
|
negexp = (nch=='-');
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
if (width>0) width--;
|
if (width>0) width--;
|
||||||
}
|
}
|
||||||
/* exponent digits */
|
/* exponent digits */
|
||||||
while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) {
|
while (width!=0 && (nch!=_EOF_) && _ISDIGIT_(nch)) {
|
||||||
exponent *= 10;
|
exponent *= 10;
|
||||||
exponent += (nch - '0');
|
exponent += (nch - '0');
|
||||||
nch = _GETC_(file);
|
nch = _GETC_(file);
|
||||||
if (width>0) width--;
|
if (width>0) width--;
|
||||||
}
|
}
|
||||||
/* update 'cur' with this exponent. */
|
/* update 'cur' with this exponent. */
|
||||||
expcnt = 10;
|
expcnt = 10;
|
||||||
|
@ -315,9 +319,9 @@ _FUNCTION_ {
|
||||||
st = 1;
|
st = 1;
|
||||||
if (!suppress) {
|
if (!suppress) {
|
||||||
if (L_prefix) _SET_NUMBER_(long double);
|
if (L_prefix) _SET_NUMBER_(long double);
|
||||||
else if (l_prefix) _SET_NUMBER_(double);
|
else if (l_prefix) _SET_NUMBER_(double);
|
||||||
else _SET_NUMBER_(float);
|
else _SET_NUMBER_(float);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/* According to msdn,
|
/* According to msdn,
|
||||||
|
@ -494,9 +498,9 @@ _FUNCTION_ {
|
||||||
/* terminate */
|
/* terminate */
|
||||||
if (!suppress) *sptr = 0;
|
if (!suppress) *sptr = 0;
|
||||||
#ifdef _LIBCNT_
|
#ifdef _LIBCNT_
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, Mask);
|
RtlFreeHeap(RtlGetProcessHeap(), 0, Mask);
|
||||||
#else
|
#else
|
||||||
HeapFree(GetProcessHeap(), 0, Mask);
|
HeapFree(GetProcessHeap(), 0, Mask);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue