Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 21 Jun 1999 13:38:44 +0000 (13:38 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 21 Jun 1999 13:38:44 +0000 (13:38 +0000)
1999-06-18  Thorsten Kukuk  <kukuk@suse.de>

* sysdeps/alpha/atomicity.h: Correct counting of subsections.

1999-06-17  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* stdlib/tst-strtoll.c: Avoid warning about huge constant.

1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* stdio-common/vfprintf.c (group_member): Make parameters and
return types pointers to CHAR_T instead of UCHAR_T.
(vfprintf): Change type of work_buffer, workend and string to
CHAR_T pointer/array.
(process_arg, process_string_arg): Adjust/remove casts.  Add
missing use of L_ macro.
(printf_unknown): Add missing uses of L_ macro.

1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* wcsmbs/wcschrnul.c: Explicitly cast return value to avoid
warning.

1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* libio/wgenops.c (__wuflow): Fix use of WEOF vs. EOF.  Call
_IO_switch_to_wget_mode instead of _IO_switch_to_get_mode.
(__wunderflow): Likewise.
(_IO_switch_to_wget_mode): Likewise.
(_IO_init_wmarker): Likewise.

* libio/wfileops.c (_IO_wfile_seekoff): Call
_IO_switch_to_wget_mode, not _IO_switch_to_get_mode.
(_IO_wfile_jumps): Fix pbackfail entry.

* libio/iosetvbuf.c (_IO_setvbuf): Only call wide char setbuf
function if the stream is currently unoriented.

1999-06-19  Zack Weinberg  <zack@rabi.columbia.edu>

* wcsmbs/wchar.h: Define __need___va_list before including stdarg.h.
Wrap all wide stream functions with #ifdef __USE_ISOC9X.  Use
__gnuc_va_list in v*w(printf|scanf) prototypes.

1999-06-20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* libio/oldiopopen.c (_IO_old_proc_open): Apply change from
1999-03-29 to iopopen also here.
Reported by Richard Braakman <dark@xs4all.nl>.

1999-06-20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* include/features.h: Use __GNUC_PREREQ.
* sysdeps/i386/fpu/bits/mathinline.h: Likewise

1999-06-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* stdio-common/vfscanf.c (ungetc, inchar) [COMPILE_WPRINTF]:
Change EOF to WEOF and remove cast.
(UNGETC): Remove macro.
(_IO_vfwscanf): Change isspace to ISSPACE and UNGETC to ungetc.
* stdio-common/printf-parse.h (find_spec) [!COMPILE_WPRINTF]:
Change ISASCII to isascii and MBRLEN to mbrlen.
(parse_one_spec): Compare info.spec always against wchar_t
values.
* stdio-common/vfprintf.c: Remove unused ISASCII and MBRLEN.
(_itoa, _itoa_word) [COMPILE_WRPINTF]: Don't cast second argument.
(NOT_IN_JUMP_RANGE, CHAR_CLASS): Change (int) to (INT_T), use L_.

1999-06-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

* libio/Makefile (shared-only-routines): Add oldiofgetpos,
oldiofgetpos64, oldiofsetpos and oldiofsetpos64.
(routines): Include oldiofgetpos, oldiofgetpos64, oldiofsetpos and
oldiofsetpos64 only if doing versioning.

15 files changed:
ChangeLog
include/features.h
libio/Makefile
libio/iosetvbuf.c
libio/oldiopopen.c
libio/wfileops.c
libio/wgenops.c
stdio-common/printf-parse.h
stdio-common/vfprintf.c
stdio-common/vfscanf.c
stdlib/tst-strtoll.c
sysdeps/alpha/atomicity.h
sysdeps/i386/fpu/bits/mathinline.h
wcsmbs/wchar.h
wcsmbs/wcschrnul.c

index e1acc35..db85375 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,79 @@
+1999-06-18  Thorsten Kukuk  <kukuk@suse.de>
+
+       * sysdeps/alpha/atomicity.h: Correct counting of subsections.
+
+1999-06-17  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * stdlib/tst-strtoll.c: Avoid warning about huge constant.
+
+1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * stdio-common/vfprintf.c (group_member): Make parameters and
+       return types pointers to CHAR_T instead of UCHAR_T.
+       (vfprintf): Change type of work_buffer, workend and string to
+       CHAR_T pointer/array.
+       (process_arg, process_string_arg): Adjust/remove casts.  Add
+       missing use of L_ macro.
+       (printf_unknown): Add missing uses of L_ macro.
+
+1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * wcsmbs/wcschrnul.c: Explicitly cast return value to avoid
+       warning.
+
+1999-06-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * libio/wgenops.c (__wuflow): Fix use of WEOF vs. EOF.  Call
+       _IO_switch_to_wget_mode instead of _IO_switch_to_get_mode.
+       (__wunderflow): Likewise.
+       (_IO_switch_to_wget_mode): Likewise.
+       (_IO_init_wmarker): Likewise.
+
+       * libio/wfileops.c (_IO_wfile_seekoff): Call
+       _IO_switch_to_wget_mode, not _IO_switch_to_get_mode.
+       (_IO_wfile_jumps): Fix pbackfail entry.
+
+       * libio/iosetvbuf.c (_IO_setvbuf): Only call wide char setbuf
+       function if the stream is currently unoriented.
+
+1999-06-19  Zack Weinberg  <zack@rabi.columbia.edu>
+
+       * wcsmbs/wchar.h: Define __need___va_list before including stdarg.h.
+       Wrap all wide stream functions with #ifdef __USE_ISOC9X.  Use
+       __gnuc_va_list in v*w(printf|scanf) prototypes.
+
+1999-06-20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * libio/oldiopopen.c (_IO_old_proc_open): Apply change from
+       1999-03-29 to iopopen also here.
+       Reported by Richard Braakman <dark@xs4all.nl>.
+
+1999-06-20  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * include/features.h: Use __GNUC_PREREQ.
+       * sysdeps/i386/fpu/bits/mathinline.h: Likewise
+
+1999-06-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * stdio-common/vfscanf.c (ungetc, inchar) [COMPILE_WPRINTF]:
+       Change EOF to WEOF and remove cast.
+       (UNGETC): Remove macro.
+       (_IO_vfwscanf): Change isspace to ISSPACE and UNGETC to ungetc.
+       * stdio-common/printf-parse.h (find_spec) [!COMPILE_WPRINTF]:
+       Change ISASCII to isascii and MBRLEN to mbrlen.
+       (parse_one_spec): Compare info.spec always against wchar_t
+       values.
+       * stdio-common/vfprintf.c: Remove unused ISASCII and MBRLEN.
+       (_itoa, _itoa_word) [COMPILE_WRPINTF]: Don't cast second argument.
+       (NOT_IN_JUMP_RANGE, CHAR_CLASS): Change (int) to (INT_T), use L_.
+
+1999-06-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
+
+       * libio/Makefile (shared-only-routines): Add oldiofgetpos,
+       oldiofgetpos64, oldiofsetpos and oldiofsetpos64.
+       (routines): Include oldiofgetpos, oldiofgetpos64, oldiofsetpos and
+       oldiofsetpos64 only if doing versioning.
+
 1999-06-20  Ulrich Drepper  <drepper@cygnus.com>
 
        * wcsmbs/wchar.h: Declare wcstof and wcstold for ISO C9x.
index de2b143..88be470 100644 (file)
 #endif /* !ASSEMBLER */
 
 /* Decide whether we can define 'extern inline' functions in headers.  */
-#if defined __GNUC__ && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7)\
-    && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
+#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
 # define __USE_EXTERN_INLINES  1
 #endif
 
index 6fcde40..6759b84 100644 (file)
@@ -30,7 +30,6 @@ routines      :=                                                            \
        ioseekoff ioseekpos iosetbuffer iosetvbuf iosprintf ioungetc          \
        iovsprintf iovsscanf                                                  \
        iofgetpos64 iofopen64 iofsetpos64                                     \
-       oldiofgetpos oldiofgetpos64 oldiofsetpos oldiofsetpos64               \
        fputwc fputwc_u getwc getwc_u getwchar getwchar_u iofgetws iofgetws_u \
        iofputws iofputws_u iogetwline iowpadn ioungetwc putwc putwc_u        \
        putchar putchar_u swprintf vwprintf wprintf wscanf fwscanf vwscanf    \
@@ -51,7 +50,8 @@ include ../Makeconfig
 
 ifeq ($(versioning),yes)
 routines += oldiofopen oldiofdopen oldiofclose oldiopopen oldpclose \
-           oldtmpfile
+           oldtmpfile oldiofgetpos oldiofgetpos64 oldiofsetpos     \
+           oldiofsetpos64
 endif
 
 ifneq (,$(filter %REENTRANT, $(defines)))
@@ -69,7 +69,9 @@ aux   += oldfileops oldstdfiles
 endif
 
 shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops   \
-                      oldstdfiles oldiopopen oldpclose oldtmpfile
+                      oldstdfiles oldiopopen oldpclose oldtmpfile      \
+                      oldiofgetpos oldiofgetpos64 oldiofsetpos         \
+                      oldiofsetpos64
 
 distribute := iolibio.h libioP.h strfile.h Banner
 
index b9ef31a..5dc5eed 100644 (file)
@@ -90,7 +90,7 @@ _IO_setvbuf (fp, buf, mode, size)
       goto unlock_return;
     }
   result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0;
-  if (result == 0 && fp->_mode > 0)
+  if (result == 0 && fp->_mode == 0)
     /* We also have to set the buffer using the wide char function.  */
     result = ((*fp->_wide_data->_wide_vtable->__setbuf) (fp, buf, size) == NULL
              ? EOF : 0);
index c4116ba..556a9ff 100644 (file)
@@ -140,6 +140,8 @@ _IO_old_proc_open (fp, command, mode)
   if (child_pid == 0)
     {
       int child_std_end = mode[0] == 'r' ? 1 : 0;
+      struct _IO_proc_file *p;
+      
       _IO_close (parent_end);
       if (child_end != child_std_end)
        {
@@ -149,11 +151,8 @@ _IO_old_proc_open (fp, command, mode)
       /* POSIX.2:  "popen() shall ensure that any streams from previous
          popen() calls that remain open in the parent process are closed
         in the new child process." */
-      while (old_proc_file_chain)
-       {
-         _IO_close (_IO_fileno ((_IO_FILE *) old_proc_file_chain));
-         old_proc_file_chain = old_proc_file_chain->next;
-       }
+      for (p = old_proc_file_chain; p; p = p->next)
+       _IO_close (_IO_fileno ((_IO_FILE *) p));
 
       _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0);
       _IO__exit (127);
index b040b97..f3f8bf2 100644 (file)
@@ -421,7 +421,7 @@ _IO_wfile_seekoff (fp, offset, dir, mode)
 
   if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base
       || _IO_in_put_mode (fp))
-    if (_IO_switch_to_get_mode (fp))
+    if (_IO_switch_to_wget_mode (fp))
       return WEOF;
 
   if (fp->_wide_data->_IO_buf_base == NULL)
@@ -698,7 +698,7 @@ struct _IO_jump_t _IO_wfile_jumps =
   JUMP_INIT(overflow, (_IO_overflow_t) _IO_wfile_overflow),
   JUMP_INIT(underflow, (_IO_underflow_t) _IO_wfile_underflow),
   JUMP_INIT(uflow, (_IO_underflow_t) _IO_wdefault_uflow),
-  JUMP_INIT(pbackfail, _IO_default_pbackfail),
+  JUMP_INIT(pbackfail, (_IO_pbackfail_t) _IO_wdefault_pbackfail),
   JUMP_INIT(xsputn, _IO_wfile_xsputn),
   JUMP_INIT(xsgetn, _IO_file_xsgetn),
   JUMP_INIT(seekoff, _IO_wfile_seekoff),
index 496d080..6144a10 100644 (file)
@@ -239,12 +239,12 @@ __wuflow (fp)
      _IO_FILE *fp;
 {
   if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1))
-    return EOF;
+    return WEOF;
 
   if (fp->_mode == 0)
     _IO_fwide (fp, 1);
   if (_IO_in_put_mode (fp))
-    if (_IO_switch_to_get_mode (fp) == EOF)
+    if (_IO_switch_to_wget_mode (fp) == EOF)
       return WEOF;
   if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
     return *fp->_wide_data->_IO_read_ptr++;
@@ -270,10 +270,10 @@ __wunderflow (fp)
      _IO_FILE *fp;
 {
   if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1))
-    return EOF;
+    return WEOF;
 
   if (_IO_in_put_mode (fp))
-    if (_IO_switch_to_wget_mode (fp) == WEOF)
+    if (_IO_switch_to_wget_mode (fp) == EOF)
       return WEOF;
   if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
     return *fp->_wide_data->_IO_read_ptr;
@@ -286,7 +286,7 @@ __wunderflow (fp)
   if (_IO_have_markers (fp))
     {
       if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end))
-       return EOF;
+       return WEOF;
     }
   else if (_IO_have_backup (fp))
     _IO_free_wbackup_area (fp);
@@ -447,7 +447,7 @@ _IO_switch_to_wget_mode (fp)
      _IO_FILE *fp;
 {
   if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base)
-    if (_IO_OVERFLOW (fp, EOF) == EOF)
+    if (_IO_OVERFLOW (fp, WEOF) == WEOF)
       return EOF;
   if (_IO_in_backup (fp))
     fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_backup_base;
@@ -663,7 +663,7 @@ _IO_init_wmarker (marker, fp)
 {
   marker->_sbuf = fp;
   if (_IO_in_put_mode (fp))
-    _IO_switch_to_get_mode (fp);
+    _IO_switch_to_wget_mode (fp);
   if (_IO_in_backup (fp))
     marker->_pos = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end;
   else
index d62f3a8..a8cb034 100644 (file)
@@ -106,7 +106,7 @@ find_spec (const UCHAR_T *format, mbstate_t *ps)
 
       /* Remove any hints of a wrong encoding.  */
       ps->count = 0;
-      if (! ISASCII (*format) && (len = MBRLEN (format, MB_CUR_MAX, ps)) > 0)
+      if (! isascii (*format) && (len = mbrlen (format, MB_CUR_MAX, ps)) > 0)
        format += len;
       else
        ++format;
@@ -355,12 +355,12 @@ parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
 
       switch (spec->info.spec)
        {
-       case L_('i'):
-       case L_('d'):
-       case L_('u'):
-       case L_('o'):
-       case L_('X'):
-       case L_('x'):
+       case L'i':
+       case L'd':
+       case L'u':
+       case L'o':
+       case L'X':
+       case L'x':
 #if LONG_MAX != LONG_LONG_MAX
          if (spec->info.is_long_double)
            spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG;
@@ -375,38 +375,38 @@ parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
            else
              spec->data_arg_type = PA_INT;
          break;
-       case L_('e'):
-       case L_('E'):
-       case L_('f'):
-       case L_('g'):
-       case L_('G'):
-       case L_('a'):
-       case L_('A'):
+       case L'e':
+       case L'E':
+       case L'f':
+       case L'g':
+       case L'G':
+       case L'a':
+       case L'A':
          if (spec->info.is_long_double)
            spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
          else
            spec->data_arg_type = PA_DOUBLE;
          break;
-       case L_('c'):
+       case L'c':
          spec->data_arg_type = PA_CHAR;
          break;
-       case L_('C'):
+       case L'C':
          spec->data_arg_type = PA_WCHAR;
          break;
-       case L_('s'):
+       case L's':
          spec->data_arg_type = PA_STRING;
          break;
-       case L_('S'):
+       case L'S':
          spec->data_arg_type = PA_WSTRING;
          break;
-       case L_('p'):
+       case L'p':
          spec->data_arg_type = PA_POINTER;
          break;
-       case L_('n'):
+       case L'n':
          spec->data_arg_type = PA_INT|PA_FLAG_PTR;
          break;
 
-       case L_('m'):
+       case L'm':
        default:
          /* An unknown spec will consume no args.  */
          spec->ndata_args = 0;
index fe145d6..a65953d 100644 (file)
@@ -70,8 +70,6 @@
 #  define INT_T                int
 #  define L_(Str)      Str
 #  define ISDIGIT(Ch)  isdigit (Ch)
-#  define ISASCII(Ch)  isascii (Ch)
-#  define MBRLEN(Cp, L, St) mbrlen (Cp, L, St)
 
 #  define PUT(F, S, N) _IO_sputn ((F), (S), (N))
 #  define PAD(Padchar) \
@@ -89,8 +87,6 @@
 #  define INT_T                wint_t
 #  define L_(Str)      L##Str
 #  define ISDIGIT(Ch)  iswdigit (Ch)
-#  define ISASCII(Ch)  (((unsigned int) (Ch) & ~0x7f) == 0)
-#  define MBRLEN(Cp, L, St) wcslen ((const wchar_t *) (Cp))
 
 #  define PUT(F, S, N) _IO_sputn ((F), (S), (N))
 #  define PAD(Padchar) \
@@ -99,9 +95,8 @@
 #  define PUTC(C, F)   _IO_putwc_unlocked (C, F)
 #  define ORIENT       if (_IO_fwide (s, 1) != 1) return -1
 
-#  define _itoa(Val, Buf, Base, Case) _itowa (Val, (wchar_t *) Buf, Base, Case)
-#  define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, (wchar_t *) Buf, \
-                                                       Base, Case)
+#  define _itoa(Val, Buf, Base, Case) _itowa (Val, Buf, Base, Case)
+#  define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, Buf, Base, Case)
 #  undef EOF
 #  define EOF WEOF
 # endif
@@ -199,8 +194,7 @@ static int printf_unknown __P ((FILE *, const struct printf_info *,
                                const void *const *));
 
 /* Group digits of number string.  */
-static UCHAR_T *group_number __P ((UCHAR_T *, UCHAR_T *, const char *,
-                                  wchar_t))
+static CHAR_T *group_number __P ((CHAR_T *, CHAR_T *, const char *, wchar_t))
      internal_function;
 
 
@@ -227,8 +221,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
   const UCHAR_T *end_of_spec;
 
   /* Buffer intermediate results.  */
-  UCHAR_T work_buffer[1000];
-  UCHAR_T *workend;
+  CHAR_T work_buffer[1000];
+  CHAR_T *workend;
 
   /* State for restartable multibyte character handling functions.  */
 #ifndef COMPILE_WPRINTF
@@ -275,8 +269,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
     /* 'x' */ 18,            0, /* 'z' */ 13
   };
 
-#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < ' ' || (Ch) > 'z')
-#define CHAR_CLASS(Ch) (jump_table[(int) (Ch) - ' '])
+#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z'))
+#define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')])
 #define JUMP(ChExpr, table)                                                  \
       do                                                                     \
        {                                                                     \
@@ -593,8 +587,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
          else                                                                \
            {                                                                 \
              /* Put the number in WORK.  */                                  \
-             string = (UCHAR_T *) _itoa (number.longlong, workend + 1, base, \
-                                         spec == L_('X'));                   \
+             string = _itoa (number.longlong, workend + 1, base,             \
+                             spec == L_('X'));                               \
              string -= 1;                                                    \
              if (group && grouping)                                          \
                string = group_number (string, workend, grouping,             \
@@ -647,8 +641,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
          else                                                                \
            {                                                                 \
              /* Put the number in WORK.  */                                  \
-             string = (UCHAR_T *) _itoa_word (number.word, workend + 1,      \
-                                              base, spec == L_('X'));        \
+             string = _itoa_word (number.word, workend + 1, base,            \
+                                  spec == L_('X'));                          \
              string -= 1;                                                    \
              if (group && grouping)                                          \
                string = group_number (string, workend, grouping,             \
@@ -858,13 +852,13 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
            is_negative = 0;                                                  \
            alt = 1;                                                          \
            group = 0;                                                        \
-           spec = 'x';                                                       \
+           spec = L_('x');                                                   \
            goto LABEL (number);                                              \
          }                                                                   \
        else                                                                  \
          {                                                                   \
            /* Write "(nil)" for a nil pointer.  */                           \
-           string = (UCHAR_T *) L_("(nil)");                                 \
+           string = (CHAR_T *) L_("(nil)");                                  \
            /* Make sure the full string "(nil)" is printed.  */              \
            if (prec < 5)                                                     \
              prec = 5;                                                       \
@@ -901,8 +895,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
     LABEL (form_strerror):                                                   \
       /* Print description of error ERRNO.  */                               \
       string =                                                               \
-       (UCHAR_T *) __strerror_r (save_errno, (char *) work_buffer,           \
-                                 sizeof work_buffer);                        \
+       (CHAR_T *) __strerror_r (save_errno, (char *) work_buffer,            \
+                                sizeof work_buffer);                         \
       is_long = 0;             /* This is no wide-char string.  */           \
       goto LABEL (print_string)
 
@@ -945,9 +939,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
        /* The string argument could in fact be `char *' or `wchar_t *'.      \
           But this should not make a difference here.  */                    \
        if (fspec == NULL)                                                    \
-         string = (UCHAR_T *) va_arg (ap, const wchar_t *);                  \
+         string = (CHAR_T *) va_arg (ap, const wchar_t *);                   \
        else                                                                  \
-         string = (UCHAR_T *) args_value[fspec->data_arg].pa_wstring;        \
+         string = (CHAR_T *) args_value[fspec->data_arg].pa_wstring;         \
                                                                              \
        /* Entry point for printing other strings.  */                        \
       LABEL (print_string):                                                  \
@@ -958,12 +952,12 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
            if (prec == -1                                                    \
                || prec >= (int) (sizeof (null) / sizeof (null[0])) - 1)      \
              {                                                               \
-               string = (UCHAR_T *) null;                                    \
+               string = (CHAR_T *) null;                                     \
                len = (sizeof (null) / sizeof (null[0])) - 1;                 \
              }                                                               \
            else                                                              \
              {                                                               \
-               string = (UCHAR_T *) L"";                                     \
+               string = (CHAR_T *) L"";                                      \
                len = 0;                                                      \
              }                                                               \
          }                                                                   \
@@ -978,10 +972,10 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
                                                                              \
            /* Allocate dynamically an array which definitely is long         \
               enough for the wide character version.  */                     \
-           string = (UCHAR_T *) alloca ((len + 1) * sizeof (wchar_t));       \
+           string = (CHAR_T *) alloca ((len + 1) * sizeof (wchar_t));        \
                                                                              \
            memset (&mbstate, '\0', sizeof (mbstate_t));                      \
-           len = __mbsrtowcs ((wchar_t *) string, &mbs, len + 1, &mbstate);  \
+           len = __mbsrtowcs (string, &mbs, len + 1, &mbstate);              \
            if (len == (size_t) -1)                                           \
              {                                                               \
                /* Illegal multibyte character.  */                           \
@@ -994,9 +988,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
            if (prec != -1)                                                   \
              /* Search for the end of the string, but don't search past      \
                 the length specified by the precision.  */                   \
-             len = __wcsnlen ((wchar_t *) string, prec);                     \
+             len = __wcsnlen (string, prec);                                 \
            else                                                              \
-             len = __wcslen ((wchar_t *) string);                            \
+             len = __wcslen (string);                                        \
          }                                                                   \
                                                                              \
        if ((width -= len) < 0)                                               \
@@ -1199,7 +1193,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
       } number;
       int base;
       union printf_arg the_arg;
-      UCHAR_T *string; /* Pointer to argument string.  */
+      CHAR_T *string;  /* Pointer to argument string.  */
       int alt = 0;     /* Alternate format.  */
       int space = 0;   /* Use space prefix if no sign is needed.  */
       int left = 0;    /* Left-justify output.  */
@@ -1293,7 +1287,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
        if (width + 32 >= sizeof (work_buffer) / sizeof (work_buffer[0]))
          /* We have to use a special buffer.  The "32" is just a safe
             bet for all the output which is not counted in the width.  */
-         workend = ((UCHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
+         workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
                     + (width + 31));
       }
       JUMP (*f, step1_jumps);
@@ -1305,7 +1299,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
       if (width + 32 >= sizeof (work_buffer) / sizeof (work_buffer[0]))
        /* We have to use a special buffer.  The "32" is just a safe
           bet for all the output which is not counted in the width.  */
-       workend = ((UCHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
+       workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T))
                   + (width + 31));
       if (*f == L_('$'))
        /* Oh, oh.  The argument comes from a positional parameter.  */
@@ -1579,7 +1573,7 @@ do_positional:
        } number;
        int base;
        union printf_arg the_arg;
-       UCHAR_T *string;        /* Pointer to argument string.  */
+       CHAR_T *string;         /* Pointer to argument string.  */
 
        /* Fill variables from values in struct.  */
        int alt = specs[nspecs_done].info.alt;
@@ -1628,9 +1622,9 @@ do_positional:
          }
 
        /* Maybe the buffer is too small.  */
-       if (MAX (prec, width) + 32 > sizeof (work_buffer) / sizeof (UCHAR_T))
-         workend = ((UCHAR_T *) alloca ((MAX (prec, width) + 32)
-                                        * sizeof (UCHAR_T))
+       if (MAX (prec, width) + 32 > sizeof (work_buffer) / sizeof (CHAR_T))
+         workend = ((CHAR_T *) alloca ((MAX (prec, width) + 32)
+                                       * sizeof (CHAR_T))
                     + (MAX (prec, width) + 31));
 
        /* Process format specifiers.  */
@@ -1707,8 +1701,8 @@ printf_unknown (FILE *s, const struct printf_info *info,
 {
   int done = 0;
   CHAR_T work_buffer[MAX (info->width, info->spec) + 32];
-  CHAR_T *const workend = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T)
-                                     - 1];
+  CHAR_T *const workend
+    = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T) - 1];
   register CHAR_T *w;
 
   outchar (L_('%'));
@@ -1723,7 +1717,7 @@ printf_unknown (FILE *s, const struct printf_info *info,
     outchar (L_(' '));
   if (info->left)
     outchar (L_('-'));
-  if (info->pad == '0')
+  if (info->pad == L_('0'))
     outchar (L_('0'));
 
   if (info->width != 0)
@@ -1735,7 +1729,7 @@ printf_unknown (FILE *s, const struct printf_info *info,
 
   if (info->prec != -1)
     {
-      outchar ('.');
+      outchar (L_('.'));
       w = _itoa_word (info->prec, workend + 1, 10, 0);
       while (w <= workend)
        outchar (*w++);
@@ -1750,13 +1744,13 @@ printf_unknown (FILE *s, const struct printf_info *info,
 \f
 /* Group the digits according to the grouping rules of the current locale.
    The interpretation of GROUPING is as in `struct lconv' from <locale.h>.  */
-static UCHAR_T *
+static CHAR_T *
 internal_function
-group_number (UCHAR_T *w, UCHAR_T *rear_ptr, const char *grouping,
+group_number (CHAR_T *w, CHAR_T *rear_ptr, const char *grouping,
              wchar_t thousands_sep)
 {
   int len;
-  UCHAR_T *src, *s;
+  CHAR_T *src, *s;
 
   /* We treat all negative values like CHAR_MAX.  */
 
@@ -1767,9 +1761,9 @@ group_number (UCHAR_T *w, UCHAR_T *rear_ptr, const char *grouping,
   len = *grouping;
 
   /* Copy existing string so that nothing gets overwritten.  */
-  src = (UCHAR_T *) alloca ((rear_ptr - w) * sizeof (UCHAR_T));
-  s = (UCHAR_T *) __mempcpy (src, w + 1,
-                            (rear_ptr - w) * sizeof (UCHAR_T)) - 1;
+  src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
+  s = (CHAR_T *) __mempcpy (src, w + 1,
+                           (rear_ptr - w) * sizeof (CHAR_T)) - 1;
   w = rear_ptr;
 
   /* Process all characters in the string.  */
index 5caf616..a494bfa 100644 (file)
 # define va_list       _IO_va_list
 
 # ifdef COMPILE_WPRINTF
-#  define ungetc(c, s) ((void) ((int) c == WEOF                              \
+#  define ungetc(c, s) ((void) (c == WEOF                                    \
                                 || (--read_in,                               \
-                                    _IO_sputbackwc (s, (unsigned char) c))))
-#  define inchar()     (c == EOF ? EOF                                       \
+                                    _IO_sputbackwc (s, c))))
+#  define inchar()     (c == WEOF ? WEOF                                     \
                         : ((c = _IO_getwc_unlocked (s)),                     \
-                           (void) (c != EOF && ++read_in), c))
+                           (void) (c != WEOF && ++read_in), c))
 
 #  define MEMCPY(d, s, n) wmemcpy (d, s, n)
 #  define ISSPACE(Ch)    iswspace (Ch)
 #  define ISDIGIT(Ch)    iswdigit (Ch)
 #  define ISXDIGIT(Ch)   iswxdigit (Ch)
-#  define UNGETC(Ch, S)   ungetwc (Ch, S)
 #  define TOLOWER(Ch)    towlower (Ch)
 #  define ORIENT         if (_IO_fwide (s, 1) != 1) return EOF
 #  define __strtoll_internal   __wcstoll_internal
 #  define ISSPACE(Ch)    isspace (Ch)
 #  define ISDIGIT(Ch)    isdigit (Ch)
 #  define ISXDIGIT(Ch)   isxdigit (Ch)
-#  define UNGETC(Ch, S)   ungetc (Ch, S)
 #  define TOLOWER(Ch)    tolower (Ch)
 #  define ORIENT         if (_IO_fwide (s, -1) != -1) return EOF
 
@@ -432,7 +430,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
 
          if (c != fc)
            {
-             UNGETC (c, s);
+             ungetc (c, s);
              conv_error ();
            }
 
@@ -578,7 +576,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
              input_error ();
          while (ISSPACE (c));
          errno = save_errno;
-         UNGETC (c, s);
+         ungetc (c, s);
          skip_space = 0;
        }
 
@@ -810,7 +808,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
                {
                  if (ISSPACE (c))
                    {
-                     UNGETC (c, s);
+                     ungetc (c, s);
                      break;
                    }
 
@@ -974,7 +972,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
              {
                if (ISSPACE (c))
                  {
-                   UNGETC (c, s);
+                   ungetc (c, s);
                    break;
                  }
 
@@ -1214,14 +1212,14 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
                {
                  /* The last read character is not part of the number
                     anymore.  */
-                 UNGETC (c, s);
+                 ungetc (c, s);
 
                  conv_error ();
                }
            }
          else
            /* The just read character is not part of the number anymore.  */
-           UNGETC (c, s);
+           ungetc (c, s);
 
          /* Convert the number.  */
          ADDW (L_('\0'));
@@ -1296,7 +1294,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
              if (! ISDIGIT (c) && c != decimal)
                {
                  /* This is no valid number.  */
-                 UNGETC (c, s);
+                 ungetc (c, s);
                  input_error ();
                }
              if (width > 0)
@@ -1351,7 +1349,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
                    }
                  else
                    /* Never mind.  */
-                   UNGETC (c, s);
+                   ungetc (c, s);
                }
              goto scan_float;
            }
@@ -1402,7 +1400,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
                {
                  /* The last read character is not part of the number
                     anymore.  */
-                 UNGETC (c, s);
+                 ungetc (c, s);
                  break;
                }
              if (width > 0)
@@ -1949,7 +1947,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
     {
       do
        c = inchar ();
-      while (isspace (c));
+      while (ISSPACE (c));
       ungetc (c, s);
     }
 
index 4d434d5..38ceaeb 100644 (file)
@@ -65,8 +65,8 @@ static const struct ltest tests[] =
   {"922337203685477580777", 9223372036854775807ll, 0, 0, ERANGE},
   {"9223372036854775810", 9223372036854775807ll, 0, 0, ERANGE},
   {"-2147483648", -2147483648ll, 0, 0, 0},
-  {"-9223372036854775808", -9223372036854775808ll, 0, 0, 0},
-  {"-9223372036854775809", -9223372036854775808ll, 0, 0, ERANGE},
+  {"-9223372036854775808", -9223372036854775807ll - 1, 0, 0, 0},
+  {"-9223372036854775809", -9223372036854775807ll - 1, 0, 0, ERANGE},
   {"0x112233445566778899z", 9223372036854775807ll, 16, 'z', ERANGE},
   {NULL, 0, 0, 0, 0},
 
index 34a538f..6ed2ee6 100644 (file)
@@ -36,10 +36,10 @@ exchange_and_add (volatile uint32_t *mem, int val)
        "addl   %0,%4,%1\n\t"
        "stl_c  %1,%2\n\t"
        "beq    %1,2f\n"
-       ".subsection 2\n"
+       ".subsection 1\n"
        "2:\t"
        "br     1b\n"
-       ".subsection 1\n\t"
+       ".previous\n\t"
        "mb\n\t"
        "/* End exchange & add */"
        : "=&r"(result), "=&r"(tmp), "=m"(*mem)
@@ -61,10 +61,10 @@ atomic_add (volatile uint32_t *mem, int val)
        "addl   %0,%3,%0\n\t"
        "stl_c  %0,%1\n\t"
        "beq    %0,2f\n\t"
-       ".subsection 2\n"
+       ".subsection 1\n"
        "2:\t"
        "br     1b\n"
-       ".subsection 1\n\t"
+       ".previous\n\t"
        "mb\n\t"
        "/* End exchange & add */"
        : "=&r"(result), "=m"(*mem)
@@ -86,10 +86,10 @@ compare_and_swap (volatile long int *p, long int oldval, long int newval)
        "mov    %3,%0\n\t"
        "stq_c  %0,%1\n\t"
        "beq    %0,2f\n\t"
-       ".subsection 2\n"
+       ".subsection 1\n"
        "2:\t"
        "br     1b\n"
-       ".subsection 1\n\t"
+       ".previous\n\t"
        "3:\t"
        "mb\n\t"
        "/* End compare & swap */"
index 00fe3c0..e22a251 100644 (file)
 
 /* The gcc, version 2.7 or below, has problems with all this inlining
    code.  So disable it for this version of the compiler.  */
-# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 7))
+# if __GNUC_PREREQ (2, 8)
 /* Test for negative number.  Used in the signbit() macro.  */
 __MATH_INLINE int
 __signbitf (float __x)
index e0e28bd..d9ff631 100644 (file)
@@ -32,6 +32,8 @@
 /* Get FILE definition.  */
 # define __need_FILE
 # include <stdio.h>
+/* Get va_list definition.  */
+# define __need___va_list
 # include <stdarg.h>
 
 /* Get size_t, wchar_t, wint_t and NULL from <stddef.h>.  */
@@ -519,6 +521,7 @@ extern wchar_t *wcpncpy __P ((wchar_t *__dest, __const wchar_t *__src,
 
 
 /* Wide character I/O functions.  */
+#ifdef __USE_ISOC9X
 
 /* Select orientation for stream.  */
 extern int fwide __P ((FILE *__fp, int __mode));
@@ -539,17 +542,17 @@ extern int swprintf __P ((wchar_t *__restrict __s, size_t __n,
 /* Write formatted output to S from argument list ARG.  */
 extern int vfwprintf __P ((FILE *__restrict __s,
                           __const wchar_t *__restrict __format,
-                          va_list __arg))
+                          __gnuc_va_list __arg))
      /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
 /* Write formatted output to stdout from argument list ARG.  */
 extern int vwprintf __P ((__const wchar_t *__restrict __format,
-                         va_list __arg))
+                         __gnuc_va_list __arg))
      /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
 /* Write formatted output of at most N character to S from argument
    list ARG.  */
 extern int vswprintf __P ((wchar_t *__restrict __s, size_t __n,
                           __const wchar_t *__restrict __format,
-                          va_list __arg))
+                          __gnuc_va_list __arg))
      /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
 
 
@@ -567,14 +570,17 @@ extern int swscanf __P ((__const wchar_t *__restrict __s,
 
 /* Read formatted input from S into argument list ARG.  */
 extern int vfwscanf __P ((FILE *__restrict __s,
-                         __const wchar_t *__restrict __format, va_list __arg))
+                         __const wchar_t *__restrict __format,
+                         __gnuc_va_list __arg))
      /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
 /* Read formatted input from stdin into argument list ARG.  */
-extern int vwscanf __P ((__const wchar_t *__restrict __format, va_list __arg))
+extern int vwscanf __P ((__const wchar_t *__restrict __format,
+                        __gnuc_va_list __arg))
      /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
 /* Read formatted input from S into argument list ARG.  */
 extern int vswscanf __P ((__const wchar_t *__restrict __s,
-                         __const wchar_t *__restrict __format, va_list __arg))
+                         __const wchar_t *__restrict __format,
+                         __gnuc_va_list __arg))
      /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
 
 
@@ -647,7 +653,7 @@ extern wint_t ungetwc __P ((wint_t __wc, FILE *__stream));
 extern size_t wcsftime __P ((wchar_t *__restrict __s, size_t __maxsize,
                             __const wchar_t *__restrict __format,
                             __const struct tm *__restrict __tp));
-
+#endif /* Use ISO C9x. */
 
 /* The X/Open standard demands that most of the functions defined in
    the <wctype.h> header must also appear here.  This is probably
index 2ea9b2c..ff24659 100644 (file)
@@ -31,6 +31,6 @@ __wcschrnul (wcs, wc)
     else
       ++wcs;
 
-  return wcs;
+  return (wchar_t *) wcs;
 }
 weak_alias (__wcschrnul, wcschrnul)