From 655c0697188085dea9377402e5fe9eadbe591a4f Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 21 Jun 1999 13:38:44 +0000 Subject: Update. 1999-06-18 Thorsten Kukuk * sysdeps/alpha/atomicity.h: Correct counting of subsections. 1999-06-17 Andreas Schwab * stdlib/tst-strtoll.c: Avoid warning about huge constant. 1999-06-20 Andreas Schwab * 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 * wcsmbs/wcschrnul.c: Explicitly cast return value to avoid warning. 1999-06-20 Andreas Schwab * 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 * 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 * libio/oldiopopen.c (_IO_old_proc_open): Apply change from 1999-03-29 to iopopen also here. Reported by Richard Braakman . 1999-06-20 Andreas Jaeger * include/features.h: Use __GNUC_PREREQ. * sysdeps/i386/fpu/bits/mathinline.h: Likewise 1999-06-19 Andreas Schwab * 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 * libio/Makefile (shared-only-routines): Add oldiofgetpos, oldiofgetpos64, oldiofsetpos and oldiofsetpos64. (routines): Include oldiofgetpos, oldiofgetpos64, oldiofsetpos and oldiofsetpos64 only if doing versioning. --- ChangeLog | 76 +++++++++++++++++++++++++++++++++ include/features.h | 3 +- libio/Makefile | 8 ++-- libio/iosetvbuf.c | 2 +- libio/oldiopopen.c | 9 ++-- libio/wfileops.c | 4 +- libio/wgenops.c | 14 +++---- stdio-common/printf-parse.h | 42 +++++++++---------- stdio-common/vfprintf.c | 86 ++++++++++++++++++-------------------- stdio-common/vfscanf.c | 30 +++++++------ stdlib/tst-strtoll.c | 4 +- sysdeps/alpha/atomicity.h | 12 +++--- sysdeps/i386/fpu/bits/mathinline.h | 2 +- wcsmbs/wchar.h | 20 +++++---- wcsmbs/wcschrnul.c | 2 +- 15 files changed, 194 insertions(+), 120 deletions(-) diff --git a/ChangeLog b/ChangeLog index e1acc35474..db8537512f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,79 @@ +1999-06-18 Thorsten Kukuk + + * sysdeps/alpha/atomicity.h: Correct counting of subsections. + +1999-06-17 Andreas Schwab + + * stdlib/tst-strtoll.c: Avoid warning about huge constant. + +1999-06-20 Andreas Schwab + + * 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 + + * wcsmbs/wcschrnul.c: Explicitly cast return value to avoid + warning. + +1999-06-20 Andreas Schwab + + * 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 + + * 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 + + * libio/oldiopopen.c (_IO_old_proc_open): Apply change from + 1999-03-29 to iopopen also here. + Reported by Richard Braakman . + +1999-06-20 Andreas Jaeger + + * include/features.h: Use __GNUC_PREREQ. + * sysdeps/i386/fpu/bits/mathinline.h: Likewise + +1999-06-19 Andreas Schwab + + * 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 + + * 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 * wcsmbs/wchar.h: Declare wcstof and wcstold for ISO C9x. diff --git a/include/features.h b/include/features.h index de2b143b60..88be470025 100644 --- a/include/features.h +++ b/include/features.h @@ -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 diff --git a/libio/Makefile b/libio/Makefile index 6fcde40814..6759b84f1d 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -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 diff --git a/libio/iosetvbuf.c b/libio/iosetvbuf.c index b9ef31a278..5dc5eedffe 100644 --- a/libio/iosetvbuf.c +++ b/libio/iosetvbuf.c @@ -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); diff --git a/libio/oldiopopen.c b/libio/oldiopopen.c index c4116baae3..556a9ff86f 100644 --- a/libio/oldiopopen.c +++ b/libio/oldiopopen.c @@ -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); diff --git a/libio/wfileops.c b/libio/wfileops.c index b040b97491..f3f8bf25dd 100644 --- a/libio/wfileops.c +++ b/libio/wfileops.c @@ -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), diff --git a/libio/wgenops.c b/libio/wgenops.c index 496d080014..6144a1014e 100644 --- a/libio/wgenops.c +++ b/libio/wgenops.c @@ -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 diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h index d62f3a835e..a8cb0345c3 100644 --- a/stdio-common/printf-parse.h +++ b/stdio-common/printf-parse.h @@ -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; diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c index fe145d6a3d..a65953d305 100644 --- a/stdio-common/vfprintf.c +++ b/stdio-common/vfprintf.c @@ -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 . */ -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. */ diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index 5caf616be3..a494bfaa3b 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -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); } diff --git a/stdlib/tst-strtoll.c b/stdlib/tst-strtoll.c index 4d434d5317..38ceaeb0bf 100644 --- a/stdlib/tst-strtoll.c +++ b/stdlib/tst-strtoll.c @@ -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}, diff --git a/sysdeps/alpha/atomicity.h b/sysdeps/alpha/atomicity.h index 34a538f4c0..6ed2ee61ed 100644 --- a/sysdeps/alpha/atomicity.h +++ b/sysdeps/alpha/atomicity.h @@ -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 */" diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h index 00fe3c036f..e22a251107 100644 --- a/sysdeps/i386/fpu/bits/mathinline.h +++ b/sysdeps/i386/fpu/bits/mathinline.h @@ -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) diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h index e0e28bd3c1..d9ff631fcb 100644 --- a/wcsmbs/wchar.h +++ b/wcsmbs/wchar.h @@ -32,6 +32,8 @@ /* Get FILE definition. */ # define __need_FILE # include +/* Get va_list definition. */ +# define __need___va_list # include /* Get size_t, wchar_t, wint_t and NULL from . */ @@ -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 header must also appear here. This is probably diff --git a/wcsmbs/wcschrnul.c b/wcsmbs/wcschrnul.c index 2ea9b2ccc2..ff24659e5e 100644 --- a/wcsmbs/wcschrnul.c +++ b/wcsmbs/wcschrnul.c @@ -31,6 +31,6 @@ __wcschrnul (wcs, wc) else ++wcs; - return wcs; + return (wchar_t *) wcs; } weak_alias (__wcschrnul, wcschrnul) -- cgit 1.4.1