]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
build: fix env build where SIGNUM_BOUND is not constant
authorPádraig Brady <P@draigBrady.com>
Wed, 6 Mar 2019 16:58:13 +0000 (08:58 -0800)
committerPádraig Brady <P@draigBrady.com>
Wed, 6 Mar 2019 17:00:44 +0000 (09:00 -0800)
* src/env.c (initialize_signals): A new function to initialize
the signals array on the heap, to avoid a build failure on
opensolaris, where SIGNUM_BOUND is not a constant.

src/env.c

index 5adc7d9eb2bf2430866ed679362636c70536561d..c8161356c6bce0583035313f0f3dfeee4665534b 100644 (file)
--- a/src/env.c
+++ b/src/env.c
@@ -59,7 +59,7 @@ enum SIGNAL_MODE {
   IGNORE,        /* Set to ignore (SIG_IGN). */
   IGNORE_NOERR   /* ditto, but ignore sigaction(2) errors.  */
 };
-static enum SIGNAL_MODE signals[SIGNUM_BOUND + 1];
+static enum SIGNAL_MODE *signals;
 
 /* Set of signals to block.  */
 static sigset_t block_signals;
@@ -783,6 +783,17 @@ list_signal_handling (void)
     }
 }
 
+static void
+initialize_signals (void)
+{
+  signals = xmalloc ((sizeof *signals) * (SIGNUM_BOUND + 1));
+
+  for (int i = 0 ; i <= SIGNUM_BOUND; i++)
+    signals[i] = UNCHANGED;
+
+  return;
+}
+
 int
 main (int argc, char **argv)
 {
@@ -800,6 +811,8 @@ main (int argc, char **argv)
   initialize_exit_failure (EXIT_CANCELED);
   atexit (close_stdout);
 
+  initialize_signals ();
+
   while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
     {
       switch (optc)