diff options
Diffstat (limited to 'libc/misc/error/error.c')
-rw-r--r-- | libc/misc/error/error.c | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/libc/misc/error/error.c b/libc/misc/error/error.c index b51177e35..3e44a01ee 100644 --- a/libc/misc/error/error.c +++ b/libc/misc/error/error.c @@ -1,50 +1,54 @@ /* Error handler for noninteractive utilities - Copyright (C) 1990-1998, 2000, 2001 Free Software Foundation, Inc. - - This file is part of the GNU C Library. Its master source is NOT part of - the C library, however. The master source lives in /gd/gnu/lib. + Copyright (C) 1990-1998, 2000-2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */ /* Adjusted slightly by Erik Andersen <andersen@uclibc.org> */ -#define strerror __strerror -#define vfprintf __vfprintf -#define fflush __fflush - #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <string.h> -#include "error.h" - -extern int __putc(int c, FILE *stream) attribute_hidden; +#include <error.h> + +libc_hidden_proto(strcmp) +libc_hidden_proto(strerror) +libc_hidden_proto(fprintf) +libc_hidden_proto(exit) +libc_hidden_proto(putc) +libc_hidden_proto(vfprintf) +libc_hidden_proto(fflush) +libc_hidden_proto(fputc) +libc_hidden_proto(__fputc_unlocked) +libc_hidden_proto(stdout) +libc_hidden_proto(stderr) /* This variable is incremented each time `error' is called. */ -unsigned int error_message_count; +unsigned int error_message_count = 0; /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ int error_one_per_line; /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ -void (*error_print_progname) (void) = NULL; - +/* void (*error_print_progname) (void) = NULL; */ +extern __typeof(error) __error attribute_hidden; void __error (int status, int errnum, const char *message, ...) { va_list args; @@ -58,11 +62,12 @@ void __error (int status, int errnum, const char *message, ...) if (errnum) { fprintf (stderr, ": %s", strerror (errnum)); } - __putc ('\n', stderr); + putc ('\n', stderr); if (status) - __exit (status); + exit (status); } +extern __typeof(error_at_line) __error_at_line attribute_hidden; void __error_at_line (int status, int errnum, const char *file_name, unsigned int line_number, const char *message, ...) { @@ -73,7 +78,7 @@ void __error_at_line (int status, int errnum, const char *file_name, static unsigned int old_line_number; if (old_line_number == line_number && - (file_name == old_file_name || !__strcmp (old_file_name, file_name))) + (file_name == old_file_name || !strcmp (old_file_name, file_name))) /* Simply return and print nothing. */ return; @@ -94,13 +99,11 @@ void __error_at_line (int status, int errnum, const char *file_name, if (errnum) { fprintf (stderr, ": %s", strerror (errnum)); } - __putc ('\n', stderr); + putc ('\n', stderr); if (status) - __exit (status); + exit (status); } -/* Use the weaks here in an effort at controlling namespace pollution */ -#undef error -#undef error_at_line -weak_alias (__error, error) -weak_alias (__error_at_line, error_at_line) +/* psm: keep this weak, too many use this in common code */ +weak_alias(__error,error) +strong_alias(__error_at_line,error_at_line) |