From 2b46384a2f115e54fef5e5295b4ad71206649b7f Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 8 Jan 2016 15:41:08 +0000 Subject: [PATCH] avoid gnu error(3) --- lib/Makefile.am | 4 +-- lib/error.h | 78 --------------------------------------------------------- src/argmatch.c | 6 +++-- src/common.h | 1 - src/main.c | 51 +++++++++++++++++++------------------ src/xmalloc.c | 8 ++---- 6 files changed, 34 insertions(+), 114 deletions(-) delete mode 100644 lib/error.h diff --git a/lib/Makefile.am b/lib/Makefile.am index 237fe72..36d7430 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -20,8 +20,8 @@ AUTOMAKE_OPTIONS = gnits noinst_LIBRARIES = libreco.a -noinst_HEADERS = error.h getopt.h gettext.h pathmax.h xstring.h -libreco_a_SOURCES = error.c getopt.c getopt1.c xstrdup.c +noinst_HEADERS = xstring.h +libreco_a_SOURCES = xstrdup.c EXTRA_DIST = alloca.c gettext.c malloc.c realloc.c strtol.c strtoul.c diff --git a/lib/error.h b/lib/error.h deleted file mode 100644 index 20f7582..0000000 --- a/lib/error.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Declaration for error-reporting function - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@prep.ai.mit.edu. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - -#ifndef _ERROR_H -#define _ERROR_H 1 - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ -# define __attribute__(Spec) /* empty */ -# endif -/* The __-protected variants of `format' and `printf' attributes - are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -# define __format__ format -# define __printf__ printf -# endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined (__STDC__) && __STDC__ - -/* Print a message with `fprintf (stderr, FORMAT, ...)'; - if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). - If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ - -extern void error (int status, int errnum, const char *format, ...) - __attribute__ ((__format__ (__printf__, 3, 4))); - -extern void error_at_line (int status, int errnum, const char *fname, - unsigned int lineno, const char *format, ...) - __attribute__ ((__format__ (__printf__, 5, 6))); - -/* 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. */ -extern void (*error_print_progname) (void); - -#else -void error (); -void error_at_line (); -extern void (*error_print_progname) (); -#endif - -/* This variable is incremented each time `error' is called. */ -extern unsigned int error_message_count; - -/* Sometimes we want to have at most one error per line. This - variable controls whether this mode is selected or not. */ -extern int error_one_per_line; - -#ifdef __cplusplus -} -#endif - -#endif /* error.h */ diff --git a/src/argmatch.c b/src/argmatch.c index 9642706..daa39bd 100644 --- a/src/argmatch.c +++ b/src/argmatch.c @@ -36,7 +36,9 @@ # define _(Text) Text #endif -#include "error.h" +#include +#include + #include "quotearg.h" /* When reporting an invalid argument, show nonprinting characters @@ -159,7 +161,7 @@ argmatch_invalid (const char *context, const char *value, int problem) ? _("invalid argument %s for `%s'") : _("ambiguous argument %s for `%s'")); - error (0, 0, format, quotearg_style (ARGMATCH_QUOTING_STYLE, value), context); + warnx (format, quotearg_style (ARGMATCH_QUOTING_STYLE, value), context); } /* List the valid arguments for argmatch. diff --git a/src/common.h b/src/common.h index a4f56dc..089ea61 100644 --- a/src/common.h +++ b/src/common.h @@ -112,7 +112,6 @@ typedef enum {false = 0, true = 1} bool; #ifndef errno extern int errno; #endif -#include "error.h" /* Generate a mask of LENGTH one-bits, right justified in a word. */ #define MASK(Length) ((unsigned) ~(~0 << (Length))) diff --git a/src/main.c b/src/main.c index 3a5de1d..9575b32 100644 --- a/src/main.c +++ b/src/main.c @@ -23,7 +23,8 @@ #include #include -#include "getopt.h" +#include +#include #if HAVE_UNISTD_H # include @@ -427,11 +428,11 @@ main (int argc, char *const *argv) switch (argmatch (optarg, sequence_strings, NULL, 0)) { case -2: - error (0, 0, _("Sequence `%s' is ambiguous"), optarg); + warnx ( _("Sequence `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); case -1: - error (0, 0, _("Sequence `%s' is unknown"), optarg); + warnx ( _("Sequence `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: @@ -461,11 +462,11 @@ main (int argc, char *const *argv) switch (argmatch (optarg, language_strings, NULL, 0)) { case -2: - error (0, 0, _("Language `%s' is ambiguous"), optarg); + warnx ( _("Language `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); default: /* -1 */ - error (0, 0, _("Language `%s' is unknown"), optarg); + warnx ( _("Language `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: @@ -519,11 +520,11 @@ main (int argc, char *const *argv) switch (argmatch (buffer, language_strings, NULL, 0)) { case -2: - error (0, 0, _("Language `%s' is ambiguous"), buffer); + warnx ( _("Language `%s' is ambiguous"), buffer); usage (EXIT_FAILURE, 0); default: /* -1 */ - error (0, 0, _("Language `%s' is unknown"), buffer); + warnx ( _("Language `%s' is unknown"), buffer); usage (EXIT_FAILURE, 0); case 0: @@ -557,11 +558,11 @@ main (int argc, char *const *argv) switch (argmatch (optarg, format_strings, NULL, 0)) { case -2: - error (0, 0, _("Format `%s' is ambiguous"), optarg); + warnx ( _("Format `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); case -1: - error (0, 0, _("Format `%s' is unknown"), optarg); + warnx ( _("Format `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: @@ -666,7 +667,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), if (!alias) { - error (0, 0, _("Symbol `%s' is unknown"), ignored_name); + warnx ( _("Symbol `%s' is unknown"), ignored_name); usage (EXIT_FAILURE, 1); } @@ -688,12 +689,12 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), if (charset_restrictions) if (!decode_known_pairs (outer, charset_restrictions)) { - error (0, 0, "Could not understand `%s'", charset_restrictions); + warnx ( "Could not understand `%s'", charset_restrictions); usage (EXIT_FAILURE, 0); } if (optind + 1 < argc) { - error (0, 0, "Argument `%s' is extraneous", argv[optind]); + warnx ( "Argument `%s' is extraneous", argv[optind]); usage (EXIT_FAILURE, 0); } @@ -706,7 +707,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), if (!alias) { - error (0, 0, _("Charset `%s' is unknown or ambiguous"), + warnx ( _("Charset `%s' is unknown or ambiguous"), argv[optind]); usage (EXIT_FAILURE, 1); } @@ -720,7 +721,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), if (!alias) { - error (0, 0, _("Charset `%s' is unknown or ambiguous"), + warnx ( _("Charset `%s' is unknown or ambiguous"), argv[optind]); usage (EXIT_FAILURE, 1); } @@ -751,7 +752,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), if (optind + 1 > argc) { - error (0, 0, _("Required argument is missing")); + warnx ( _("Required argument is missing")); usage (EXIT_FAILURE, 0); } @@ -794,13 +795,13 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), user_request = rewritten_request; if (!quiet_flag) - error (0, 0, _("Syntax is deprecated, please prefer `%s'"), + warnx ( _("Syntax is deprecated, please prefer `%s'"), user_request); } } if (!recode_scan_request (request, user_request)) - error (EXIT_FAILURE, 0, _("Request `%s' is erroneous"), user_request); + errx (EXIT_FAILURE, _("Request `%s' is erroneous"), user_request); if (rewritten_request) free (rewritten_request); } @@ -857,7 +858,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), /* Check if the file can be read and rewritten. */ if (file = fopen (input_name, "r+"), file == NULL) - error (EXIT_FAILURE, errno, "fopen (%s)", input_name); + err (EXIT_FAILURE, "fopen (%s)", input_name); /* Save the input file attrobites. */ @@ -917,22 +918,22 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), /* Move the new file over the original. */ if (unlink (input_name) < 0) - error (EXIT_FAILURE, errno, "unlink (%s)", input_name); + err (EXIT_FAILURE, "unlink (%s)", input_name); /* Preserve the file permissions. */ if (chmod (output_name, file_stat.st_mode & 07777) < 0) - error (EXIT_FAILURE, errno, "chmod (%s)", output_name); + err (EXIT_FAILURE, "chmod (%s)", output_name); #if HAVE_RENAME if (rename (output_name, input_name) < 0) - error (EXIT_FAILURE, errno, "rename (%s, %s)", + err (EXIT_FAILURE, "rename (%s, %s)", output_name, input_name); #else if (link (output_name, input_name) < 0) - error (EXIT_FAILURE, errno, "link (%s, %s)", + err (EXIT_FAILURE, "link (%s, %s)", output_name, input_name); if (unlink (output_name) < 0) - error (EXIT_FAILURE, errno, "unlink (%s)", output_name); + err (EXIT_FAILURE, "unlink (%s)", output_name); #endif /* Adjust the time stamp for the new file. */ @@ -958,7 +959,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), fflush (stderr); } else if (!quiet_flag) - error (0, 0, _("%s failed: %s in step `%s..%s'"), + warnx ( _("%s failed: %s in step `%s..%s'"), input_name, task_perror (task), task->error_at_step->before->name, task->error_at_step->after->name); @@ -981,7 +982,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), { success = false; if (!quiet_flag) - error (0, 0, _("%s in step `%s..%s'"), + warnx ( _("%s in step `%s..%s'"), task_perror (task), task->error_at_step->before->name, task->error_at_step->after->name); diff --git a/src/xmalloc.c b/src/xmalloc.c index 8206a94..9c5080e 100644 --- a/src/xmalloc.c +++ b/src/xmalloc.c @@ -20,6 +20,7 @@ #endif #include +#include #if STDC_HEADERS # include @@ -39,7 +40,6 @@ void free (); #endif #define N_(Text) Text -#include "error.h" #include "xalloc.h" #ifndef EXIT_FAILURE @@ -70,11 +70,7 @@ xalloc_die (void) { if (xalloc_fail_func) (*xalloc_fail_func) (); - error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted)); - /* The `noreturn' cannot be given to error, since it may return if - its first argument is 0. To help compilers understand the - xalloc_die does terminate, call exit. */ - exit (EXIT_FAILURE); + errx (xalloc_exit_failure, "%s", _(xalloc_msg_memory_exhausted)); } /* Allocate N bytes of memory dynamically, with error checking. */ -- 2.7.0