+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
* 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>
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; \
if (data->__flags & __GCONV_IS_LAST) \
*irreversible += 1; \
data->__outbuf = outbuf; \
- data->__statep->__count = ASCII_set << 2; \
+ data->__statep->__count = ASCII_set << 3; \
} \
} \
}
*((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>
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>
{
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);
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 ||
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 ||
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
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;