/* Return 0.0 if no legal string is found.
No character is used even if a sign was found. */
if ((c < L_('0') || c > L_('9'))
- && (c != decimal || cp[1] < L_('0') || cp[1] > L_('9')))
+ && ((wint_t) c != decimal || cp[1] < L_('0') || cp[1] > L_('9')))
RETURN (0.0, nptr);
/* Record the start of the digits, in case we will check their grouping. */
start_of_digits = startp = cp;
/* Ignore leading zeroes. This helps us to avoid useless computations. */
- while (c == L_('0') || (thousands != L'\0' && c == thousands))
+ while (c == L_('0') || (thousands != L'\0' && (wint_t) c == thousands))
c = *++cp;
/* If no other digit but a '0' is found the result is 0.0.
Return current read pointer. */
- if ((c < L_('0') || c > L_('9')) && c != decimal)
+ if ((c < L_('0') || c > L_('9')) && (wint_t) c != decimal)
{
tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
/* If TP is at the start of the digits, there was no correctly
{
if (c >= L_('0') && c <= L_('9'))
++dig_no;
- else if (thousands == L'\0' || c != thousands)
+ else if (thousands == L'\0' || (wint_t) c != thousands)
/* Not a digit or separator: end of the integer part. */
break;
c = *++cp;
/* Read the fractional digits. A special case are the 'american style'
numbers like `16.' i.e. with decimal but without trailing digits. */
- if (c == decimal)
+ if ((wint_t) c == decimal)
{
c = *++cp;
while (c >= L_('0') && c <= L_('9'))
if (lead_zero)
{
/* Find the decimal point */
- while (*startp != decimal)
+ while ((wint_t) *startp != decimal)
++startp;
startp += lead_zero + 1;
exponent -= lead_zero;
/* Find the end of the digit string and check its grouping. */
end = s;
for (c = *end; c != L_('\0'); c = *++end)
- if (c != thousands && (c < L_('0') || c > L_('9'))
- && (!ISALPHA (c) || TOUPPER (c) - L_('A') + 10 >= base))
+ if ((wchar_t) c != thousands
+ && ((wchar_t) c < L_('0') || (wchar_t) c > L_('9'))
+ && (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base))
break;
if (*s == thousands)
end = s;
c = TOUPPER (c) - L_('A') + 10;
else
break;
- if (c >= base)
+ if ((int) c >= base)
break;
/* Check for overflow. */
if (i > cutoff || (i == cutoff && c > cutlim))
/* Here we have to check for IGNORE entries. If these are
found we count them and go on witht he next value. */
- while ((w1 = s1run->data[pass].value[s1idx]) == IGNORE_CHAR)
+ while ((w1 = s1run->data[pass].value[s1idx])
+ == (u_int32_t) IGNORE_CHAR)
{
++s1ignore;
if ((forward && ++s1idx >= s1run->data[pass].number)
}
}
- while ((w2 = s2run->data[pass].value[s2idx]) == IGNORE_CHAR)
+ while ((w2 = s2run->data[pass].value[s2idx])
+ == (u_int32_t) IGNORE_CHAR)
{
++s2ignore;
if ((forward && ++s2idx >= s2run->data[pass].number)
/* Here we have to check for IGNORE entries. If these are
found we count them and go on witht he next value. */
- while ((w = run->data[pass].value[idx]) == IGNORE_CHAR)
+ while ((w = run->data[pass].value[idx]) == (u_int32_t) IGNORE_CHAR)
{
++ignore;
if ((forward && ++idx >= run->data[pass].number)