1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
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:
Ulrich Drepper
1999-06-21 13:38:44 +00:00
parent 8811906f25
commit 655c069718
15 changed files with 194 additions and 120 deletions

View File

@ -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> 1999-06-20 Ulrich Drepper <drepper@cygnus.com>
* wcsmbs/wchar.h: Declare wcstof and wcstold for ISO C9x. * wcsmbs/wchar.h: Declare wcstof and wcstold for ISO C9x.

View File

@ -272,8 +272,7 @@
#endif /* !ASSEMBLER */ #endif /* !ASSEMBLER */
/* Decide whether we can define 'extern inline' functions in headers. */ /* Decide whether we can define 'extern inline' functions in headers. */
#if defined __GNUC__ && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7)\ #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
&& defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__
# define __USE_EXTERN_INLINES 1 # define __USE_EXTERN_INLINES 1
#endif #endif

View File

@ -30,7 +30,6 @@ routines := \
ioseekoff ioseekpos iosetbuffer iosetvbuf iosprintf ioungetc \ ioseekoff ioseekpos iosetbuffer iosetvbuf iosprintf ioungetc \
iovsprintf iovsscanf \ iovsprintf iovsscanf \
iofgetpos64 iofopen64 iofsetpos64 \ iofgetpos64 iofopen64 iofsetpos64 \
oldiofgetpos oldiofgetpos64 oldiofsetpos oldiofsetpos64 \
fputwc fputwc_u getwc getwc_u getwchar getwchar_u iofgetws iofgetws_u \ fputwc fputwc_u getwc getwc_u getwchar getwchar_u iofgetws iofgetws_u \
iofputws iofputws_u iogetwline iowpadn ioungetwc putwc putwc_u \ iofputws iofputws_u iogetwline iowpadn ioungetwc putwc putwc_u \
putchar putchar_u swprintf vwprintf wprintf wscanf fwscanf vwscanf \ putchar putchar_u swprintf vwprintf wprintf wscanf fwscanf vwscanf \
@ -51,7 +50,8 @@ include ../Makeconfig
ifeq ($(versioning),yes) ifeq ($(versioning),yes)
routines += oldiofopen oldiofdopen oldiofclose oldiopopen oldpclose \ routines += oldiofopen oldiofdopen oldiofclose oldiopopen oldpclose \
oldtmpfile oldtmpfile oldiofgetpos oldiofgetpos64 oldiofsetpos \
oldiofsetpos64
endif endif
ifneq (,$(filter %REENTRANT, $(defines))) ifneq (,$(filter %REENTRANT, $(defines)))
@ -69,7 +69,9 @@ aux += oldfileops oldstdfiles
endif endif
shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \ 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 distribute := iolibio.h libioP.h strfile.h Banner

View File

@ -90,7 +90,7 @@ _IO_setvbuf (fp, buf, mode, size)
goto unlock_return; goto unlock_return;
} }
result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0; 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. */ /* We also have to set the buffer using the wide char function. */
result = ((*fp->_wide_data->_wide_vtable->__setbuf) (fp, buf, size) == NULL result = ((*fp->_wide_data->_wide_vtable->__setbuf) (fp, buf, size) == NULL
? EOF : 0); ? EOF : 0);

View File

@ -140,6 +140,8 @@ _IO_old_proc_open (fp, command, mode)
if (child_pid == 0) if (child_pid == 0)
{ {
int child_std_end = mode[0] == 'r' ? 1 : 0; int child_std_end = mode[0] == 'r' ? 1 : 0;
struct _IO_proc_file *p;
_IO_close (parent_end); _IO_close (parent_end);
if (child_end != child_std_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 /* POSIX.2: "popen() shall ensure that any streams from previous
popen() calls that remain open in the parent process are closed popen() calls that remain open in the parent process are closed
in the new child process." */ in the new child process." */
while (old_proc_file_chain) for (p = old_proc_file_chain; p; p = p->next)
{ _IO_close (_IO_fileno ((_IO_FILE *) p));
_IO_close (_IO_fileno ((_IO_FILE *) old_proc_file_chain));
old_proc_file_chain = old_proc_file_chain->next;
}
_IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0); _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0);
_IO__exit (127); _IO__exit (127);

View File

@ -421,7 +421,7 @@ _IO_wfile_seekoff (fp, offset, dir, mode)
if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base
|| _IO_in_put_mode (fp)) || _IO_in_put_mode (fp))
if (_IO_switch_to_get_mode (fp)) if (_IO_switch_to_wget_mode (fp))
return WEOF; return WEOF;
if (fp->_wide_data->_IO_buf_base == NULL) 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(overflow, (_IO_overflow_t) _IO_wfile_overflow),
JUMP_INIT(underflow, (_IO_underflow_t) _IO_wfile_underflow), JUMP_INIT(underflow, (_IO_underflow_t) _IO_wfile_underflow),
JUMP_INIT(uflow, (_IO_underflow_t) _IO_wdefault_uflow), 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(xsputn, _IO_wfile_xsputn),
JUMP_INIT(xsgetn, _IO_file_xsgetn), JUMP_INIT(xsgetn, _IO_file_xsgetn),
JUMP_INIT(seekoff, _IO_wfile_seekoff), JUMP_INIT(seekoff, _IO_wfile_seekoff),

View File

@ -239,12 +239,12 @@ __wuflow (fp)
_IO_FILE *fp; _IO_FILE *fp;
{ {
if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1)) if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1))
return EOF; return WEOF;
if (fp->_mode == 0) if (fp->_mode == 0)
_IO_fwide (fp, 1); _IO_fwide (fp, 1);
if (_IO_in_put_mode (fp)) if (_IO_in_put_mode (fp))
if (_IO_switch_to_get_mode (fp) == EOF) if (_IO_switch_to_wget_mode (fp) == EOF)
return WEOF; return WEOF;
if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
return *fp->_wide_data->_IO_read_ptr++; return *fp->_wide_data->_IO_read_ptr++;
@ -270,10 +270,10 @@ __wunderflow (fp)
_IO_FILE *fp; _IO_FILE *fp;
{ {
if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1)) if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1))
return EOF; return WEOF;
if (_IO_in_put_mode (fp)) if (_IO_in_put_mode (fp))
if (_IO_switch_to_wget_mode (fp) == WEOF) if (_IO_switch_to_wget_mode (fp) == EOF)
return WEOF; return WEOF;
if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end) if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
return *fp->_wide_data->_IO_read_ptr; return *fp->_wide_data->_IO_read_ptr;
@ -286,7 +286,7 @@ __wunderflow (fp)
if (_IO_have_markers (fp)) if (_IO_have_markers (fp))
{ {
if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end)) if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end))
return EOF; return WEOF;
} }
else if (_IO_have_backup (fp)) else if (_IO_have_backup (fp))
_IO_free_wbackup_area (fp); _IO_free_wbackup_area (fp);
@ -447,7 +447,7 @@ _IO_switch_to_wget_mode (fp)
_IO_FILE *fp; _IO_FILE *fp;
{ {
if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base) 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; return EOF;
if (_IO_in_backup (fp)) if (_IO_in_backup (fp))
fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_backup_base; fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_backup_base;
@ -663,7 +663,7 @@ _IO_init_wmarker (marker, fp)
{ {
marker->_sbuf = fp; marker->_sbuf = fp;
if (_IO_in_put_mode (fp)) if (_IO_in_put_mode (fp))
_IO_switch_to_get_mode (fp); _IO_switch_to_wget_mode (fp);
if (_IO_in_backup (fp)) if (_IO_in_backup (fp))
marker->_pos = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end; marker->_pos = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end;
else else

View File

@ -106,7 +106,7 @@ find_spec (const UCHAR_T *format, mbstate_t *ps)
/* Remove any hints of a wrong encoding. */ /* Remove any hints of a wrong encoding. */
ps->count = 0; 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; format += len;
else else
++format; ++format;
@ -355,12 +355,12 @@ parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
switch (spec->info.spec) switch (spec->info.spec)
{ {
case L_('i'): case L'i':
case L_('d'): case L'd':
case L_('u'): case L'u':
case L_('o'): case L'o':
case L_('X'): case L'X':
case L_('x'): case L'x':
#if LONG_MAX != LONG_LONG_MAX #if LONG_MAX != LONG_LONG_MAX
if (spec->info.is_long_double) if (spec->info.is_long_double)
spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG; 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 else
spec->data_arg_type = PA_INT; spec->data_arg_type = PA_INT;
break; break;
case L_('e'): case L'e':
case L_('E'): case L'E':
case L_('f'): case L'f':
case L_('g'): case L'g':
case L_('G'): case L'G':
case L_('a'): case L'a':
case L_('A'): case L'A':
if (spec->info.is_long_double) if (spec->info.is_long_double)
spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE; spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
else else
spec->data_arg_type = PA_DOUBLE; spec->data_arg_type = PA_DOUBLE;
break; break;
case L_('c'): case L'c':
spec->data_arg_type = PA_CHAR; spec->data_arg_type = PA_CHAR;
break; break;
case L_('C'): case L'C':
spec->data_arg_type = PA_WCHAR; spec->data_arg_type = PA_WCHAR;
break; break;
case L_('s'): case L's':
spec->data_arg_type = PA_STRING; spec->data_arg_type = PA_STRING;
break; break;
case L_('S'): case L'S':
spec->data_arg_type = PA_WSTRING; spec->data_arg_type = PA_WSTRING;
break; break;
case L_('p'): case L'p':
spec->data_arg_type = PA_POINTER; spec->data_arg_type = PA_POINTER;
break; break;
case L_('n'): case L'n':
spec->data_arg_type = PA_INT|PA_FLAG_PTR; spec->data_arg_type = PA_INT|PA_FLAG_PTR;
break; break;
case L_('m'): case L'm':
default: default:
/* An unknown spec will consume no args. */ /* An unknown spec will consume no args. */
spec->ndata_args = 0; spec->ndata_args = 0;

View File

@ -70,8 +70,6 @@
# define INT_T int # define INT_T int
# define L_(Str) Str # define L_(Str) Str
# define ISDIGIT(Ch) isdigit (Ch) # 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 PUT(F, S, N) _IO_sputn ((F), (S), (N))
# define PAD(Padchar) \ # define PAD(Padchar) \
@ -89,8 +87,6 @@
# define INT_T wint_t # define INT_T wint_t
# define L_(Str) L##Str # define L_(Str) L##Str
# define ISDIGIT(Ch) iswdigit (Ch) # 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 PUT(F, S, N) _IO_sputn ((F), (S), (N))
# define PAD(Padchar) \ # define PAD(Padchar) \
@ -99,9 +95,8 @@
# define PUTC(C, F) _IO_putwc_unlocked (C, F) # define PUTC(C, F) _IO_putwc_unlocked (C, F)
# define ORIENT if (_IO_fwide (s, 1) != 1) return -1 # 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(Val, Buf, Base, Case) _itowa (Val, Buf, Base, Case)
# define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, (wchar_t *) Buf, \ # define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, Buf, Base, Case)
Base, Case)
# undef EOF # undef EOF
# define EOF WEOF # define EOF WEOF
# endif # endif
@ -199,8 +194,7 @@ static int printf_unknown __P ((FILE *, const struct printf_info *,
const void *const *)); const void *const *));
/* Group digits of number string. */ /* Group digits of number string. */
static UCHAR_T *group_number __P ((UCHAR_T *, UCHAR_T *, const char *, static CHAR_T *group_number __P ((CHAR_T *, CHAR_T *, const char *, wchar_t))
wchar_t))
internal_function; internal_function;
@ -227,8 +221,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
const UCHAR_T *end_of_spec; const UCHAR_T *end_of_spec;
/* Buffer intermediate results. */ /* Buffer intermediate results. */
UCHAR_T work_buffer[1000]; CHAR_T work_buffer[1000];
UCHAR_T *workend; CHAR_T *workend;
/* State for restartable multibyte character handling functions. */ /* State for restartable multibyte character handling functions. */
#ifndef COMPILE_WPRINTF #ifndef COMPILE_WPRINTF
@ -275,8 +269,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
/* 'x' */ 18, 0, /* 'z' */ 13 /* 'x' */ 18, 0, /* 'z' */ 13
}; };
#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < ' ' || (Ch) > 'z') #define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z'))
#define CHAR_CLASS(Ch) (jump_table[(int) (Ch) - ' ']) #define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')])
#define JUMP(ChExpr, table) \ #define JUMP(ChExpr, table) \
do \ do \
{ \ { \
@ -593,7 +587,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
else \ else \
{ \ { \
/* Put the number in WORK. */ \ /* Put the number in WORK. */ \
string = (UCHAR_T *) _itoa (number.longlong, workend + 1, base, \ string = _itoa (number.longlong, workend + 1, base, \
spec == L_('X')); \ spec == L_('X')); \
string -= 1; \ string -= 1; \
if (group && grouping) \ if (group && grouping) \
@ -647,8 +641,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
else \ else \
{ \ { \
/* Put the number in WORK. */ \ /* Put the number in WORK. */ \
string = (UCHAR_T *) _itoa_word (number.word, workend + 1, \ string = _itoa_word (number.word, workend + 1, base, \
base, spec == L_('X')); \ spec == L_('X')); \
string -= 1; \ string -= 1; \
if (group && grouping) \ if (group && grouping) \
string = group_number (string, workend, grouping, \ string = group_number (string, workend, grouping, \
@ -858,13 +852,13 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
is_negative = 0; \ is_negative = 0; \
alt = 1; \ alt = 1; \
group = 0; \ group = 0; \
spec = 'x'; \ spec = L_('x'); \
goto LABEL (number); \ goto LABEL (number); \
} \ } \
else \ else \
{ \ { \
/* Write "(nil)" for a nil pointer. */ \ /* Write "(nil)" for a nil pointer. */ \
string = (UCHAR_T *) L_("(nil)"); \ string = (CHAR_T *) L_("(nil)"); \
/* Make sure the full string "(nil)" is printed. */ \ /* Make sure the full string "(nil)" is printed. */ \
if (prec < 5) \ if (prec < 5) \
prec = 5; \ prec = 5; \
@ -901,7 +895,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
LABEL (form_strerror): \ LABEL (form_strerror): \
/* Print description of error ERRNO. */ \ /* Print description of error ERRNO. */ \
string = \ string = \
(UCHAR_T *) __strerror_r (save_errno, (char *) work_buffer, \ (CHAR_T *) __strerror_r (save_errno, (char *) work_buffer, \
sizeof work_buffer); \ sizeof work_buffer); \
is_long = 0; /* This is no wide-char string. */ \ is_long = 0; /* This is no wide-char string. */ \
goto LABEL (print_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 *'. \ /* The string argument could in fact be `char *' or `wchar_t *'. \
But this should not make a difference here. */ \ But this should not make a difference here. */ \
if (fspec == NULL) \ if (fspec == NULL) \
string = (UCHAR_T *) va_arg (ap, const wchar_t *); \ string = (CHAR_T *) va_arg (ap, const wchar_t *); \
else \ 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. */ \ /* Entry point for printing other strings. */ \
LABEL (print_string): \ LABEL (print_string): \
@ -958,12 +952,12 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
if (prec == -1 \ if (prec == -1 \
|| prec >= (int) (sizeof (null) / sizeof (null[0])) - 1) \ || prec >= (int) (sizeof (null) / sizeof (null[0])) - 1) \
{ \ { \
string = (UCHAR_T *) null; \ string = (CHAR_T *) null; \
len = (sizeof (null) / sizeof (null[0])) - 1; \ len = (sizeof (null) / sizeof (null[0])) - 1; \
} \ } \
else \ else \
{ \ { \
string = (UCHAR_T *) L""; \ string = (CHAR_T *) L""; \
len = 0; \ len = 0; \
} \ } \
} \ } \
@ -978,10 +972,10 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
\ \
/* Allocate dynamically an array which definitely is long \ /* Allocate dynamically an array which definitely is long \
enough for the wide character version. */ \ 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)); \ 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) \ if (len == (size_t) -1) \
{ \ { \
/* Illegal multibyte character. */ \ /* Illegal multibyte character. */ \
@ -994,9 +988,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
if (prec != -1) \ if (prec != -1) \
/* Search for the end of the string, but don't search past \ /* Search for the end of the string, but don't search past \
the length specified by the precision. */ \ the length specified by the precision. */ \
len = __wcsnlen ((wchar_t *) string, prec); \ len = __wcsnlen (string, prec); \
else \ else \
len = __wcslen ((wchar_t *) string); \ len = __wcslen (string); \
} \ } \
\ \
if ((width -= len) < 0) \ if ((width -= len) < 0) \
@ -1199,7 +1193,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
} number; } number;
int base; int base;
union printf_arg the_arg; 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 alt = 0; /* Alternate format. */
int space = 0; /* Use space prefix if no sign is needed. */ int space = 0; /* Use space prefix if no sign is needed. */
int left = 0; /* Left-justify output. */ 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])) if (width + 32 >= sizeof (work_buffer) / sizeof (work_buffer[0]))
/* We have to use a special buffer. The "32" is just a safe /* 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. */ 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)); + (width + 31));
} }
JUMP (*f, step1_jumps); 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])) if (width + 32 >= sizeof (work_buffer) / sizeof (work_buffer[0]))
/* We have to use a special buffer. The "32" is just a safe /* 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. */ 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)); + (width + 31));
if (*f == L_('$')) if (*f == L_('$'))
/* Oh, oh. The argument comes from a positional parameter. */ /* Oh, oh. The argument comes from a positional parameter. */
@ -1579,7 +1573,7 @@ do_positional:
} number; } number;
int base; int base;
union printf_arg the_arg; 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. */ /* Fill variables from values in struct. */
int alt = specs[nspecs_done].info.alt; int alt = specs[nspecs_done].info.alt;
@ -1628,9 +1622,9 @@ do_positional:
} }
/* Maybe the buffer is too small. */ /* Maybe the buffer is too small. */
if (MAX (prec, width) + 32 > sizeof (work_buffer) / sizeof (UCHAR_T)) if (MAX (prec, width) + 32 > sizeof (work_buffer) / sizeof (CHAR_T))
workend = ((UCHAR_T *) alloca ((MAX (prec, width) + 32) workend = ((CHAR_T *) alloca ((MAX (prec, width) + 32)
* sizeof (UCHAR_T)) * sizeof (CHAR_T))
+ (MAX (prec, width) + 31)); + (MAX (prec, width) + 31));
/* Process format specifiers. */ /* Process format specifiers. */
@ -1707,8 +1701,8 @@ printf_unknown (FILE *s, const struct printf_info *info,
{ {
int done = 0; int done = 0;
CHAR_T work_buffer[MAX (info->width, info->spec) + 32]; CHAR_T work_buffer[MAX (info->width, info->spec) + 32];
CHAR_T *const workend = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T) CHAR_T *const workend
- 1]; = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T) - 1];
register CHAR_T *w; register CHAR_T *w;
outchar (L_('%')); outchar (L_('%'));
@ -1723,7 +1717,7 @@ printf_unknown (FILE *s, const struct printf_info *info,
outchar (L_(' ')); outchar (L_(' '));
if (info->left) if (info->left)
outchar (L_('-')); outchar (L_('-'));
if (info->pad == '0') if (info->pad == L_('0'))
outchar (L_('0')); outchar (L_('0'));
if (info->width != 0) if (info->width != 0)
@ -1735,7 +1729,7 @@ printf_unknown (FILE *s, const struct printf_info *info,
if (info->prec != -1) if (info->prec != -1)
{ {
outchar ('.'); outchar (L_('.'));
w = _itoa_word (info->prec, workend + 1, 10, 0); w = _itoa_word (info->prec, workend + 1, 10, 0);
while (w <= workend) while (w <= workend)
outchar (*w++); 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. /* Group the digits according to the grouping rules of the current locale.
The interpretation of GROUPING is as in `struct lconv' from <locale.h>. */ The interpretation of GROUPING is as in `struct lconv' from <locale.h>. */
static UCHAR_T * static CHAR_T *
internal_function 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) wchar_t thousands_sep)
{ {
int len; int len;
UCHAR_T *src, *s; CHAR_T *src, *s;
/* We treat all negative values like CHAR_MAX. */ /* 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; len = *grouping;
/* Copy existing string so that nothing gets overwritten. */ /* Copy existing string so that nothing gets overwritten. */
src = (UCHAR_T *) alloca ((rear_ptr - w) * sizeof (UCHAR_T)); src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
s = (UCHAR_T *) __mempcpy (src, w + 1, s = (CHAR_T *) __mempcpy (src, w + 1,
(rear_ptr - w) * sizeof (UCHAR_T)) - 1; (rear_ptr - w) * sizeof (CHAR_T)) - 1;
w = rear_ptr; w = rear_ptr;
/* Process all characters in the string. */ /* Process all characters in the string. */

View File

@ -72,18 +72,17 @@
# define va_list _IO_va_list # define va_list _IO_va_list
# ifdef COMPILE_WPRINTF # ifdef COMPILE_WPRINTF
# define ungetc(c, s) ((void) ((int) c == WEOF \ # define ungetc(c, s) ((void) (c == WEOF \
|| (--read_in, \ || (--read_in, \
_IO_sputbackwc (s, (unsigned char) c)))) _IO_sputbackwc (s, c))))
# define inchar() (c == EOF ? EOF \ # define inchar() (c == WEOF ? WEOF \
: ((c = _IO_getwc_unlocked (s)), \ : ((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 MEMCPY(d, s, n) wmemcpy (d, s, n)
# define ISSPACE(Ch) iswspace (Ch) # define ISSPACE(Ch) iswspace (Ch)
# define ISDIGIT(Ch) iswdigit (Ch) # define ISDIGIT(Ch) iswdigit (Ch)
# define ISXDIGIT(Ch) iswxdigit (Ch) # define ISXDIGIT(Ch) iswxdigit (Ch)
# define UNGETC(Ch, S) ungetwc (Ch, S)
# define TOLOWER(Ch) towlower (Ch) # define TOLOWER(Ch) towlower (Ch)
# define ORIENT if (_IO_fwide (s, 1) != 1) return EOF # define ORIENT if (_IO_fwide (s, 1) != 1) return EOF
# define __strtoll_internal __wcstoll_internal # define __strtoll_internal __wcstoll_internal
@ -109,7 +108,6 @@
# define ISSPACE(Ch) isspace (Ch) # define ISSPACE(Ch) isspace (Ch)
# define ISDIGIT(Ch) isdigit (Ch) # define ISDIGIT(Ch) isdigit (Ch)
# define ISXDIGIT(Ch) isxdigit (Ch) # define ISXDIGIT(Ch) isxdigit (Ch)
# define UNGETC(Ch, S) ungetc (Ch, S)
# define TOLOWER(Ch) tolower (Ch) # define TOLOWER(Ch) tolower (Ch)
# define ORIENT if (_IO_fwide (s, -1) != -1) return EOF # 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) if (c != fc)
{ {
UNGETC (c, s); ungetc (c, s);
conv_error (); conv_error ();
} }
@ -578,7 +576,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
input_error (); input_error ();
while (ISSPACE (c)); while (ISSPACE (c));
errno = save_errno; errno = save_errno;
UNGETC (c, s); ungetc (c, s);
skip_space = 0; skip_space = 0;
} }
@ -810,7 +808,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
{ {
if (ISSPACE (c)) if (ISSPACE (c))
{ {
UNGETC (c, s); ungetc (c, s);
break; break;
} }
@ -974,7 +972,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
{ {
if (ISSPACE (c)) if (ISSPACE (c))
{ {
UNGETC (c, s); ungetc (c, s);
break; break;
} }
@ -1214,14 +1212,14 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
{ {
/* The last read character is not part of the number /* The last read character is not part of the number
anymore. */ anymore. */
UNGETC (c, s); ungetc (c, s);
conv_error (); conv_error ();
} }
} }
else else
/* The just read character is not part of the number anymore. */ /* The just read character is not part of the number anymore. */
UNGETC (c, s); ungetc (c, s);
/* Convert the number. */ /* Convert the number. */
ADDW (L_('\0')); ADDW (L_('\0'));
@ -1296,7 +1294,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
if (! ISDIGIT (c) && c != decimal) if (! ISDIGIT (c) && c != decimal)
{ {
/* This is no valid number. */ /* This is no valid number. */
UNGETC (c, s); ungetc (c, s);
input_error (); input_error ();
} }
if (width > 0) if (width > 0)
@ -1351,7 +1349,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
} }
else else
/* Never mind. */ /* Never mind. */
UNGETC (c, s); ungetc (c, s);
} }
goto scan_float; 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 /* The last read character is not part of the number
anymore. */ anymore. */
UNGETC (c, s); ungetc (c, s);
break; break;
} }
if (width > 0) if (width > 0)
@ -1949,7 +1947,7 @@ __vfscanf (FILE *s, const char *format, va_list argptr)
{ {
do do
c = inchar (); c = inchar ();
while (isspace (c)); while (ISSPACE (c));
ungetc (c, s); ungetc (c, s);
} }

View File

@ -65,8 +65,8 @@ static const struct ltest tests[] =
{"922337203685477580777", 9223372036854775807ll, 0, 0, ERANGE}, {"922337203685477580777", 9223372036854775807ll, 0, 0, ERANGE},
{"9223372036854775810", 9223372036854775807ll, 0, 0, ERANGE}, {"9223372036854775810", 9223372036854775807ll, 0, 0, ERANGE},
{"-2147483648", -2147483648ll, 0, 0, 0}, {"-2147483648", -2147483648ll, 0, 0, 0},
{"-9223372036854775808", -9223372036854775808ll, 0, 0, 0}, {"-9223372036854775808", -9223372036854775807ll - 1, 0, 0, 0},
{"-9223372036854775809", -9223372036854775808ll, 0, 0, ERANGE}, {"-9223372036854775809", -9223372036854775807ll - 1, 0, 0, ERANGE},
{"0x112233445566778899z", 9223372036854775807ll, 16, 'z', ERANGE}, {"0x112233445566778899z", 9223372036854775807ll, 16, 'z', ERANGE},
{NULL, 0, 0, 0, 0}, {NULL, 0, 0, 0, 0},

View File

@ -36,10 +36,10 @@ exchange_and_add (volatile uint32_t *mem, int val)
"addl %0,%4,%1\n\t" "addl %0,%4,%1\n\t"
"stl_c %1,%2\n\t" "stl_c %1,%2\n\t"
"beq %1,2f\n" "beq %1,2f\n"
".subsection 2\n" ".subsection 1\n"
"2:\t" "2:\t"
"br 1b\n" "br 1b\n"
".subsection 1\n\t" ".previous\n\t"
"mb\n\t" "mb\n\t"
"/* End exchange & add */" "/* End exchange & add */"
: "=&r"(result), "=&r"(tmp), "=m"(*mem) : "=&r"(result), "=&r"(tmp), "=m"(*mem)
@ -61,10 +61,10 @@ atomic_add (volatile uint32_t *mem, int val)
"addl %0,%3,%0\n\t" "addl %0,%3,%0\n\t"
"stl_c %0,%1\n\t" "stl_c %0,%1\n\t"
"beq %0,2f\n\t" "beq %0,2f\n\t"
".subsection 2\n" ".subsection 1\n"
"2:\t" "2:\t"
"br 1b\n" "br 1b\n"
".subsection 1\n\t" ".previous\n\t"
"mb\n\t" "mb\n\t"
"/* End exchange & add */" "/* End exchange & add */"
: "=&r"(result), "=m"(*mem) : "=&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" "mov %3,%0\n\t"
"stq_c %0,%1\n\t" "stq_c %0,%1\n\t"
"beq %0,2f\n\t" "beq %0,2f\n\t"
".subsection 2\n" ".subsection 1\n"
"2:\t" "2:\t"
"br 1b\n" "br 1b\n"
".subsection 1\n\t" ".previous\n\t"
"3:\t" "3:\t"
"mb\n\t" "mb\n\t"
"/* End compare & swap */" "/* End compare & swap */"

View File

@ -112,7 +112,7 @@
/* The gcc, version 2.7 or below, has problems with all this inlining /* The gcc, version 2.7 or below, has problems with all this inlining
code. So disable it for this version of the compiler. */ 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. */ /* Test for negative number. Used in the signbit() macro. */
__MATH_INLINE int __MATH_INLINE int
__signbitf (float __x) __signbitf (float __x)

View File

@ -32,6 +32,8 @@
/* Get FILE definition. */ /* Get FILE definition. */
# define __need_FILE # define __need_FILE
# include <stdio.h> # include <stdio.h>
/* Get va_list definition. */
# define __need___va_list
# include <stdarg.h> # include <stdarg.h>
/* Get size_t, wchar_t, wint_t and NULL from <stddef.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. */ /* Wide character I/O functions. */
#ifdef __USE_ISOC9X
/* Select orientation for stream. */ /* Select orientation for stream. */
extern int fwide __P ((FILE *__fp, int __mode)); 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. */ /* Write formatted output to S from argument list ARG. */
extern int vfwprintf __P ((FILE *__restrict __s, extern int vfwprintf __P ((FILE *__restrict __s,
__const wchar_t *__restrict __format, __const wchar_t *__restrict __format,
va_list __arg)) __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wprintf__, 2, 0))) */; /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
/* Write formatted output to stdout from argument list ARG. */ /* Write formatted output to stdout from argument list ARG. */
extern int vwprintf __P ((__const wchar_t *__restrict __format, extern int vwprintf __P ((__const wchar_t *__restrict __format,
va_list __arg)) __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wprintf__, 1, 0))) */; /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
/* Write formatted output of at most N character to S from argument /* Write formatted output of at most N character to S from argument
list ARG. */ list ARG. */
extern int vswprintf __P ((wchar_t *__restrict __s, size_t __n, extern int vswprintf __P ((wchar_t *__restrict __s, size_t __n,
__const wchar_t *__restrict __format, __const wchar_t *__restrict __format,
va_list __arg)) __gnuc_va_list __arg))
/* __attribute__ ((__format__ (__wprintf__, 3, 0))) */; /* __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. */ /* Read formatted input from S into argument list ARG. */
extern int vfwscanf __P ((FILE *__restrict __s, 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))) */; /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
/* Read formatted input from stdin into argument list ARG. */ /* 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))) */; /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
/* Read formatted input from S into argument list ARG. */ /* Read formatted input from S into argument list ARG. */
extern int vswscanf __P ((__const wchar_t *__restrict __s, 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))) */; /* __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, extern size_t wcsftime __P ((wchar_t *__restrict __s, size_t __maxsize,
__const wchar_t *__restrict __format, __const wchar_t *__restrict __format,
__const struct tm *__restrict __tp)); __const struct tm *__restrict __tp));
#endif /* Use ISO C9x. */
/* The X/Open standard demands that most of the functions defined in /* The X/Open standard demands that most of the functions defined in
the <wctype.h> header must also appear here. This is probably the <wctype.h> header must also appear here. This is probably

View File

@ -31,6 +31,6 @@ __wcschrnul (wcs, wc)
else else
++wcs; ++wcs;
return wcs; return (wchar_t *) wcs;
} }
weak_alias (__wcschrnul, wcschrnul) weak_alias (__wcschrnul, wcschrnul)