]> git.saurik.com Git - bison.git/commitdiff
maint: avoid "magic number exit".
authorAkim Demaille <demaille@gostai.com>
Sat, 18 Feb 2012 18:19:26 +0000 (19:19 +0100)
committerAkim Demaille <demaille@gostai.com>
Sun, 19 Feb 2012 09:21:06 +0000 (10:21 +0100)
* 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.

Conflicts:

doc/bison.texinfo
src/parse-gram.y

bootstrap.conf
cfg.mk
doc/bison.texinfo
etc/bench.pl.in
lib/.gitignore
m4/.gitignore
src/parse-gram.y
src/system.h
tests/calc.at
tests/named-refs.at

index 7d6f3fbd380b54c172c0944a34b896e2d4dee634..04a03361522303b6f2994be5fb0fa10647416bb7 100644 (file)
@@ -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 a7b16c570767abfb2c44b3cf40f6488956579cae..5659a932c0cb1a659bd74aadcb9ba945a880df20 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -47,7 +47,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
index c121dd4eccd291592e97a00b991df9ede260a66b..329d81d0d864c16dfe1c211bb684db44c86e445c 100644 (file)
@@ -9366,8 +9366,8 @@ calcxx_driver::scan_begin ()
     yyin = stdin;
   else if (!(yyin = fopen (file.c_str (), "r")))
     @{
-      error (std::string ("cannot open ") + file);
-      exit (1);
+      error (std::string ("cannot open ") + file + ": " + strerror(errno));
+      exit (EXIT_FAILURE);
     @}
 @}
 
@@ -10045,11 +10045,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;
 }
 
index 829a760c2227be26eb14d4821504f0c93481911b..ff3ce230cd5dd72533c726a2e7f880a15f557693 100755 (executable)
@@ -291,9 +291,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;
index 5b14836bf1b3fdba539ae579150e53f7027d753f..832cab85784a21701ff8becd018f437837744b7b 100644 (file)
 /closeout.h
 /fpending.c
 /fpending.h
+/sysexits.in.h
index 01e5f645c225c047ad89cab53c4409e2d2eabc4d..90e5ae15f760377d57d49e8fb11caedcb13f8bc6 100644 (file)
 /xalloc.m4
 /xsize.m4
 /xstrndup.m4
+/sysexits.m4
index 5f46d2935a6c5e66aaa3df0e4097a33d4ff8382b..da0aef7133fcd3fe53f0a37edaff49fde9c2a164 100644 (file)
@@ -758,8 +758,8 @@ version_check (location const *loc, char const *version)
   if (strverscmp (version, PACKAGE_VERSION) > 0)
     {
       complain_at (*loc, "require bison %s, but have %s",
-                  version, PACKAGE_VERSION);
-      exit (63);
+                   version, PACKAGE_VERSION);
+      exit (EX_CONFIG);
     }
 }
 
index 52b597b1d8b8549a0fa568436df2d7d804470f66..1c02f25366d6adc072af3bc46a3c9da83147e028 100644 (file)
@@ -52,6 +52,7 @@
 typedef size_t uintptr_t;
 #endif
 
+#include <sysexits.h>
 
 /*---------.
 | Gnulib.  |
index 46b798f5c3fc4a6a4383c1df71770a28631750e9..f0e30ad36b495dee52a81e0cdcc6e80358a8bb2a 100644 (file)
@@ -347,8 +347,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;
index c3721c0375af7902a0b9f8f622635b654876c8af..35c2382b96597505e2c9967bd62f604a4ead3114 100644 (file)
@@ -15,6 +15,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# 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;