]> 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>
Sat, 18 Feb 2012 18:32:18 +0000 (19:32 +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.

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 757111ce5b518bb1aaec952f14058eb3beb3ffd2..c8aac8dd86836db668641500c5577c3d4cfe0612 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 03cbe642907f2f070aa4c78ddb911b19dccc8b08..cc9dbd1b3f25e527b6f3367cdbaf8d2aaa5c82a4 100644 (file)
--- 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
index cd687b90c29fc606e112c8b63d113229ce52fbdc..7fb051553684245f3a40256a2a661468c8e96e68 100644 (file)
@@ -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;
 }
 
index 7e604309d2c1fc6d6b834dd55a7b5e3f1169b609..0bee4df1bd97537828d7ae33f6d6320ed3047aa3 100755 (executable)
@@ -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;
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 01b640df697643980278d9b2968130e9a9b9226d..9e5bbe61c3e737c6b79b03cd34c64da5c2dd9f2b 100644 (file)
@@ -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);
     }
 }
 
index bd94c837edd00450e24bd977eaebd83d78d18908..a3168db106dd33cfe19cea9d307672fee7305884 100644 (file)
@@ -52,6 +52,7 @@
 typedef size_t uintptr_t;
 #endif
 
+#include <sysexits.h>
 
 /*---------.
 | Gnulib.  |
index b8e5612a9e90a5971fdd568ecba1a5524cb7244e..2f35713710ea1e74e91b90c6c2b7cbb9afa481cd 100644 (file)
@@ -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;
index 62c46211bcc58d84845b49b45fcc8c26871abe6f..2490d2df8c7b1f9c968ac62f60f8212f545fa17b 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;