From d0f2b7f8566c186f34392efeedbab08c2ae72129 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sat, 18 Feb 2012 19:19:26 +0100 Subject: [PATCH] maint: avoid "magic number exit". * cfg.mk (local-checks-to-skip): No longer skip it. * bootstrap.conf (gnulib_modules): Add sysexits. * doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y, * src/system.h, tests/calc.at, tests/named-refs.at: Use assert where appropriate instead of "if (...) exit". Use symbolic exit status elsewhere. --- bootstrap.conf | 1 + cfg.mk | 1 - doc/bison.texinfo | 12 +++++++++--- etc/bench.pl.in | 3 +-- lib/.gitignore | 1 + m4/.gitignore | 1 + src/parse-gram.y | 2 +- src/system.h | 1 + tests/calc.at | 3 +-- tests/named-refs.at | 4 ++-- 10 files changed, 18 insertions(+), 11 deletions(-) diff --git a/bootstrap.conf b/bootstrap.conf index 757111ce..c8aac8dd 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -24,6 +24,7 @@ gnulib_modules=' javaexec-script ldexpl maintainer-makefile malloc-gnu mbschr mbsrchr mbswidth obstack perror pipe-posix quote quotearg realloc-posix spawn-pipe stdbool stpcpy strdup-posix strerror strtoul strverscmp + sysexits unistd unistd-safer unlocked-io update-copyright unsetenv verify warnings xalloc xalloc-die xstrndup diff --git a/cfg.mk b/cfg.mk index 03cbe642..cc9dbd1b 100644 --- a/cfg.mk +++ b/cfg.mk @@ -43,7 +43,6 @@ local-checks-to-skip = \ sc_prohibit_atoi_atof \ sc_prohibit_doubled_word \ sc_prohibit_empty_lines_at_EOF \ - sc_prohibit_magic_number_exit \ sc_prohibit_strcmp # The local directory containing the checked-out copy of gnulib used in diff --git a/doc/bison.texinfo b/doc/bison.texinfo index cd687b90..7fb05155 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -9969,7 +9969,7 @@ calcxx_driver::scan_begin () else if (!(yyin = fopen (file.c_str (), "r"))) @{ error (std::string ("cannot open ") + file + ": " + strerror(errno)); - exit (1); + exit (EXIT_FAILURE); @} @} @@ -10703,11 +10703,17 @@ yyparse (char const *file) { yyin = fopen (file, "r"); if (!yyin) - exit (2); + { + perror ("fopen"); + exit (EXIT_FAILURE); + } /* One token only. */ yylex (); if (fclose (yyin) != 0) - exit (3); + { + perror ("fclose"); + exit (EXIT_FAILURE); + } return 0; } diff --git a/etc/bench.pl.in b/etc/bench.pl.in index 7e604309..0bee4df1 100755 --- a/etc/bench.pl.in +++ b/etc/bench.pl.in @@ -528,9 +528,8 @@ yylex (void) static int power (int base, int exponent) { + assert (0 <= exponent); int res = 1; - if (exponent < 0) - exit (3); for (/* Niente */; exponent; --exponent) res *= base; return res; diff --git a/lib/.gitignore b/lib/.gitignore index 5b14836b..832cab85 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -263,3 +263,4 @@ /closeout.h /fpending.c /fpending.h +/sysexits.in.h diff --git a/m4/.gitignore b/m4/.gitignore index 01e5f645..90e5ae15 100644 --- a/m4/.gitignore +++ b/m4/.gitignore @@ -167,3 +167,4 @@ /xalloc.m4 /xsize.m4 /xstrndup.m4 +/sysexits.m4 diff --git a/src/parse-gram.y b/src/parse-gram.y index 01b640df..9e5bbe61 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -804,7 +804,7 @@ version_check (location const *loc, char const *version) { complain_at (*loc, "require bison %s, but have %s", version, PACKAGE_VERSION); - exit (63); + exit (EX_CONFIG); } } diff --git a/src/system.h b/src/system.h index bd94c837..a3168db1 100644 --- a/src/system.h +++ b/src/system.h @@ -52,6 +52,7 @@ typedef size_t uintptr_t; #endif +#include /*---------. | Gnulib. | diff --git a/tests/calc.at b/tests/calc.at index b8e5612a..2f357137 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -346,8 +346,7 @@ static int power (int base, int exponent) { int res = 1; - if (exponent < 0) - exit (3); + assert (0 <= exponent); for (/* Niente */; exponent; --exponent) res *= base; return res; diff --git a/tests/named-refs.at b/tests/named-refs.at index 62c46211..2490d2df 100644 --- a/tests/named-refs.at +++ b/tests/named-refs.at @@ -15,6 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# FIXME: Duplication with calc.at. AT_BANNER([[Named references tests.]]) AT_SETUP([Tutorial calculator]) @@ -142,8 +143,7 @@ int yylex (void) static int power (int base, int exponent) { int res = 1; - if (exponent < 0) - exit (3); + assert (0 <= exponent); for (/* Niente */; exponent; --exponent) res *= base; return res; -- 2.47.2