From f9c07ec61cb09dde465e02ea35b3cc9f832b369c Mon Sep 17 00:00:00 2001
From: Ton Voon <tonvoon@users.sourceforge.net>
Date: Thu, 1 Dec 2005 01:05:12 +0000
Subject: Run longer test on redhat for spopen/pthread problem. Allow
 enable/disable of pthread fix via configure option

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1292 f882894a-f735-0410-b71e-b25c423dba1c

diff --git a/config_test/Makefile b/config_test/Makefile
index 295696e..1064d56 100644
--- a/config_test/Makefile
+++ b/config_test/Makefile
@@ -1,9 +1,11 @@
 
-all: child_test.c
+all: child_test
+
+child_test: child_test.c
 	gcc -o child_test child_test.c
 
 test:
-	./run_tests 10
+	./run_tests 10 100 > /dev/null
 
 clean:
 	rm -f child_test
diff --git a/config_test/run_tests b/config_test/run_tests
index e41db23..e7db3ca 100755
--- a/config_test/run_tests
+++ b/config_test/run_tests
@@ -1,16 +1,30 @@
 #!/bin/ksh
+# $1 is the number of iterations to run
+# If $2 is specified, this is the number of times you run each iteration
+# If there is a fail at run, exit 1
+# Prints to stdout # of successes and passes
+# Prints to stderr a dot for each run
 
-i=0
-success=0
-fail=0
-while [[ $i -lt $1 ]] ; do
-	./child_test
-	if [[ $? -eq 0 ]] ; then
-		success=$(($success+1))
-	else
-		fail=$((fail+1))
-	fi
-	i=$(($i+1))
+total_runs=$2
+[[ -z $total_runs ]] && total_runs=1
+run=1
+while [[ $run -le $total_runs ]] ; do
+	i=0
+	success=0
+	fail=0
+	while [[ $i -lt $1 ]] ; do
+		./child_test
+		if [[ $? -eq 0 ]] ; then
+			success=$(($success+1))
+		else
+			fail=$((fail+1))
+		fi
+		i=$(($i+1))
+	done
+	print "Success=$success Fail=$fail"
+	[[ $fail -gt 0 ]] && exit 1
+	run=$(($run+1))
+	[[ $total_runs -gt 1 ]] && print -u2 -n "."
 done
-print "Success=$success Fail=$fail"
-[[ $fail -gt 0 ]] && exit 1
+[[ $total_runs -gt 1 ]] && print -u2 
+exit 0
diff --git a/configure.in b/configure.in
index be9fe83..9303850 100644
--- a/configure.in
+++ b/configure.in
@@ -1680,17 +1680,26 @@ dnl Wierd problem where ECHILD is returned from a wait call in error
 dnl Only appears to affect nslookup and dig calls. Only affects redhat around
 dnl 2.6.9-11 (okay in 2.6.9-5). Redhat investigating root cause
 dnl We patch plugins/popen.c
-dnl Need to add smp because uname different on those. May need to check
-dnl Fedora Core too in future
-if echo $ac_cv_uname_r | egrep "\.EL(smp)?$" >/dev/null 2>&1 ; then
-	AC_MSG_CHECKING(for redhat spopen problem)
-	( cd config_test && make && make test ) > /dev/null 2>&1
-	if test $? -eq 0 ; then
-		AC_MSG_RESULT(okay)
-	else
-		AC_MSG_RESULT(error)
-		AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, "Problem on redhat with spopen")
+dnl Need to add smp because uname different on those
+dnl Can force patch to be applied with --enable-redhat-pthread-workaround
+AC_ARG_ENABLE(redhat-pthread-workaround, 
+	AC_HELP_STRING([--enable-redhat-pthread-workaround], 
+		[force Redhat patch to be applied (default: test system)]),
+	[ac_cv_enable_redhat_pthread_workaround=$enableval],
+	[ac_cv_enable_redhat_pthread_workaround=test])
+if test "$ac_cv_enable_redhat_pthread_workaround" = "test" ; then
+	if echo $ac_cv_uname_r | egrep "\.EL(smp)?$" >/dev/null 2>&1 ; then
+		AC_MSG_CHECKING(for redhat spopen problem)
+		( cd config_test && make && make test ) > /dev/null 2>&1
+		if test $? -eq 0 ; then
+			AC_MSG_RESULT(okay)
+		else
+			AC_MSG_RESULT(error)
+			AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, [Workaround on redhat in spopen])
+		fi
 	fi
+elif test "$ac_cv_enable_redhat_pthread_workaround" = "yes" ; then
+	AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, [Forced workaround on redhat in spopen])
 fi
 
 dnl External libraries - see ACKNOWLEDGEMENTS
-- 
cgit v0.10-9-g596f

