Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 25 Sep 2000 05:12:05 +0000 (05:12 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 25 Sep 2000 05:12:05 +0000 (05:12 +0000)
2000-09-24  Ulrich Drepper  <drepper@redhat.com>

* libio/genops.c (_IO_doallocbuf): Don't use single byte buffer if
stream is in wide mode.

* stdio-common/vfprintf.c (buffered_vfprintf): Orient stream.

2000-09-21  Bruno Haible  <haible@clisp.cons.org>

* iconvdata/iso-2022-cn-ext.c (EMIT_SHIFT_TO_INIT): Shift __count
by 3, not 2.
(INIT_PARAMS, UPDATE_PARAMS): Likewise.

handling.
* stdio/tst-printf.sh: Adjust expected results.
Reported by Joseph S. Myers <jsm28@cam.ac.uk>.

ChangeLog
iconvdata/iso-2022-cn-ext.c
libio/genops.c
stdio-common/tst-printf.sh
stdio-common/vfprintf.c

index 0955752..e3c06c3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2000-09-24  Ulrich Drepper  <drepper@redhat.com>
+
+       * libio/genops.c (_IO_doallocbuf): Don't use single byte buffer if
+       stream is in wide mode.
+
+       * stdio-common/vfprintf.c (buffered_vfprintf): Orient stream.
+
+2000-09-21  Bruno Haible  <haible@clisp.cons.org>
+
+       * iconvdata/iso-2022-cn-ext.c (EMIT_SHIFT_TO_INIT): Shift __count
+       by 3, not 2.
+       (INIT_PARAMS, UPDATE_PARAMS): Likewise.
+
 2000-09-21  Bruno Haible  <haible@clisp.cons.org>
 
        * stdio-common/vfscanf.c (__vfscanf, _IO_vfscanf): Fix bugs in
@@ -8,7 +21,9 @@
        * stdio-common/vfprintf.c (process_arg): Handle %hhn.
        Add missing case in va_arg handling for numbers.
        * stdio-common/tst-printf.c (main): Add tests for %hhu and %hhn
-       handling.  Reported by Joseph S. Myers <jsm28@cam.ac.uk>.
+       handling.
+       * stdio/tst-printf.sh: Adjust expected results.
+       Reported by Joseph S. Myers <jsm28@cam.ac.uk>.
 
 2000-09-20  Bruno Haible  <haible@clisp.cons.org>
 
index 32a639a..20f889e 100644 (file)
@@ -123,12 +123,12 @@ enum
    the output state to the initial state.  This has to be done during the
    flushing.  */
 #define EMIT_SHIFT_TO_INIT \
-  if (data->__statep->__count >> 2 != ASCII_set)                             \
+  if (data->__statep->__count >> 3 != ASCII_set)                             \
     {                                                                        \
       if (FROM_DIRECTION)                                                    \
        /* It's easy, we don't have to emit anything, we just reset the       \
           state for the input.  */                                           \
-       data->__statep->__count = ASCII_set << 2;                             \
+       data->__statep->__count = ASCII_set << 3;                             \
       else                                                                   \
        {                                                                     \
          unsigned char *outbuf = data->__outbuf;                             \
@@ -145,7 +145,7 @@ enum
              if (data->__flags & __GCONV_IS_LAST)                            \
                *irreversible += 1;                                           \
              data->__outbuf = outbuf;                                        \
-             data->__statep->__count = ASCII_set << 2;                       \
+             data->__statep->__count = ASCII_set << 3;                       \
            }                                                                 \
        }                                                                     \
     }
@@ -394,9 +394,9 @@ enum
     *((uint32_t *) outptr)++ = ch;                                           \
   }
 #define EXTRA_LOOP_DECLS       , int *setp
-#define INIT_PARAMS            int set = (*setp >> 2) & CURRENT_MASK; \
-                               int ann = (*setp >> 2) & ~CURRENT_MASK
-#define UPDATE_PARAMS          *setp = (set | ann) << 2
+#define INIT_PARAMS            int set = (*setp >> 3) & CURRENT_MASK; \
+                               int ann = (*setp >> 3) & ~CURRENT_MASK
+#define UPDATE_PARAMS          *setp = (set | ann) << 3
 #define LOOP_NEED_FLAGS
 #include <iconv/loop.c>
 
@@ -644,9 +644,9 @@ enum
     inptr += 4;                                                                      \
   }
 #define EXTRA_LOOP_DECLS       , int *setp
-#define INIT_PARAMS            int set = (*setp >> 2) & CURRENT_MASK; \
-                               int ann = (*setp >> 2) & ~CURRENT_MASK
-#define UPDATE_PARAMS          *setp = (set | ann) << 2
+#define INIT_PARAMS            int set = (*setp >> 3) & CURRENT_MASK; \
+                               int ann = (*setp >> 3) & ~CURRENT_MASK
+#define UPDATE_PARAMS          *setp = (set | ann) << 3
 #define LOOP_NEED_FLAGS
 #include <iconv/loop.c>
 
index 42419bf..c86adee 100644 (file)
@@ -368,7 +368,7 @@ _IO_doallocbuf (fp)
 {
   if (fp->_IO_buf_base)
     return;
-  if (!(fp->_flags & _IO_UNBUFFERED))
+  if (!(fp->_flags & _IO_UNBUFFERED) || fp->_mode > 0)
     if (_IO_DOALLOCATE (fp) != EOF)
       return;
   _IO_setb (fp, fp->_shortbuf, fp->_shortbuf+1, 0);
index e6e3327..0c5d784 100644 (file)
@@ -134,6 +134,8 @@ prefix  6d      6o      6x      6X      6u
 0.10000000000000009
 Test ok.
 sprintf (buf, "%07Lo", 040000000000ll) = 40000000000
+printf ("%hhu", 257) = 1
+printf ("%hu", 65537) = 1
 --- Should be no further output. ---
 EOF
 cmp - ${common_objpfx}stdio-common/tst-printf.out >& /dev/null ||
@@ -243,6 +245,8 @@ prefix  6d      6o      6x      6X      6u
 0.10000000000000009
 Test ok.
 sprintf (buf, "%07Lo", 040000000000ll) = 40000000000
+printf ("%hhu", 257) = 1
+printf ("%hu", 65537) = 1
 --- Should be no further output. ---
 EOF
 cmp - ${common_objpfx}stdio-common/tst-printf.out >& /dev/null ||
index adfb651..822728e 100644 (file)
@@ -2062,6 +2062,11 @@ buffered_vfprintf (register _IO_FILE *s, const CHAR_T *format,
   register _IO_FILE *hp = (_IO_FILE *) &helper._f;
   int result, to_flush;
 
+  /* Orient the stream.  */
+#ifdef ORIENT
+  ORIENT;
+#endif
+
   /* Initialize helper.  */
   helper._put_stream = s;
 #ifdef COMPILE_WPRINTF
@@ -2122,6 +2127,11 @@ buffered_vfprintf (register FILE *s, const CHAR_T *format, va_list args)
   char buf[BUFSIZ];
   int result;
 
+  /* Orient the stream.  */
+#ifdef ORIENT
+  ORIENT;
+#endif
+
   s->__bufp = s->__buffer = buf;
   s->__bufsize = sizeof buf;
   s->__put_limit = s->__buffer + s->__bufsize;