[PATCH 1/8] Fixes to Asterisk version-specific checks

Jānis Rukšāns <[email protected]>
Newsgroups gmane.linux.isdn.i4l.user
Message-ID <[email protected]>
Use AC_CHECK_TYPE and correct quoting for Asterisk struct checks, and add
case for ind_tone_zone_sound (Asterisk 1.6.0).
---
 chan_lcr.c   |    2 +-
 configure.ac |   67 +++++++++++++++++++++++-----------------------------------
 2 files changed, 27 insertions(+), 42 deletions(-)

diff --git a/chan_lcr.c b/chan_lcr.c
index a2951ae..2903243 100644
--- a/chan_lcr.c
+++ b/chan_lcr.c
@@ -2948,7 +2948,7 @@ static int lcr_indicate(struct ast_channel *ast, int cond, const void *data, siz
 	union parameter newparam;
 	int res = 0;
 	struct chan_call *call;
-	const struct tone_zone_sound *ts = NULL;
+	const struct ast_tone_zone_sound *ts = NULL;
 
 	ast_mutex_lock(&chan_lock);
 #if ASTERISK_VERSION_NUM < 110000
diff --git a/configure.ac b/configure.ac
index 697a778..4f02052 100644
--- a/configure.ac
+++ b/configure.ac
@@ -90,60 +90,45 @@ AS_IF([test "x$with_asterisk" != xno],
       ])
 
 if test "x$with_asterisk" = "xyes"; then
+	dnl detect whether asterisk/indications.h defines ast_tone_zone_sound (1.6.2
+	dnl and later), ind_tone_zone_sound (1.6.0) or tone_zone_sound (1.4)
 	ast_tone_zone_sound=
+	apc_test_result=
 	ast_1_8_or_higher=
 
-	AC_MSG_CHECKING([for struct tone_zone_sound in asterisk/indications.h])
-	tzs_test_result=no
-	AC_COMPILE_IFELSE([
-		AC_LANG_PROGRAM(
-			[[#include <asterisk.h>],
-			[#include <asterisk/linkedlists.h>],
-			[#include <asterisk/indications.h>]],
-			[[struct tone_zone_sound * ts = NULL; (void) ts->data;]])],
-		[tzs_test_result=yes])
-	AC_MSG_RESULT([$tzs_test_result])
-
-	if test "x$tzs_test_result" = "xyes"; then
-		ast_tone_zone_sound=tone_zone_sound
-	fi
-
-	if test "x$ast_tone_zone_sound" = "x"; then
-		AC_MSG_CHECKING([for struct ast_tone_zone_sound in asterisk/indications.h])
-		tzs_test_result=no
-		AC_COMPILE_IFELSE([
-			AC_LANG_PROGRAM(
-				[[#include <asterisk.h>],
-				[#include <asterisk/linkedlists.h>],
-				[#include <asterisk/indications.h>]],
-				[[struct ast_tone_zone_sound * ts = NULL; (void) ts->name;]])],
-			[tzs_test_result=yes])
-		AC_MSG_RESULT([$tzs_test_result])
-
-		if test "x$tzs_test_result" = "xyes"; then
-			ast_tone_zone_sound=ast_tone_zone_sound
-		fi
-	fi
+	AC_CHECK_TYPE([struct ast_tone_zone_sound],
+		[ast_tone_zone_sound=ast_tone_zone_sound], [], [
+#include <asterisk.h>
+#include <asterisk/linkedlists.h>
+#include <asterisk/indications.h>])
+
+	AS_IF([test "x$ast_tone_zone_sound" = "x"],
+		[AC_CHECK_TYPE([struct ind_tone_zone_sound],
+			[ast_tone_zone_sound=ind_tone_zone_sound], [], [
+#include <asterisk.h>
+#include <asterisk/linkedlists.h>
+#include <asterisk/indications.h>])])
+	AS_IF([test "x$ast_tone_zone_sound" = "x"],
+		[AC_CHECK_TYPE([struct tone_zone_sound],
+			[ast_tone_zone_sound=tone_zone_sound], [], [
+#include <asterisk.h>
+#include <asterisk/indications.h>])])
 
 	if test "x$ast_tone_zone_sound" = "x"; then
 		AC_MSG_FAILURE([No ast_tone_zone_sound, confused...])
 	fi
 
-	AC_MSG_CHECKING([for struct ast_party_caller in asterisk/channel.h])
-	apc_test_result=no
-	AC_COMPILE_IFELSE([
-		AC_LANG_PROGRAM(
-			[[#include <asterisk.h>],
-			[#include <asterisk/channel.h>]],
-			[[struct ast_party_caller * caller = NULL; (void) caller->id;]])],
-		[apc_test_result=yes])
-	AC_MSG_RESULT([$apc_test_result])
+
+	AC_CHECK_TYPE([struct ast_party_caller],
+		[apc_test_result=yes], [], [
+#include <asterisk.h>
+#include <asterisk/channel.h>])
 
 	if test "x$apc_test_result" = "xyes"; then
 		ast_1_8_or_higher="-DAST_1_8_OR_HIGHER"
 	fi
 
-	AST_CFLAGS="-Dtone_zone_sound=$ast_tone_zone_sound $ast_1_8_or_higher"
+	AST_CFLAGS="-Dast_tone_zone_sound=$ast_tone_zone_sound $ast_1_8_or_higher"
 
 	AC_SUBST([AST_CFLAGS])
 fi
-- 
1.7.10.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.