From: Ulrich Drepper Date: Mon, 25 Sep 2000 05:12:05 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/libc-2_1_95~91 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=655de5fdf21929f7f11d2307b13aeb66a1b47181;p=platform%2Fupstream%2Fglibc.git Update. 2000-09-24 Ulrich Drepper * 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 * 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 . --- diff --git a/ChangeLog b/ChangeLog index 0955752..e3c06c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2000-09-24 Ulrich Drepper + + * 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 + + * 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 * 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 . + handling. + * stdio/tst-printf.sh: Adjust expected results. + Reported by Joseph S. Myers . 2000-09-20 Bruno Haible 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 @@ -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 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;