diff --git a/autoconf/ast_c_declare_check.m4 b/autoconf/ast_c_declare_check.m4 new file mode 100644 index 0000000000000000000000000000000000000000..89fb8063dcd846f8776049995b23a8db3fcec149 --- /dev/null +++ b/autoconf/ast_c_declare_check.m4 @@ -0,0 +1,31 @@ +# Check if a given symbol is declared using a certain header. +# Check whether SYMBOL (a function, variable, or constant) is declared. + +# AST_C_DECLARE_CHECK([package], [symbol], [header file], [version]) +AC_DEFUN([AST_C_DECLARE_CHECK], +[ + if test "x${PBX_$1}" != "x1" -a "${USE_$1}" != "no"; then + AC_MSG_CHECKING([for $2 declared in $3]) + saved_cppflags="${CPPFLAGS}" + if test "x${$1_DIR}" != "x"; then + $1_INCLUDE="-I${$1_DIR}/include" + fi + CPPFLAGS="${CPPFLAGS} ${$1_INCLUDE}" + + AC_COMPILE_IFELSE( + [ AC_LANG_PROGRAM( [#include <$3>], + [#if !defined($2) + (void) $2; + #endif + ])], + [ AC_MSG_RESULT(yes) + PBX_$1=1 + AC_DEFINE([HAVE_$1], 1, [Define if your system has $2 declared.]) + m4_ifval([$4], [AC_DEFINE([HAVE_$1_VERSION], $4, [Define $1 headers version])]) + ], + [ AC_MSG_RESULT(no) ] + ) + + CPPFLAGS="${saved_cppflags}" + fi +]) diff --git a/configure b/configure index 64f5bbfb7563fa18ced54191bd92b340674c300b..f671751136765b1ec0d12ef6a9dc9d12a58b186d 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Revision: 354046 . +# From configure.ac Revision: 355376 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for asterisk trunk. # @@ -53343,6 +53343,76 @@ fi fi + if test "x${PBX_VORBIS_OPEN_CALLBACKS}" != "x1" -a "${USE_VORBIS_OPEN_CALLBACKS}" != "no"; then + { $as_echo "$as_me:$LINENO: checking for OV_CALLBACKS_NOCLOSE declared in vorbis/vorbisfile.h" >&5 +$as_echo_n "checking for OV_CALLBACKS_NOCLOSE declared in vorbis/vorbisfile.h... " >&6; } + saved_cppflags="${CPPFLAGS}" + if test "x${VORBIS_OPEN_CALLBACKS_DIR}" != "x"; then + VORBIS_OPEN_CALLBACKS_INCLUDE="-I${VORBIS_OPEN_CALLBACKS_DIR}/include" + fi + CPPFLAGS="${CPPFLAGS} ${VORBIS_OPEN_CALLBACKS_INCLUDE}" + + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <vorbis/vorbisfile.h> +int +main () +{ +#if !defined(OV_CALLBACKS_NOCLOSE) + (void) OV_CALLBACKS_NOCLOSE; + #endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + PBX_VORBIS_OPEN_CALLBACKS=1 + +cat >>confdefs.h <<\_ACEOF +#define HAVE_VORBIS_OPEN_CALLBACKS 1 +_ACEOF + + + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CPPFLAGS="${saved_cppflags}" + fi + + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' diff --git a/configure.ac b/configure.ac index 10516091f380bd2d0c43abf30877e9d326d2d9ae..73288ab1c74ce222f94010db30283383296ae7b1 100644 --- a/configure.ac +++ b/configure.ac @@ -2099,6 +2099,7 @@ then else AST_EXT_LIB_CHECK([VORBIS], [vorbis], [vorbis_info_init], [vorbis/codec.h], [-lm -lvorbisenc -lvorbisfile]) fi +AST_C_DECLARE_CHECK([VORBIS_OPEN_CALLBACKS], [OV_CALLBACKS_NOCLOSE], [vorbis/vorbisfile.h]) AC_LANG_PUSH(C++) diff --git a/formats/format_ogg_vorbis.c b/formats/format_ogg_vorbis.c index e316d778072b67ef6ae486a259a3d3c23fd320ae..bbd053e98588fc308b1345aee2f098fc12ae0fee 100644 --- a/formats/format_ogg_vorbis.c +++ b/formats/format_ogg_vorbis.c @@ -80,6 +80,27 @@ struct ogg_vorbis_desc { /* format specific parameters */ int eos; }; +#if !defined(HAVE_VORBIS_OPEN_CALLBACKS) +/* + * Declared for backward compatibility with vorbisfile v1.1.2. + * Code taken from vorbisfile.h v1.2.0. + */ +static int _ov_header_fseek_wrap(FILE *f, ogg_int64_t off, int whence) +{ + if (f == NULL) { + return -1; + } + return fseek(f, off, whence); +} + +static ov_callbacks OV_CALLBACKS_NOCLOSE = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, + (int (*)(void *)) NULL, + (long (*)(void *)) ftell +}; +#endif /* !defined(HAVE_VORBIS_OPEN_CALLBACKS) */ + /*! * \brief Create a new OGG/Vorbis filestream and set it up for reading. * \param s File that points to on disk storage of the OGG/Vorbis data. diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index 0ba8ebaf7b938dca3389a09c2e802872b185f3ea..8161590823413858f62381df169942c0cbe0d40f 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -836,19 +836,19 @@ /* Define to 1 if you have the `strtoq' function. */ #undef HAVE_STRTOQ -/* Define to 1 if `ifr_ifru.ifru_hwaddr' is a member of `struct ifreq'. */ +/* Define to 1 if `ifr_ifru.ifru_hwaddr' is member of `struct ifreq'. */ #undef HAVE_STRUCT_IFREQ_IFR_IFRU_IFRU_HWADDR -/* Define to 1 if `uid' is a member of `struct sockpeercred'. */ +/* Define to 1 if `uid' is member of `struct sockpeercred'. */ #undef HAVE_STRUCT_SOCKPEERCRED_UID -/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +/* Define to 1 if `st_blksize' is member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_BLKSIZE -/* Define to 1 if `cr_uid' is a member of `struct ucred'. */ +/* Define to 1 if `cr_uid' is member of `struct ucred'. */ #undef HAVE_STRUCT_UCRED_CR_UID -/* Define to 1 if `uid' is a member of `struct ucred'. */ +/* Define to 1 if `uid' is member of `struct ucred'. */ #undef HAVE_STRUCT_UCRED_UID /* Define to 1 if you have the mISDN Supplemental Services library. */ @@ -1023,6 +1023,9 @@ /* Define to 1 if you have the Vorbis library. */ #undef HAVE_VORBIS +/* Define if your system has OV_CALLBACKS_NOCLOSE declared. */ +#undef HAVE_VORBIS_OPEN_CALLBACKS + /* Define if your system has the VoiceTronix API libraries. */ #undef HAVE_VPB @@ -1126,9 +1129,6 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME -/* Define to the home page for this package. */ -#undef PACKAGE_URL - /* Define to the version of this package. */ #undef PACKAGE_VERSION