There are a lot more printf variants than there are scanf variants,
and the code for setting up and tearing down their custom FILE
variants around the call to __vf(w)printf is more complicated and
variable. Therefore, I have added _internal versions of all the
v*printf variants, rather than introducing helper routines so that
they can all directly call __vf(w)printf_internal, as was done with
scanf.
As with the scanf changes, in this patch the _internal functions still
look at the environmental mode bits and all callers pass 0 for the
flags parameter.
Several of the affected public functions had _IO_ name aliases that
were not exported (but, in one case, appeared in libio.h anyway);
I was originally planning to leave them as aliases to avoid having
to touch internal callers, but it turns out ldbl_*_alias only work
for exported symbols, so they've all been removed instead. It also
turns out there were hardly any internal callers. _IO_vsprintf and
_IO_vfprintf *are* exported, so those two stick around.
Summary for the changes to each of the affected symbols:
_IO_vfprintf, _IO_vsprintf:
All internal calls removed, thus the internal declarations, as well
as uses of libc_hidden_proto and libc_hidden_def, were also removed.
The external symbol is now exposed via uses of ldbl_strong_alias
to __vfprintf_internal and __vsprintf_internal, respectively.
_IO_vasprintf, _IO_vdprintf, _IO_vsnprintf,
_IO_vfwprintf, _IO_vswprintf,
_IO_obstack_vprintf, _IO_obstack_printf:
All internal calls removed, thus declaration in internal headers
were also removed. They were never exported, so there are no
aliases tying them to the internal functions. I.e.: entirely gone.
__vsnprintf:
Internal calls were always preceded by macros such as
#define __vsnprintf _IO_vsnprintf, and
#define __vsnprintf vsnprintf
The macros were removed and their uses replaced with calls to the
new internal function __vsnprintf_internal. Since there were no
internal calls, the internal declaration was also removed. The
external symbol is preserved with ldbl_weak_alias to ___vsnprintf.
__vfwprintf:
All internal calls converted into calls to __vfwprintf_internal,
thus the internal declaration was removed. The function is now a
wrapper that calls __vfwprintf_internal. The external symbol is
preserved.
__vswprintf:
Similarly, but no external symbol.
__vasprintf, __vdprintf, __vfprintf, __vsprintf:
New internal wrappers. Not exported.
vasprintf, vdprintf, vfprintf, vsprintf, vsnprintf,
vfwprintf, vswprintf,
obstack_vprintf, obstack_printf:
These functions used to be aliases to the respective _IO_* function,
they are now aliases to their respective __* functions.
Tested for powerpc and powerpc64le.
_IO_fwide() is defined in libio.h file. This file is included only
when _LIBC is defined.
So, in case of compilation of these files without _LIBC definition,
the compilation failed due to this unknown function.
Now this function is called when libio.h file is included.
(Change merged from gnulib. Tested on x86_64.)
* argp/argp-fmtstream.c (__argp_fmtstream_update): Use [_LIBC]
conditional on calls to _IO_fwide and putwc_unlocked. (Merge from
gnulib.)
* argp/argp-help.c (__argp_failure): Likewise.
Mark internal argp functions with attribute_hidden to allow direct
access to them within libc.so and libc.a without using GOT nor PLT.
[BZ #18822]
* argp/argp-fmtstream.c: Include <argp-fmtstream.h>.
* argp/argp-fs-xinl.c: Likewise.
* argp/argp-help.c: Include <argp.h> and <argp-fmtstream.h>.
* argp/argp-parse.c: Include <argp.h>.
* argp/argp-xinl.c: Likewise.
* include/argp-fmtstream.h: New file.
* include/argp.h (__argp_error): Add attribute_hidden.
(__argp_failure): Likewise.
(__argp_input): Likewise.
(__argp_state_help): Likewise.
* argp/argp-fmtstream.h [HAVE_CONFIG_H]: Do not #include <config.h>.
* argp/argp-eexst.c, argp/argp-fmtstream.c, argp/argp-fs-xinl.c,
argp/argp-xinl.c: Fix up whitespace.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
1999-11-10 Andreas Jaeger <aj@suse.de>
* string/strsignal.c (strsignal): Correct check for snprintf
return value.
* argp/argp-fmtstream.c (__argp_fmtstream_printf): Likewise.
* misc/efgcvt_r.c (APPEND): Correct check for too small buffer
according to changed snprintf return value.
Reported by Lawrence K. Chen <lchen@opentext.com>.
* misc/tst-efgcvt.c (special): Add tests for a too small buffer
for ecvt_r and fcvt_r.
1998-07-31 17:59 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/Makefile [subdir==misc] (sysdep_routines):
Add sys_setresuid.
1998-07-30 Mark Kettenis <kettenis@phys.uva.nl>
* sysdeps/unix/sysv/linux/syscalls.list: Add __syscall_setresuid
as real name for system call and make setresuid a weak alias. Set
caller to seteuid.
* sysdeps/unix/sysv/linux/seteuid.c (seteuid): Implement using
`setresuid' syscall if availble. Fixes problems with sendmail
which expects `seteuid' to not set the saved user ID.
1998-07-30 20:09 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
* time/tzset.c (__tzstring): Get rid of excessive cleverness
which was causing stack corruption.
1998-07-31 16:41 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
* argp/argp-fmtstream.c (__argp_fmtstream_update): Correct
off-by-one in wordwrap algorithm when there' a space at the
beginning of the buffer.
1998-07-31 15:45 Ulrich Drepper <drepper@cygnus.com>
* Makerules (LDLIBS-c.so): Extend value instead of overwriting it.
1997-04-09 01:24 Ulrich Drepper <drepper@cygnus.com>
* rellns-sh: Rewrite to work also in presence of symlinks.
* arpg/argp-fmtstream.c: Add casts to prevent warnings.
* argp/argp-fmtstream.h: Likewise.
* argp/argp-help.c: Likewise.
* elf/dl-minimal.c: Add definition of calloc.
* elf/version.c: Add casts to prevent warnings.
(_dl_check_map_versions): Use calloc instead of malloc+memset.
* locale/setlocale.c (_nl_current): Add element with index LC_ALL.
Reported by Greg McGary <gkm@eng.ascend.com>.
* manual/libc.texinfo: Update malloc documentation for new malloc.
* manual/memory.texi: Likewise.
Patch by Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>.
* math/libm-test.c (check_long): New function.
(check_longlong): New function.
(rinttol_test): New function.
(rinttoll_test): New function.
* nis/nss_compat/compat-grp.c (in_blacklist): Improve a bit.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* stdlib/erand48_r.c (erand48_r): Build double value using
ieee754_double union and use random bits in different order to
increase effect of seed.
Reported by David Mosberger-Tang <davidm@AZStarNet.com>.
* sunrpc/svc_auth.c: Moved to ...
* sysdeps/generic/svc_auth.c: ...here.
* time/time.h: Pretty print.
1997-04-08 07:19 H.J. Lu <hjl@gnu.ai.mit.edu>
* libio/genops.c (_IO_flush_all_linebuffered): don't flush on
a read-only stream.
1997-04-09 01:19 Ulrich Drepper <drepper@cygnus.com>
* malloc/malloc.c (mALLOC_STATs) [MALLOC_DEBUG>1]: Put declaration
in correct place.
Patch by Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>.
1997-04-07 15:34 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/Makefile (tests): Add tst-ferror.
* stdio-common/tst-ferror.c: New file. Some tests for error
indicator of streams.
* stdio-common/tst-ferror.input: New file.
* isomac.c: Let tests not fail because the compiler defines itself
symbols which violate the name space rules. gcc defines symbols
for the architecture which are not protected by an underscore
character.
* math/Makefile (libm-support): Add s_rinttol and s_rinttoll.
(libm-calls): Add s_clog.
* sysdeps/libm-ieee754/s_clog.c: New file. Implementation of
logarithm of complex value.
* sysdeps/libm-ieee754/s_clogf.c: New file.
* sysdeps/libm-ieee754/s_clogl.c: New file.
* math/libm-test.c (clog_test): Compile this function. Fix a few
typos.
(main): Call clog_test.
* sysdeps/libm-ieee754/s_rinttol.c: New file. Round long double
value to long int.
* sysdeps/libm-i387/s_rinttol.S: New file.
* sysdeps/libm-ieee754/s_rinttoll.c: new file. Round long double
value to long long int.
* sysdeps/libm-i387/s_rinttoll.S: New file.
* sysdeps/libm-ieee754/s_rintl.c: Many corrections. The previous
version was full of errors.
* math/math.h (rinttol): Argument is of type `long double' not
`double'.
(rinttoll): Likewise.
(roundtol): Likewise.
(roundtoll): Likewise.
1997-04-06 11:32 H.J. Lu <hjl@gnu.ai.mit.edu>
* posix/getopt.c (_getopt_initialize): Preserve optind.
(_getopt_internal): Set optind to 1 if optind == 0 before
calling _getopt_initialize ().
1997-04-05 16:45 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/rpcsvc/nislib.h: Change const nis_name to new type
const_nis_name.
* nis/nis_intern.c: Likewise.
* nis/nis_intern.h: Likewise.
* nis/nis_server.c: Likewise.
* nis/nis_subr.c: Likewise.
* nis/nis_table.c: Likewise.
* nis/nis_names.c: Likewise. Fill out ns_request structure in
nis_add().
* nis/nss_compat/compat-pwd.c: Use reentrant netgroup functions.
* nis/nss_compat/compat-spwd.c: Likewise.
1997-03-27 07:37 H.J. Lu <hjl@gnu.ai.mit.edu>
* libio/fileops.c (_IO_file_overflow): Set error when try to write
on a read-only stream.
* sysdeps/gnu/utmpbits.h (ut_xtime): New symbol.
(ut_time): Define it only if _NO_UT_TIME is not defined.
1997-04-06 00:42 Ulrich Drepper <drepper@cygnus.com>
* misc/tst-tsearch.c: Include <string.h>. Define _GNU_SOURCE only
if not already defined.
1997-04-05 16:14 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/netatalk/at.h: Include <sys/socket.h> to
get definition of sa_family_t for <linux/atalk.h>.
Reported by a sun <asun@zoology.washington.edu>.
* malloc/malloc.c (cALLOc): Little optimization.
1997-02-22 00:17 Ulrich Drepper <drepper@cygnus.com>
* catgets/gencat.c: Change to use argp.
* db/makedb: Likewise.
* locale/programs/localedef.c: Likewise.
* locale/programs/locale.c: Little adjustment for better usage of
argp.
1997-02-20 20:07 Greg McGary <gkm@eng.ascend.com>
* Makeconfig: Add rules for libc with bounded pointers.
* Makerules: Likewise.
* config.make.in: Likewise.
* configure.in: Likewise.
1997-02-21 10:41 Miles Bader <miles@gnu.ai.mit.edu>
* argp.h (OPTION_NO_USAGE): New macro.
* argp-help.c (usage_long_opt, usage_argful_short_opt,
add_argless_short_opt): Implement OPTION_NO_USAGE.
1997-02-20 16:41 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* malloc/obstack.h: Fix typo.
1997-02-20 15:56 Miles Bader <miles@gnu.ai.mit.edu>
* argp-fmtstream.c (__argp_fmtstream_update): Account for case
where NEXTLINE points one past the end of the active buffer.
* argp-help.c <stddef.h>: New include.
(__argp_failure): Only exit if STATE says it's ok.
(print_header, hol_entry_help): Use UPARAMS fields rather than
constants.
(_help): Call fill_in_uparams if necessary.
(struct hol_help_state): New type.
(struct pentry_state): Add hhstate field. Remove prev_entry &
sep_groups fields.
(hol_entry_help): Add HHSTATE parameter. Remove prev_entry &
sep_groups parameters.
Suppress duplicate arguments if requested, and note the fact.
(print_header, comma): Use PEST->hhstate fields.
(hol_help): Add HHSTATE variable & pass to hol_entry_help.
Remove LAST_ENTRY & SEP_GROUPS variables.
If any suplicate arguments were suppressed, print explanatory note.
(filter_doc): Replace PEST parameter with STATE.
(struct uparams): New type.
(uparams): New variable.
(struct uparam_name): New type.
(uparam_names): New variable.
(fill_in_uparams): New function.
(__argp_failure, __argp_error, __argp_state_help): Make STATE
parameter const.
* argp.h (argp_state_help, __argp_state_help, argp_usage,
__argp_usage, argp_error, __argp_error, argp_failure,
__argp_failure): Make STATE parameter const.
(ARGP_KEY_HELP_DUP_ARGS_NOTE): New macro.
* argp.h (argp_program_bug_address): Make const.
1997-02-20 19:20 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/mman/syscalls.list: Explain msync interface.
1997-02-19 01:37 Erik Troan <ewt@redhat.com>
* shadow/sgetspent_r.c: Accept empty third, fourth and fifth fields.
1997-02-20 14:44 Andreas Jaeger <aj@arthur.pfalz.de>
* stdio-common/test-fseek.c: Remove temporary file, add
copyright.
1997-02-20 17:51 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/netinet/in.h: Protect contents using
__BEGIN/END_DECLS. Reported by a sun <asun@zoology.washington.edu>.
* inet/net/ethernet.h: Move to sysdeps/unix/sysv/linux/net.
* inet/Makefile (headers): Remove net/ethernet.h.
* sysdeps/unix/sysv/linux/Makefile: Install net/ethernet.h.
* sysdeps/unix/sysv/linux/Dist: Distribute net/ethernet.h.
1997-02-20 15:23 Thorsten Kukuk <kukuk@weber.uni-paderborn.de>
* nss/nsswitch.c (__nss_configure_lookup): Use correct test when
searching in sorted array.
1997-02-20 01:24 Philip Blundell <pjb27@cam.ac.uk>
* inet/getnameinfo.c: Change to use reentrant getXXbyYY functions
and protect modification of global data.
1997-02-19 18:48 Miles Bader <miles@gnu.ai.mit.edu>
* argp-parse.c (argp_default_parser): Set STATE->name for OPT_PROGNAME.
(parser_init): Use the basename for PARSER->state.name.
* argp-help.c (__argp_error, __argp_failure, __argp_state_help):
Use PROGRAM_INVOCATION_SHORT_NAME instead of PROGRAM_INVOCATION_NAME.
* argp-parse.c (parser_init): Set PARSER->state.flags.
Make check whether PARSER has the prog name in argv[0] at the
proper place.
1997-02-19 23:34 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-time.c (time_finish): t_fmt_ampm is optional.
Use default value instead of printing a warning.
* nss/XXX-lookup.c: Add misssing explanation.
1997-02-19 19:14 Andreas Jaeger <aj@arthur.pfalz.de>
* inet/in6_addr.c: Add missing braces.
* inet/getnameinfo.c: Include <arpa/inet.h>.
* sysdeps/posix/getaddrinfo.c: Include <arpa/inet.h>.
1997-02-19 11:46 Ulrich Drepper <drepper@cygnus.com>
* string/strxfrm.c (STRCOLL): Correct handling of `position'
levels with no non-IGNOREd element and handling of NUL byte.
* string/strcoll.c (STRXFRM): Likewise.
* locale/weight.h: Likewise.
* shadow/sgetspent_r.c (LINE_PARSER): Add missing ')'.