aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-09-25 05:12:05 +0000
committerUlrich Drepper <drepper@redhat.com>2000-09-25 05:12:05 +0000
commit655de5fdf21929f7f11d2307b13aeb66a1b47181 (patch)
tree8deedccf086bd131de3bbc17f663dd8c9eac0a16
parentd90e1b429546fc546e624769b213a0620de36951 (diff)
downloadglibc-655de5fdf21929f7f11d2307b13aeb66a1b47181.zip
glibc-655de5fdf21929f7f11d2307b13aeb66a1b47181.tar.gz
glibc-655de5fdf21929f7f11d2307b13aeb66a1b47181.tar.bz2
Update.
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>.
-rw-r--r--ChangeLog17
-rw-r--r--iconvdata/iso-2022-cn-ext.c18
-rw-r--r--libio/genops.c2
-rw-r--r--stdio-common/tst-printf.sh4
-rw-r--r--stdio-common/vfprintf.c10
5 files changed, 40 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 0955752..e3c06c3 100644
--- 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>
diff --git a/iconvdata/iso-2022-cn-ext.c b/iconvdata/iso-2022-cn-ext.c
index 32a639a..20f889e 100644
--- a/iconvdata/iso-2022-cn-ext.c
+++ b/iconvdata/iso-2022-cn-ext.c
@@ -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>
diff --git a/libio/genops.c b/libio/genops.c
index 42419bf..c86adee 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -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);
diff --git a/stdio-common/tst-printf.sh b/stdio-common/tst-printf.sh
index e6e3327..0c5d784 100644
--- a/stdio-common/tst-printf.sh
+++ b/stdio-common/tst-printf.sh
@@ -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 ||
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index adfb651..822728e 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -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;