diff options
author | Alan Modra <amodra@gmail.com> | 2024-03-09 20:27:32 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2024-03-09 21:00:02 +1030 |
commit | 5cd52661808b9fdc2df56dd4c20a9a8ece72dbc1 (patch) | |
tree | 53a22910797e13e265c13022e8a108f3a2a97fc8 | |
parent | 0c947d990a92fd48ac0aa887df7e1e055fa0d680 (diff) | |
download | binutils-5cd52661808b9fdc2df56dd4c20a9a8ece72dbc1.zip binutils-5cd52661808b9fdc2df56dd4c20a9a8ece72dbc1.tar.gz binutils-5cd52661808b9fdc2df56dd4c20a9a8ece72dbc1.tar.bz2 |
Reinstate bfd_print_error as an extern function
* bfd.c (_bfd_print): Renamed from bfd_print_error.
(bfd_print_error): Reinstate previous code but using the above.
(error_handler_fprintf, error_handler_sprintf): Adjust.
* bfd-in2.h: Regenerate.
-rw-r--r-- | bfd/bfd-in2.h | 3 | ||||
-rw-r--r-- | bfd/bfd.c | 33 |
2 files changed, 32 insertions, 4 deletions
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 76d4504..79b24a7 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2558,6 +2558,9 @@ void bfd_perror (const char *message); typedef void (*bfd_error_handler_type) (const char *, va_list); typedef int (*bfd_print_callback) (void *, const char *, ...); +void bfd_print_error (bfd_print_callback print_func, + void *stream, const char *fmt, va_list ap); + void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1; bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); @@ -1450,8 +1450,8 @@ _bfd_doprnt_scan (const char *format, va_list ap, union _bfd_doprnt_args *args) } static void -bfd_print_error (bfd_print_callback print_func, void *stream, - const char *fmt, va_list ap) +_bfd_print (bfd_print_callback print_func, void *stream, + const char *fmt, va_list ap) { union _bfd_doprnt_args args[MAX_ARGS]; @@ -1459,6 +1459,32 @@ bfd_print_error (bfd_print_callback print_func, void *stream, _bfd_doprnt (print_func, stream, fmt, args); } +/* +FUNCTION + bfd_print_error + +SYNOPSIS + void bfd_print_error (bfd_print_callback print_func, + void *stream, const char *fmt, va_list ap); + +DESCRIPTION + + This formats FMT and AP according to BFD "printf" rules, + sending the output to STREAM by repeated calls to PRINT_FUNC. + PRINT_FUNC is a printf-like function; it does not need to + implement the BFD printf format extensions. This can be used + in a callback that is set via bfd_set_error_handler to turn + the error into ordinary output. +*/ + +void +bfd_print_error (bfd_print_callback print_func, void *stream, + const char *fmt, va_list ap) +{ + print_func (stream, "%s: ", _bfd_get_error_program_name ()); + _bfd_print (print_func, stream, fmt, ap); +} + /* The standard error handler that prints to stderr. */ static void @@ -1467,7 +1493,6 @@ error_handler_fprintf (const char *fmt, va_list ap) /* PR 4992: Don't interrupt output being sent to stdout. */ fflush (stdout); - fprintf (stderr, "%s: ", _bfd_get_error_program_name ()); bfd_print_error ((bfd_print_callback) fprintf, stderr, fmt, ap); /* On AIX, putc is implemented as a macro that triggers a -Wunused-value @@ -1526,7 +1551,7 @@ error_handler_sprintf (const char *fmt, va_list ap) error_stream.ptr = error_buf; error_stream.left = sizeof (error_buf); - bfd_print_error (err_sprintf, &error_stream, fmt, ap); + _bfd_print (err_sprintf, &error_stream, fmt, ap); size_t len = error_stream.ptr - error_buf; struct per_xvec_message **warn |