aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSUZUKI, Shinsuke <suz@kame.net>2007-07-24 15:48:58 +0000
committerBjørn Mork <bjorn@mork.no>2010-08-06 15:37:37 +0200
commit47802624717c287dbeec18dd6f76e7683fc13ab0 (patch)
tree099c6cdeb2d80bd7e5390f41f0f3d97e0da2a0cd
parent8cd1aa21f41750e38f3e3f7e907b7926ebe473c4 (diff)
use sig_atomic_t for a signal-handler variable (Bug-ID 1678874)
-rw-r--r--CHANGES2
-rwxr-xr-xconfigure73
-rw-r--r--configure.in3
-rw-r--r--dhcp6c.c2
-rw-r--r--dhcp6relay.c2
-rw-r--r--dhcp6s.c2
6 files changed, 81 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index 3023837..a29ca23 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,6 @@
2007-07-24 SUZUKI, Shinsuke <suz@kame.net>
+ * dhcp6s.c, dhcp6c.c, dhcp6relay.c, configure*: use sig_atomic_t for
+ a signal-handler variable (Bug-ID 1678874)
* common.c: fixed a buffer overrun in sprint_uint64()
(Bug-ID 1714648)
diff --git a/configure b/configure
index 5eef856..6f50634 100755
--- a/configure
+++ b/configure
@@ -4874,6 +4874,79 @@ _ACEOF
fi
fi
+echo "$as_me:$LINENO: checking for sig_atomic_t" >&5
+echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6
+if test "${ac_cv_type_sig_atomic_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <signal.h>
+
+int
+main ()
+{
+if ((sig_atomic_t *) 0)
+ return 0;
+if (sizeof (sig_atomic_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_sig_atomic_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_sig_atomic_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5
+echo "${ECHO_T}$ac_cv_type_sig_atomic_t" >&6
+if test $ac_cv_type_sig_atomic_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SIG_ATOMIC_T 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define sig_atomic_t u_long
+_ACEOF
+
+fi
+
+
echo "$as_me:$LINENO: checking whether getpgrp requires zero arguments" >&5
echo $ECHO_N "checking whether getpgrp requires zero arguments... $ECHO_C" >&6
diff --git a/configure.in b/configure.in
index 461949a..59dd84e 100644
--- a/configure.in
+++ b/configure.in
@@ -104,6 +104,9 @@ AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_STRUCT_TIMEZONE
+AC_CHECK_TYPES([sig_atomic_t], , [AC_DEFINE(sig_atomic_t, u_long)], [#include <sys/types.h>
+ #include <signal.h>])
+
dnl Checks for library functions.
AC_FUNC_GETPGRP
diff --git a/dhcp6c.c b/dhcp6c.c
index 7731ba7..1caaaa5 100644
--- a/dhcp6c.c
+++ b/dhcp6c.c
@@ -81,7 +81,7 @@
static int debug = 0;
static int exit_ok = 0;
-static u_long sig_flags = 0;
+static sig_atomic_t sig_flags = 0;
#define SIGF_TERM 0x1
#define SIGF_HUP 0x2
diff --git a/dhcp6relay.c b/dhcp6relay.c
index e9b6dfd..fb84ce3 100644
--- a/dhcp6relay.c
+++ b/dhcp6relay.c
@@ -69,7 +69,7 @@ static int csock; /* socket for clients */
static int maxfd; /* maxi file descriptor for select(2) */
static int debug = 0;
-static u_long sig_flags = 0;
+static sig_atomic_t sig_flags = 0;
#define SIGF_TERM 0x1
static char *relaydevice;
diff --git a/dhcp6s.c b/dhcp6s.c
index ed0fd58..21e0a30 100644
--- a/dhcp6s.c
+++ b/dhcp6s.c
@@ -124,7 +124,7 @@ struct relayinfo {
TAILQ_HEAD(relayinfolist, relayinfo);
static int debug = 0;
-static u_long sig_flags = 0;
+static sig_atomic_t sig_flags = 0;
#define SIGF_TERM 0x1
const dhcp6_mode_t dhcp6_mode = DHCP6_MODE_SERVER;