Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 27 Nov 2001 02:20:12 +0000 (02:20 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 27 Nov 2001 02:20:12 +0000 (02:20 +0000)
2001-11-26  Ulrich Drepper  <drepper@redhat.com>

* stdio-common/vfscanf.c: If incomplete nan of inf(inity) strings
are found call conv_error and not input_error [PR libc/2669].

* math/bits/mathcalls.h: Mark ceil and floor as const.
Reported by David Mosberger.

2001-11-21  Jim Meyering  <meyering@lucent.com>

* posix/regex.c (iswctype, mbrtowc, wcslen, wcscoll, wcrtomb) [_LIBC]:
Define to be __-prefixed.
Remove unnecessary duplication in `#ifdef _LIBC' blocks.

ChangeLog
manual/stdio.texi
math/bits/mathcalls.h
posix/regex.c
stdio-common/vfscanf.c

index 2b35675..cd59685 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2001-11-26  Ulrich Drepper  <drepper@redhat.com>
+
+       * stdio-common/vfscanf.c: If incomplete nan of inf(inity) strings
+       are found call conv_error and not input_error [PR libc/2669].
+
+       * math/bits/mathcalls.h: Mark ceil and floor as const.
+       Reported by David Mosberger.
+
+2001-11-21  Jim Meyering  <meyering@lucent.com>
+
+       * posix/regex.c (iswctype, mbrtowc, wcslen, wcscoll, wcrtomb) [_LIBC]:
+       Define to be __-prefixed.
+       Remove unnecessary duplication in `#ifdef _LIBC' blocks.
+
 2001-11-26  Andreas Jaeger  <aj@suse.de>
 
        * sysdeps/unix/sysv/linux/hppa/brk.c: Remove __brk_addr alias,
index ce27805..da29f43 100644 (file)
@@ -1383,9 +1383,10 @@ If @var{c} is @code{EOF}, @code{ungetc} does nothing and just returns
 The character that you push back doesn't have to be the same as the last
 character that was actually read from the stream.  In fact, it isn't
 necessary to actually read any characters from the stream before
-unreading them with @code{ungetc}!  But that is a strange way to write
-a program; usually @code{ungetc} is used only to unread a character
-that was just read from the same stream.
+unreading them with @code{ungetc}!  But that is a strange way to write a
+program; usually @code{ungetc} is used only to unread a character that
+was just read from the same stream.  The GNU C library supports this
+even on files opened in binary mode, but other systems might not.
 
 The GNU C library only supports one character of pushback---in other
 words, it does not work to call @code{ungetc} twice without doing input
index c1181f7..12fcfce 100644 (file)
@@ -159,13 +159,13 @@ __MATHCALL (cbrt,, (_Mdouble_ __x));
 /* Nearest integer, absolute value, and remainder functions.  */
 
 /* Smallest integral value not less than X.  */
-__MATHCALL (ceil,, (_Mdouble_ __x));
+__MATHCALLX (ceil,, (_Mdouble_ __x), (__const__));
 
 /* Absolute value of X.  */
 __MATHCALLX (fabs,, (_Mdouble_ __x), (__const__));
 
 /* Largest integer not greater than X.  */
-__MATHCALL (floor,, (_Mdouble_ __x));
+__MATHCALLX (floor,, (_Mdouble_ __x), (__const__));
 
 /* Floating-point modulo remainder of X/Y.  */
 __MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y));
index 5793950..567c7d0 100644 (file)
 #  define re_compile_fastmap(bufp) __re_compile_fastmap (bufp)
 
 #  define btowc __btowc
+#  define iswctype __iswctype
+#  define mbrtowc __mbrtowc
+#  define wcslen __wcslen
+#  define wcscoll __wcscoll
+#  define wcrtomb __wcrtomb
 
 /* We are also using some library internals.  */
 #  include <locale/localeinfo.h>
@@ -1284,11 +1289,7 @@ convert_mbs_to_wcs (dest, src, len, offset_buffer, is_binary)
   for( ; mb_remain > 0 ; ++wc_count, ++pdest, mb_remain -= consumed,
         psrc += consumed)
     {
-#ifdef _LIBC
-      consumed = __mbrtowc (pdest, psrc, mb_remain, &mbs);
-#else
       consumed = mbrtowc (pdest, psrc, mb_remain, &mbs);
-#endif
 
       if (consumed <= 0)
        /* failed to convert. maybe src contains binary data.
@@ -3309,13 +3310,8 @@ PREFIX(regex_compile) (ARG_PREFIX(pattern), ARG_PREFIX(size), syntax, bufp)
 
                         for (ch = 0; ch < 1 << BYTEWIDTH; ++ch)
                          {
-#  ifdef _LIBC
-                           if (__iswctype (__btowc (ch), wt))
-                             SET_LIST_BIT (ch);
-#  else
                            if (iswctype (btowc (ch), wt))
                              SET_LIST_BIT (ch);
-#  endif
 
                            if (translate && (is_upper || is_lower)
                                && (ISUPPER (ch) || ISLOWER (ch)))
@@ -4631,11 +4627,7 @@ truncate_wchar (c)
   mbstate_t state;
   int retval;
   memset (&state, '\0', sizeof (state));
-# ifdef _LIBC
-  retval = __wcrtomb (buf, c, &state);
-# else
   retval = wcrtomb (buf, c, &state);
-# endif
   return retval > 0 ? buf[0] : (unsigned char) c;
 }
 #endif /* WCHAR */
@@ -6435,13 +6427,8 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
                                      & ~(uintptr_t)(__alignof__(wctype_t) - 1);
                wctype = *((wctype_t*)alignedp);
                workp += CHAR_CLASS_SIZE;
-# ifdef _LIBC
-               if (__iswctype((wint_t)c, wctype))
-                 goto char_set_matched;
-# else
                if (iswctype((wint_t)c, wctype))
                  goto char_set_matched;
-# endif
              }
 
             /* match with collating_symbol?  */
@@ -6477,20 +6464,12 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
                for (workp2 = workp + coll_symbol_length ; workp < workp2 ;)
                  {
                    const CHAR_T *backup_d = d, *backup_dend = dend;
-# ifdef _LIBC
-                   length = __wcslen (workp);
-# else
                    length = wcslen (workp);
-# endif
 
                    /* If wcscoll(the collating symbol, whole string) > 0,
                       any substring of the string never match with the
                       collating symbol.  */
-# ifdef _LIBC
-                   if (__wcscoll (workp, d) > 0)
-# else
                    if (wcscoll (workp, d) > 0)
-# endif
                      {
                        workp += length + 1;
                        continue;
@@ -6515,11 +6494,7 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
                        str_buf[i] = TRANSLATE(*d);
                        str_buf[i+1] = '\0';
 
-# ifdef _LIBC
-                       match = __wcscoll (workp, str_buf);
-# else
                        match = wcscoll (workp, str_buf);
-# endif
                        if (match == 0)
                          goto char_set_matched;
 
@@ -6630,20 +6605,12 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
                for (workp2 = workp + equiv_class_length ; workp < workp2 ;)
                  {
                    const CHAR_T *backup_d = d, *backup_dend = dend;
-# ifdef _LIBC
-                   length = __wcslen (workp);
-# else
                    length = wcslen (workp);
-# endif
 
                    /* If wcscoll(the collating symbol, whole string) > 0,
                       any substring of the string never match with the
                       collating symbol.  */
-# ifdef _LIBC
-                   if (__wcscoll (workp, d) > 0)
-# else
                    if (wcscoll (workp, d) > 0)
-# endif
                      {
                        workp += length + 1;
                        break;
@@ -6668,11 +6635,7 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
                        str_buf[i] = TRANSLATE(*d);
                        str_buf[i+1] = '\0';
 
-# ifdef _LIBC
-                       match = __wcscoll (workp, str_buf);
-# else
                        match = wcscoll (workp, str_buf);
-# endif
 
                        if (match == 0)
                          goto char_set_matched;
@@ -6754,13 +6717,8 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
                        range_end_char = str_buf + 4;
                      }
 
-# ifdef _LIBC
-                   if (__wcscoll (range_start_char, str_buf+2) <= 0
-                       && __wcscoll (str_buf+2, range_end_char) <= 0)
-# else
                    if (wcscoll (range_start_char, str_buf+2) <= 0
                        && wcscoll (str_buf+2, range_end_char) <= 0)
-# endif
                      goto char_set_matched;
                  }
              }
index 0b53d7e..b4b7d4d 100644 (file)
@@ -1596,7 +1596,8 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
              if (width == 0 || inchar () == EOF)
                /* EOF is only an input error before we read any chars.  */
                conv_error ();
-             if (! ISDIGIT (c) && TOLOWER (c) != L_('i'))
+             if (! ISDIGIT (c) && TOLOWER (c) != L_('i')
+                 && TOLOWER (c) != L_('n'))
                {
 #ifdef COMPILE_WSCANF
                  if (c != decimal)
@@ -1654,12 +1655,12 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
              /* Maybe "nan".  */
              ADDW (c);
              if (width == 0 || inchar () == EOF || TOLOWER (c) != L_('a'))
-               input_error ();
+               conv_error ();
              if (width > 0)
                --width;
              ADDW (c);
              if (width == 0 || inchar () == EOF || TOLOWER (c) != L_('n'))
-               input_error ();
+               conv_error ();
              if (width > 0)
                --width;
              ADDW (c);
@@ -1671,12 +1672,12 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
              /* Maybe "inf" or "infinity".  */
              ADDW (c);
              if (width == 0 || inchar () == EOF || TOLOWER (c) != L_('n'))
-               input_error ();
+               conv_error ();
              if (width > 0)
                --width;
              ADDW (c);
              if (width == 0 || inchar () == EOF || TOLOWER (c) != L_('f'))
-               input_error ();
+               conv_error ();
              if (width > 0)
                --width;
              ADDW (c);
@@ -1691,25 +1692,25 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
                      ADDW (c);
                      if (width == 0 || inchar () == EOF
                          || TOLOWER (c) != L_('n'))
-                       input_error ();
+                       conv_error ();
                      if (width > 0)
                        --width;
                      ADDW (c);
                      if (width == 0 || inchar () == EOF
                          || TOLOWER (c) != L_('i'))
-                       input_error ();
+                       conv_error ();
                      if (width > 0)
                        --width;
                      ADDW (c);
                      if (width == 0 || inchar () == EOF
                          || TOLOWER (c) != L_('t'))
-                       input_error ();
+                       conv_error ();
                      if (width > 0)
                        --width;
                      ADDW (c);
                      if (width == 0 || inchar () == EOF
                          || TOLOWER (c) != L_('y'))
-                       input_error ();
+                       conv_error ();
                      if (width > 0)
                        --width;
                      ADDW (c);