mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 03:33:33 +08:00
Update.
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.
This commit is contained in:
parent
8811906f25
commit
655c069718
76
ChangeLog
76
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.
|
||||
|
@ -272,8 +272,7 @@
|
||||
#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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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),
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
||||
/* 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. */
|
||||
|
@ -72,18 +72,17 @@
|
||||
# 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
|
||||
@ -109,7 +108,6 @@
|
||||
# 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);
|
||||
}
|
||||
|
||||
|
@ -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},
|
||||
|
||||
|
@ -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 */"
|
||||
|
@ -112,7 +112,7 @@
|
||||
|
||||
/* 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)
|
||||
|
@ -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
|
||||
|
@ -31,6 +31,6 @@ __wcschrnul (wcs, wc)
|
||||
else
|
||||
++wcs;
|
||||
|
||||
return wcs;
|
||||
return (wchar_t *) wcs;
|
||||
}
|
||||
weak_alias (__wcschrnul, wcschrnul)
|
||||
|
Loading…
Reference in New Issue
Block a user