Mon Apr 8 03:20:10 2024 UTC (59d)
comms/asterisk21: import asterisk-21.2.0

Asterisk is a complete PBX in software.  It provides all of the
features you would expect from a PBX and more. Asterisk does voice
over IP in three protocols, and can interoperate with almost all
standards-based telephony equipment using relatively inexpensive
hardware.

Asterisk provides Voicemail services with Directory, Call Conferencing,
Interactive Voice Response, Call Queuing. It has support for
three-way calling, caller ID services, ADSI, SIP and IAX.

This is an standard version.  It is secheduled to go to security
fixes only on November 18th, 2025, and EOL on November 18th, 2026.
See here for more information about Asterisk versions:
https://docs.asterisk.org/About-the-Project/Asterisk-Versions

Note that many things that have long been deprecated have now been
removed, such as chan_sip and app_macro.  See here for a complete
list:  http://docs.asterisk.org/Development/Asterisk-Module-Deprecations


(jnemeth)
diff -r0 -r1.1 pkgsrc/comms/asterisk21/DESCR
diff -r0 -r1.1 pkgsrc/comms/asterisk21/Makefile
diff -r0 -r1.1 pkgsrc/comms/asterisk21/PLIST
diff -r0 -r1.1 pkgsrc/comms/asterisk21/distinfo
diff -r0 -r1.1 pkgsrc/comms/asterisk21/options.mk
diff -r0 -r1.1 pkgsrc/comms/asterisk21/files/asterisk.sh
diff -r0 -r1.1 pkgsrc/comms/asterisk21/files/smf/manifest.xml
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-Makefile
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-addons_chan__ooh323.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__adsiprog.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__chanspy.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__directory.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__dumpchan.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__followme.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__minivm.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__queue.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__sms.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-apps_app__voicemail.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-build__tools_make__xml__documentation
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-build__tools_mkpkgconfig
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-cdr_cdr__pgsql.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-cel_cel__pgsql.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-channels_chan__pjsip.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-channels_pjsip_cli__commands.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-channels_pjsip_dialplan__functions.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-configure
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-configure.ac
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-contrib_scripts_vmail.cgi
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__cdr.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__channel.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__env.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__pjsip__aor.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__pjsip__contact.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__pjsip__endpoint.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-funcs_func__strings.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-include_asterisk_autoconfig.h.in
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-include_asterisk_lock.h
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-include_asterisk_strings.h
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_Makefile
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_acl.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_app.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_ast__expr2.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_ast__expr2.y
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_asterisk.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_astmm.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_bridge__basic.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_bridge__channel.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_callerid.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_cdr.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_cel.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_cli.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_config.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_conversions.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_dns__naptr.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_enum.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_features.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_http.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_indications.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_logger.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_manager.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_pbx.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_pbx__builtins.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_pbx__timing.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_sched.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_stdtime_localtime.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_taskprocessor.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_tdd.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_test.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-main_utils.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-menuselect_menuselect.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-pbx_pbx__config.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-pbx_pbx__dundi.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_ael_pval.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__calendar.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__celt.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__h263.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__ilbc.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__opus.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__silk.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__siren14.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__siren7.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__vp8.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__hep__pjsip.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__limit.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__musiconhold.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__pjproject.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__pjsip__diversion.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__pjsip_pjsip__configuration.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-res_res__xmpp.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-sounds_Makefile
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-tests_test__locale.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-tests_test__voicemail__api.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0100-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0110-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0120-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0130-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0140-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0150-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0160-netbsd.patch
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-utils_Makefile
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-utils_db1-ast_include_db.h
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-utils_extconf.c
diff -r0 -r1.1 pkgsrc/comms/asterisk21/patches/patch-utils_smsq.c

File Added: pkgsrc/comms/asterisk21/DESCR
Asterisk is a complete PBX in software.  It provides all of the
features you would expect from a PBX and more. Asterisk does voice
over IP in three protocols, and can interoperate with almost all
standards-based telephony equipment using relatively inexpensive
hardware.

Asterisk provides Voicemail services with Directory, Call Conferencing,
Interactive Voice Response, Call Queuing. It has support for
three-way calling, caller ID services, ADSI, SIP and IAX.

This is an standard version.  It is secheduled to go to security
fixes only on November 18th, 2025, and EOL on November 18th, 2026.
See here for more information about Asterisk versions:
https://docs.asterisk.org/About-the-Project/Asterisk-Versions

Note that many things that have long been deprecated have now been
removed, such as chan_sip and app_macro.  See here for a complete
list:  http://docs.asterisk.org/Development/Asterisk-Module-Deprecations

File Added: pkgsrc/comms/asterisk21/Makefile
# $NetBSD: Makefile,v 1.1 2024/04/08 03:20:06 jnemeth Exp $
#
# NOTE: when updating this package, there are two places that sound
#       tarballs need to be checked; look in ${WRKSRC}/sounds/Makefile
#       to find out the current sound file versions
#       Also look in ${WRKSRC}/third-party/versions.mak for pjproject

DISTNAME=	asterisk-21.2.0
#PKGREVISION=	24
CATEGORIES=	comms net audio
MASTER_SITES=	http://downloads.asterisk.org/pub/telephony/asterisk/
MASTER_SITES+=	http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/
MASTER_SITES+=	http://downloads.asterisk.org/pub/telephony/sounds/releases/
DIST_SUBDIR=	${PKGNAME_NOREV}
DISTFILES=	${DEFAULT_DISTFILES}

COMMENT=	The Asterisk Software PBX
LICENSE=	gnu-gpl-v2

EXTRACT_ONLY=	${DISTNAME}.tar.gz
OWNER=		jnemeth@NetBSD.org
HOMEPAGE=	https://www.asterisk.org/

MAKE_JOBS_SAFE=	NO

# known to have issues on i386, block the package until the bug is fixed
BROKEN_ON_PLATFORM=	NetBSD-*-i386

CONFLICTS+=	asterisk-sounds-extra-[0-9]*

.include "../../mk/bsd.prefs.mk"

USE_TOOLS+=		bison gmake perl:run pkg-config tar bash:run
USE_LANGUAGES=		c c++
REPLACE_BASH+=		contrib/scripts/astversion
REPLACE_BASH+=		contrib/scripts/ast_coredumper
REPLACE_BASH+=		contrib/scripts/ast_logescalator
REPLACE_BASH+=		contrib/scripts/ast_loggrabber
REPLACE_PERL+=		agi/DialAnMp3.agi agi/agi-test.agi
REPLACE_PERL+=		agi/fastagi-test agi/jukebox.agi agi/numeralize
REPLACE_PERL+=		contrib/scripts/vmail.cgi
REPLACE_PYTHON+=	contrib/scripts/reflocks.py contrib/scripts/refstats.py

CHECK_INTERPRETER_SKIP+=	libdata/asterisk/scripts/refcounter.py

GNU_CONFIGURE=		yes
CONFIGURE_ARGS+=	--datarootdir=${PREFIX}/libdata
CONFIGURE_ARGS+=	--sysconfdir=${PKG_SYSCONFDIR}
CONFIGURE_ARGS+=	--without-gtk2
# XXX remove when lang/lua gets builtin.mk
CONFIGURE_ARGS+=	--without-lua
CONFIGURE_ARGS+=	--without-unbound
# XXX uncomment below to debug build issues
#CONFIGURE_ENV+=		PJPROJECT_CONFIGURE_OPTS="NOISY_BUILD=yes"

.if ${OPSYS} == "NetBSD" && ${OPSYS_VERSION} < 069900
CONFIGURE_ARGS+=	--without-srtp
.else
CONFIGURE_ARGS+=	--with-srtp
PLIST.srtp=		YES
.include "../../comms/srtp/buildlink3.mk"
.endif

INSTALL_TARGET=		install samples
INSTALLATION_DIRS+=	lib/pkgconfig share/doc/${PKGBASE}
INSTALLATION_DIRS+=	share/examples/asterisk share/examples/rc.d
INSTALLATION_DIRS+=	${ASTDATADIR}/sounds/en ${ASTDATADIR}/moh

BUILD_DEFS+=		VARBASE

ASTERISK_USER?=			asterisk
ASTERISK_GROUP?=		asterisk
PKG_GROUPS=			${ASTERISK_GROUP}
PKG_USERS=			${ASTERISK_USER}:${ASTERISK_GROUP}
PKG_GECOS.${ASTERISK_USER}=	Asterisk PBX
PKG_GROUPS_VARS=		ASTERISK_GROUP
PKG_USERS_VARS=			ASTERISK_USER
FILES_SUBST+=			ASTERISK_USER=${ASTERISK_USER}
FILES_SUBST+=			ASTERISK_GROUP=${ASTERISK_GROUP}
MESSAGE_SUBST+=			ASTERISK_USER=${ASTERISK_USER}
MESSAGE_SUBST+=			ASTERISK_GROUP=${ASTERISK_GROUP}

# Various path settings for Asterisk
PKG_SYSCONFSUBDIR=	asterisk
PKG_SYSCONFDIR_PERMS=	${ASTERISK_USER} ${ASTERISK_GROUP} 0755
ASTETCDIR=		${PKG_SYSCONFDIR}
ASTEXAMPLEDIR=		${PREFIX}/share/examples/asterisk
ASTDBDIR=		${VARBASE}/db/asterisk
ASTSPOOLDIR=		${VARBASE}/spool/asterisk
ASTLOGDIR=		${VARBASE}/log/asterisk
MESSAGE_SUBST+=		ASTDBDIR=${ASTDBDIR}
MESSAGE_SUBST+=		ASTSPOOLDIR=${ASTSPOOLDIR}
MESSAGE_SUBST+=		ASTLOGDIR=${ASTLOGDIR}
ASTVARRUNDIR=		${VARBASE}/run/asterisk
FILES_SUBST+=		ASTVARRUNDIR=${ASTVARRUNDIR}
ASTDATADIR=		${PREFIX}/libdata/asterisk
MAKE_FLAGS+=		ASTLIBDIR=${PREFIX}/lib/asterisk
MAKE_FLAGS+=		ASTVARLIBDIR=${ASTDATADIR}
MAKE_FLAGS+=		ASTKEYDIR=${ASTDATADIR}
MAKE_FLAGS+=		ASTDATADIR=${ASTDATADIR}
MAKE_FLAGS+=		ASTSPOOLDIR=${ASTSPOOLDIR}
MAKE_FLAGS+=		ASTLOGDIR=${ASTLOGDIR}
MAKE_FLAGS+=		ASTHEADERDIR=${PREFIX}/include/asterisk
MAKE_FLAGS+=		ASTCONFPATH=${ASTETCDIR}/asterisk.conf
MAKE_FLAGS+=		ASTBINDIR=${PREFIX}/bin
MAKE_FLAGS+=		ASTSBINDIR=${PREFIX}/sbin
MAKE_FLAGS+=		ASTVARRUNDIR=${ASTVARRUNDIR}
MAKE_FLAGS+=		ASTMANDIR=${PREFIX}/${PKGMANDIR}
MAKE_FLAGS+=		ASTETCDIR=${ASTETCDIR}
MAKE_FLAGS+=		ASTDBDIR=${ASTDBDIR}
MAKE_FLAGS+=		AGI_DIR=${PREFIX}/libexec/agi-bin
MAKE_FLAGS+=		ASTEXAMPLEDIR=${ASTEXAMPLEDIR}
MAKE_FLAGS+=		WRKSRC=${WRKSRC}
MAKE_FLAGS+=		LDOPTS=${LDFLAGS:M*:Q}
MAKE_FLAGS+=		HTTP_DOCSDIR=${PREFIX}/share/httpd/htdocs
MAKE_FLAGS+=		HTTP_CGIDIR=${PREFIX}/libexec/cgi-bin
MAKE_FLAGS+=		OPTIMIZE=-O3
# uncomment the following to debug build problems
#MAKE_FLAGS+=		NOISY_BUILD=yes

.if ${MACHINE_PLATFORM:MSunOS-*-i386}
BUILDLINK_TRANSFORM+=	rm:-march=i386
.endif

PLIST_VARS+=	kqueue
.if defined(OPSYS_HAS_KQUEUE)
PLIST.kqueue=	yes
.endif

PLIST_VARS+=		timerfd
.if defined(OPSYS_HAS_TIMERFD)
PLIST.timerfd=		yes
.else
CONFIGURE_ARGS+=	--without-timerfd
.endif

.include "options.mk"

# check sounds/Makefile for current version when upgrading package
DISTFILES+=	asterisk-extra-sounds-en-gsm-1.5.2.tar.gz

# pjproject
PJPROJ_VERSION=	2.14
SITES.pjproject-${PJPROJ_VERSION}.tar.bz2= \
	-https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/${PJPROJ_VERSION}/pjproject-${PJPROJ_VERSION}.tar.bz2
SITES.pjproject-${PJPROJ_VERSION}.md5= \
	-https://raw.githubusercontent.com/asterisk/third-party/master/pjproject/${PJPROJ_VERSION}/MD5SUM.TXT
DISTFILES+=	pjproject-${PJPROJ_VERSION}.tar.bz2 pjproject-${PJPROJ_VERSION}.md5
ALL_ENV+=	EXTERNALS_CACHE_DIR=${DISTDIR}/${DIST_SUBDIR}

# Override default paths in config files
SUBST_CLASSES+=		configs
SUBST_STAGE.configs=	pre-configure
SUBST_FILES.configs=	configs/samples/cli_aliases.conf.sample
SUBST_FILES.configs+=	configs/samples/festival.conf.sample
SUBST_FILES.configs+=	configs/samples/http.conf.sample
SUBST_FILES.configs+=	configs/samples/iax.conf.sample
SUBST_FILES.configs+=	configs/samples/musiconhold.conf.sample
SUBST_FILES.configs+=	configs/samples/phoneprov.conf.sample
SUBST_SED.configs+=	-e 's|doc/|${PREFIX}/share/doc/${PKGBASE}/|'
SUBST_SED.configs+=	-e 's|/etc/asterisk|${ASTETCDIR}|'
SUBST_SED.configs+=	-e 's|/var/lib/asterisk|${ASTVARLIBDIR}|'
SUBST_SED.configs+=	-e "s|/usr/local/man|${ASTMANDIR}|"
SUBST_SED.configs+=	-e "s|/usr/local|${PREFIX}|"
SUBST_SED.configs+=	-e "s|/var|${VARBASE}|"

# XXX gross hack, remove when item is fixed
SUBST_CLASSES.NetBSD+=	autoconfig
SUBST_STAGE.autoconfig=	post-configure
SUBST_FILES.autoconfig=	include/asterisk/autoconfig.h
SUBST_SED.autoconfig=	-e "s|^\#define HAVE_GCC_ATOMICS 1|\#undef HAVE_GCC_ATOMICS|"
SUBST_SED.autoconfig+=	-e "s|^\#define HAVE_GETHOSTBYNAME_R_6 1|\#undef HAVE_GETHOSTBYNAME_R_6|"

# XXX gross hack, IP_PKTINFO in NetBSD isn't compatible with anything else
SUBST_CLASSES.NetBSD+=	pktinfo
SUBST_STAGE.pktinfo=	post-configure
SUBST_FILES.pktinfo=	include/asterisk/autoconfig.h
SUBST_SED.pktinfo=	-e "s|^\#define HAVE_PKTINFO 1|\#undef HAVE_PKTINFO|"

RCD_SCRIPTS=		asterisk
OWN_DIRS_PERMS+=	${ASTDBDIR} ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR} ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/dictate ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/meetme ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/monitor ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/outgoing ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/system ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/tmp ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail/default ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail/default/1234 ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail/default/1234/INBOX ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail/default/1234/en ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
SPECIAL_PERMS+=		${ASTSPOOLDIR}/voicemail/default/1234/en/busy.gsm ${ASTERISK_USER} ${ASTERISK_GROUP} 0644
SPECIAL_PERMS+=		${ASTSPOOLDIR}/voicemail/default/1234/en/unavail.gsm ${ASTERISK_USER} ${ASTERISK_GROUP} 0644
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail/default/INBOX ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTSPOOLDIR}/voicemail/default/en ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTLOGDIR} ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTLOGDIR}/cdr-csv ${ASTERISK_USER} ${ASTERISK_GROUP} 0755
OWN_DIRS_PERMS+=	${ASTLOGDIR}/cdr-custom ${ASTERISK_USER} ${ASTERISK_GROUP} 0755

CONF_FILES_PERMS=	# empty
.for f in asterisk.conf extensions.conf
CONF_FILES_PERMS+=	${ASTEXAMPLEDIR}/${f:Q} ${PKG_SYSCONFDIR}/${f:Q} ${ASTERISK_USER} ${ASTERISK_GROUP} 0644
.endfor

.if !empty(PKG_OPTIONS:Masterisk-config)
# if we put all the files in $CONF_FILES, the message is _way_ too long.
.  for f in acl.conf adsi.conf aeap.conf agents.conf alarmreceiver.conf	\
	amd.conf app_skel.conf ari.conf	 ast_debug_tools.conf		\
	asterisk.adsi calendar.conf ccss.conf cdr.conf			\
	cdr_adaptive_odbc.conf cdr_beanstalkd.conf cdr_custom.conf	\
	cdr_manager.conf cdr_odbc.conf cdr_pgsql.conf			\
	cdr_sqlite3_custom.conf cdr_tds.conf cel.conf			\
	cel_beanstalkd.conf cel_custom.conf cel_odbc.conf		\
	cel_pgsql.conf cel_sqlite3_custom.conf cel_tds.conf		\
	chan_dahdi.conf	chan_mobile.conf cli.conf cli_aliases.conf	\
	cli_permissions.conf codecs.conf confbridge.conf		\
	config_test.conf console.conf dbsep.conf dnsmgr.conf dsp.conf	\
	dundi.conf enum.conf extconfig.conf extensions.ael		\
	extensions.conf extensions.lua extensions_minivm.conf		\
	features.conf festival.conf followme.conf func_odbc.conf	\
	geolocation.conf hep.conf http.conf iax.conf iaxprov.conf	\
	indications.conf logger.conf manager.conf meetme.conf		\
	minivm.conf modules.conf motif.conf musiconhold.conf		\
	ooh323.conf phoneprov.conf pjproject.conf pjsip.conf		\
	pjsip_notify.conf pjsip_wizard.conf prometheus.conf		\
	queuerules.conf queues.conf res_config_mysql.conf		\
	res_config_odbc.conf res_config_sqlite3.conf res_corosync.conf	\
	res_curl.conf res_fax.conf res_http_media_cache.conf		\
	res_ldap.conf res_odbc.conf res_parking.conf res_pgsql.conf	\
	res_snmp.conf res_stun_monitor.conf resolver_unbound.conf	\
	rtp.conf say.conf sla.conf smdi.conf sorcery.conf ss7.timers	\
	stasis.conf statsd.conf stir_shaken.conf telcordia-1.adsi	\
	test_sorcery.conf udptl.conf unistim.conf users.conf		\
	voicemail.conf xmpp.conf
CONF_FILES_PERMS+=		${ASTEXAMPLEDIR}/${f:Q} ${PKG_SYSCONFDIR}/${f:Q} ${ASTERISK_USER} ${ASTERISK_GROUP} 0644
.  endfor
.endif

PTHREAD_OPTS+=	require native

.if (${OPSYS} == "Darwin" && exists(/usr/include/sys/poll.h))
post-patch:
	${ECHO} "#include <sys/poll.h>" > ${WRKSRC}/include/asterisk/poll-compat.h
.endif

post-install:
# check sounds directory for current versions when upgrading package
	${TAR} xzf ${WRKSRC}/sounds/asterisk-core-sounds-en-gsm-1.6.1.tar.gz -C ${DESTDIR}${ASTDATADIR}/sounds/en
	${TAR} xzf ${WRKSRC}/sounds/asterisk-moh-opsound-wav-2.03.tar.gz -C ${DESTDIR}${ASTDATADIR}/moh
	${TAR} xzf ${DISTDIR}/${DIST_SUBDIR}/asterisk-extra-sounds-en-gsm-1.5.2.tar.gz -C ${DESTDIR}${ASTDATADIR}/sounds/en
	${INSTALL_DATA} ${WRKSRC}/BUGS ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/COPYING ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/CREDITS ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/ChangeLogs/ChangeLog-21.0.0.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/ChangeLogs/ChangeLog-21.0.1.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/ChangeLogs/ChangeLog-21.0.2.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/ChangeLogs/ChangeLog-21.1.0.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/ChangeLogs/ChangeLog-21.2.0.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/ChangeLogs/historical/CHANGES ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/LICENSE ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/README-SERIOUSLY.bestpractices.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/README.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/SECURITY.md ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/Zaptel-to-DAHDI.txt ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/doc/IAX2-security.pdf ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/doc/IAX2-security.txt ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}
	${INSTALL_DATA} ${WRKSRC}/doc/README.txt ${DESTDIR}${PREFIX}/share/doc/${PKGBASE}

.if ${OPSYS} != "Darwin" && ${PKGSRC_COMPILER:Mclang}
.include "../../lang/libBlocksRuntime/buildlink3.mk"
LDFLAGS+= -L${PREFIX}/lib
.endif

.include "../../databases/sqlite3/buildlink3.mk"
.include "../../devel/editline/buildlink3.mk"
.include "../../devel/libuuid/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../lang/python/application.mk"
.include "../../textproc/jansson/buildlink3.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../textproc/libxml2/buildlink3.mk"
.include "../../www/curl/buildlink3.mk"
.include "../../mk/curses.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/termcap.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

File Added: pkgsrc/comms/asterisk21/PLIST
@comment $NetBSD: PLIST,v 1.1 2024/04/08 03:20:06 jnemeth Exp $
lib/asterisk/libasteriskpj.so
lib/asterisk/libasteriskpj.so.2
lib/asterisk/modules/app_adsiprog.so
lib/asterisk/modules/app_agent_pool.so
lib/asterisk/modules/app_alarmreceiver.so
lib/asterisk/modules/app_amd.so
lib/asterisk/modules/app_attended_transfer.so
lib/asterisk/modules/app_audiosocket.so
lib/asterisk/modules/app_authenticate.so
lib/asterisk/modules/app_blind_transfer.so
lib/asterisk/modules/app_bridgeaddchan.so
lib/asterisk/modules/app_bridgewait.so
lib/asterisk/modules/app_broadcast.so
lib/asterisk/modules/app_cdr.so
lib/asterisk/modules/app_celgenuserevent.so
lib/asterisk/modules/app_chanisavail.so
lib/asterisk/modules/app_channelredirect.so
lib/asterisk/modules/app_chanspy.so
lib/asterisk/modules/app_confbridge.so
lib/asterisk/modules/app_controlplayback.so
lib/asterisk/modules/app_db.so
lib/asterisk/modules/app_dial.so
lib/asterisk/modules/app_dictate.so
lib/asterisk/modules/app_directed_pickup.so
lib/asterisk/modules/app_directory.so
lib/asterisk/modules/app_disa.so
lib/asterisk/modules/app_dtmfstore.so
lib/asterisk/modules/app_dumpchan.so
lib/asterisk/modules/app_echo.so
lib/asterisk/modules/app_exec.so
lib/asterisk/modules/app_externalivr.so
lib/asterisk/modules/app_festival.so
lib/asterisk/modules/app_followme.so
lib/asterisk/modules/app_forkcdr.so
lib/asterisk/modules/app_getcpeid.so
lib/asterisk/modules/app_if.so
lib/asterisk/modules/app_mf.so
lib/asterisk/modules/app_milliwatt.so
lib/asterisk/modules/app_minivm.so
lib/asterisk/modules/app_mixmonitor.so
lib/asterisk/modules/app_morsecode.so
lib/asterisk/modules/app_mp3.so
lib/asterisk/modules/app_originate.so
lib/asterisk/modules/app_page.so
lib/asterisk/modules/app_playback.so
lib/asterisk/modules/app_playtones.so
lib/asterisk/modules/app_privacy.so
lib/asterisk/modules/app_queue.so
lib/asterisk/modules/app_read.so
lib/asterisk/modules/app_readexten.so
lib/asterisk/modules/app_record.so
lib/asterisk/modules/app_reload.so
lib/asterisk/modules/app_sayunixtime.so
lib/asterisk/modules/app_senddtmf.so
lib/asterisk/modules/app_sendtext.so
lib/asterisk/modules/app_sf.so
lib/asterisk/modules/app_signal.so
lib/asterisk/modules/app_sla.so
lib/asterisk/modules/app_sms.so
lib/asterisk/modules/app_softhangup.so
lib/asterisk/modules/app_speech_utils.so
lib/asterisk/modules/app_stack.so
lib/asterisk/modules/app_stasis.so
lib/asterisk/modules/app_stream_echo.so
lib/asterisk/modules/app_system.so
lib/asterisk/modules/app_talkdetect.so
lib/asterisk/modules/app_test.so
lib/asterisk/modules/app_transfer.so
lib/asterisk/modules/app_userevent.so
lib/asterisk/modules/app_verbose.so
lib/asterisk/modules/app_voicemail.so
lib/asterisk/modules/app_waitforcond.so
lib/asterisk/modules/app_waitforring.so
lib/asterisk/modules/app_waitforsilence.so
lib/asterisk/modules/app_waituntil.so
lib/asterisk/modules/app_while.so
lib/asterisk/modules/app_zapateller.so
lib/asterisk/modules/bridge_builtin_features.so
lib/asterisk/modules/bridge_builtin_interval_features.so
lib/asterisk/modules/bridge_holding.so
lib/asterisk/modules/bridge_native_rtp.so
lib/asterisk/modules/bridge_simple.so
lib/asterisk/modules/bridge_softmix.so
${PLIST.unixodbc}lib/asterisk/modules/cdr_adaptive_odbc.so
lib/asterisk/modules/cdr_csv.so
lib/asterisk/modules/cdr_custom.so
lib/asterisk/modules/cdr_manager.so
${PLIST.unixodbc}lib/asterisk/modules/cdr_odbc.so
${PLIST.pgsql}lib/asterisk/modules/cdr_pgsql.so
lib/asterisk/modules/cdr_sqlite3_custom.so
lib/asterisk/modules/cel_custom.so
lib/asterisk/modules/cel_manager.so
${PLIST.unixodbc}lib/asterisk/modules/cel_odbc.so
${PLIST.pgsql}lib/asterisk/modules/cel_pgsql.so
lib/asterisk/modules/cel_sqlite3_custom.so
lib/asterisk/modules/chan_audiosocket.so
lib/asterisk/modules/chan_bridge_media.so
lib/asterisk/modules/chan_iax2.so
${PLIST.jabber}lib/asterisk/modules/chan_motif.so
lib/asterisk/modules/chan_pjsip.so
lib/asterisk/modules/chan_rtp.so
lib/asterisk/modules/chan_unistim.so
lib/asterisk/modules/codec_a_mu.so
lib/asterisk/modules/codec_adpcm.so
lib/asterisk/modules/codec_alaw.so
lib/asterisk/modules/codec_g722.so
lib/asterisk/modules/codec_g726.so
lib/asterisk/modules/codec_gsm.so
lib/asterisk/modules/codec_ilbc.so
lib/asterisk/modules/codec_lpc10.so
lib/asterisk/modules/codec_resample.so
${PLIST.speex}lib/asterisk/modules/codec_speex.so
lib/asterisk/modules/codec_ulaw.so
lib/asterisk/modules/format_g719.so
lib/asterisk/modules/format_g723.so
lib/asterisk/modules/format_g726.so
lib/asterisk/modules/format_g729.so
lib/asterisk/modules/format_gsm.so
lib/asterisk/modules/format_h263.so
lib/asterisk/modules/format_h264.so
lib/asterisk/modules/format_ilbc.so
${PLIST.speex}lib/asterisk/modules/format_ogg_speex.so
lib/asterisk/modules/format_pcm.so
lib/asterisk/modules/format_siren14.so
lib/asterisk/modules/format_siren7.so
lib/asterisk/modules/format_sln.so
lib/asterisk/modules/format_vox.so
lib/asterisk/modules/format_wav.so
lib/asterisk/modules/format_wav_gsm.so
lib/asterisk/modules/func_aes.so
lib/asterisk/modules/func_base64.so
lib/asterisk/modules/func_blacklist.so
lib/asterisk/modules/func_callcompletion.so
lib/asterisk/modules/func_callerid.so
lib/asterisk/modules/func_cdr.so
lib/asterisk/modules/func_channel.so
lib/asterisk/modules/func_config.so
lib/asterisk/modules/func_curl.so
lib/asterisk/modules/func_cut.so
lib/asterisk/modules/func_db.so
lib/asterisk/modules/func_devstate.so
lib/asterisk/modules/func_dialgroup.so
lib/asterisk/modules/func_dialplan.so
lib/asterisk/modules/func_enum.so
lib/asterisk/modules/func_env.so
lib/asterisk/modules/func_evalexten.so
lib/asterisk/modules/func_export.so
lib/asterisk/modules/func_extstate.so
lib/asterisk/modules/func_frame_drop.so
lib/asterisk/modules/func_frame_trace.so
lib/asterisk/modules/func_global.so
lib/asterisk/modules/func_groupcount.so
lib/asterisk/modules/func_hangupcause.so
lib/asterisk/modules/func_holdintercept.so
lib/asterisk/modules/func_iconv.so
lib/asterisk/modules/func_jitterbuffer.so
lib/asterisk/modules/func_json.so
lib/asterisk/modules/func_lock.so
lib/asterisk/modules/func_logic.so
lib/asterisk/modules/func_math.so
lib/asterisk/modules/func_md5.so
lib/asterisk/modules/func_module.so
${PLIST.unixodbc}lib/asterisk/modules/func_odbc.so
lib/asterisk/modules/func_periodic_hook.so
lib/asterisk/modules/func_pitchshift.so
lib/asterisk/modules/func_pjsip_aor.so
lib/asterisk/modules/func_pjsip_contact.so
lib/asterisk/modules/func_pjsip_endpoint.so
lib/asterisk/modules/func_presencestate.so
lib/asterisk/modules/func_rand.so
lib/asterisk/modules/func_realtime.so
lib/asterisk/modules/func_sayfiles.so
lib/asterisk/modules/func_scramble.so
lib/asterisk/modules/func_sha1.so
lib/asterisk/modules/func_shell.so
lib/asterisk/modules/func_sorcery.so
${PLIST.speex}lib/asterisk/modules/func_speex.so
lib/asterisk/modules/func_sprintf.so
lib/asterisk/modules/func_srv.so
lib/asterisk/modules/func_strings.so
lib/asterisk/modules/func_sysinfo.so
lib/asterisk/modules/func_talkdetect.so
lib/asterisk/modules/func_timeout.so
lib/asterisk/modules/func_uri.so
lib/asterisk/modules/func_version.so
lib/asterisk/modules/func_vmcount.so
lib/asterisk/modules/func_volume.so
lib/asterisk/modules/pbx_ael.so
lib/asterisk/modules/pbx_config.so
lib/asterisk/modules/pbx_dundi.so
lib/asterisk/modules/pbx_loopback.so
lib/asterisk/modules/pbx_realtime.so
lib/asterisk/modules/pbx_spool.so
lib/asterisk/modules/res_adsi.so
lib/asterisk/modules/res_aeap.so
lib/asterisk/modules/res_ael_share.so
lib/asterisk/modules/res_agi.so
lib/asterisk/modules/res_ari.so
lib/asterisk/modules/res_ari_applications.so
lib/asterisk/modules/res_ari_asterisk.so
lib/asterisk/modules/res_ari_bridges.so
lib/asterisk/modules/res_ari_channels.so
lib/asterisk/modules/res_ari_device_states.so
lib/asterisk/modules/res_ari_endpoints.so
lib/asterisk/modules/res_ari_events.so
lib/asterisk/modules/res_ari_model.so
lib/asterisk/modules/res_ari_playbacks.so
lib/asterisk/modules/res_ari_recordings.so
lib/asterisk/modules/res_ari_sounds.so
lib/asterisk/modules/res_audiosocket.so
lib/asterisk/modules/res_calendar.so
lib/asterisk/modules/res_clialiases.so
lib/asterisk/modules/res_clioriginate.so
lib/asterisk/modules/res_config_curl.so
${PLIST.ldap}lib/asterisk/modules/res_config_ldap.so
${PLIST.unixodbc}lib/asterisk/modules/res_config_odbc.so
${PLIST.pgsql}lib/asterisk/modules/res_config_pgsql.so
lib/asterisk/modules/res_config_sqlite3.so
lib/asterisk/modules/res_convert.so
lib/asterisk/modules/res_crypto.so
lib/asterisk/modules/res_curl.so
lib/asterisk/modules/res_fax.so
${PLIST.spandsp}lib/asterisk/modules/res_fax_spandsp.so
lib/asterisk/modules/res_format_attr_celt.so
lib/asterisk/modules/res_format_attr_g729.so
lib/asterisk/modules/res_format_attr_h263.so
lib/asterisk/modules/res_format_attr_h264.so
lib/asterisk/modules/res_format_attr_ilbc.so
lib/asterisk/modules/res_format_attr_opus.so
lib/asterisk/modules/res_format_attr_silk.so
lib/asterisk/modules/res_format_attr_siren14.so
lib/asterisk/modules/res_format_attr_siren7.so
lib/asterisk/modules/res_format_attr_vp8.so
lib/asterisk/modules/res_hep.so
lib/asterisk/modules/res_hep_pjsip.so
lib/asterisk/modules/res_hep_rtcp.so
lib/asterisk/modules/res_http_media_cache.so
lib/asterisk/modules/res_http_websocket.so
lib/asterisk/modules/res_limit.so
lib/asterisk/modules/res_manager_devicestate.so
lib/asterisk/modules/res_manager_presencestate.so
lib/asterisk/modules/res_musiconhold.so
lib/asterisk/modules/res_mutestream.so
lib/asterisk/modules/res_mwi_devstate.so
${PLIST.unixodbc}lib/asterisk/modules/res_odbc.so
${PLIST.unixodbc}lib/asterisk/modules/res_odbc_transaction.so
lib/asterisk/modules/res_parking.so
lib/asterisk/modules/res_phoneprov.so
lib/asterisk/modules/res_pjproject.so
lib/asterisk/modules/res_pjsip.so
lib/asterisk/modules/res_pjsip_acl.so
lib/asterisk/modules/res_pjsip_aoc.so
lib/asterisk/modules/res_pjsip_authenticator_digest.so
lib/asterisk/modules/res_pjsip_caller_id.so
lib/asterisk/modules/res_pjsip_config_wizard.so
lib/asterisk/modules/res_pjsip_dialog_info_body_generator.so
lib/asterisk/modules/res_pjsip_diversion.so
lib/asterisk/modules/res_pjsip_dlg_options.so
lib/asterisk/modules/res_pjsip_dtmf_info.so
lib/asterisk/modules/res_pjsip_empty_info.so
lib/asterisk/modules/res_pjsip_endpoint_identifier_anonymous.so
lib/asterisk/modules/res_pjsip_endpoint_identifier_ip.so
lib/asterisk/modules/res_pjsip_endpoint_identifier_user.so
lib/asterisk/modules/res_pjsip_exten_state.so
lib/asterisk/modules/res_pjsip_header_funcs.so
lib/asterisk/modules/res_pjsip_history.so
lib/asterisk/modules/res_pjsip_logger.so
lib/asterisk/modules/res_pjsip_messaging.so
lib/asterisk/modules/res_pjsip_mwi.so
lib/asterisk/modules/res_pjsip_mwi_body_generator.so
lib/asterisk/modules/res_pjsip_nat.so
lib/asterisk/modules/res_pjsip_notify.so
lib/asterisk/modules/res_pjsip_one_touch_record_info.so
lib/asterisk/modules/res_pjsip_outbound_authenticator_digest.so
lib/asterisk/modules/res_pjsip_outbound_publish.so
lib/asterisk/modules/res_pjsip_outbound_registration.so
lib/asterisk/modules/res_pjsip_path.so
lib/asterisk/modules/res_pjsip_phoneprov_provider.so
lib/asterisk/modules/res_pjsip_pidf_body_generator.so
lib/asterisk/modules/res_pjsip_pidf_digium_body_supplement.so
lib/asterisk/modules/res_pjsip_pidf_eyebeam_body_supplement.so
lib/asterisk/modules/res_pjsip_publish_asterisk.so
lib/asterisk/modules/res_pjsip_pubsub.so
lib/asterisk/modules/res_pjsip_refer.so
lib/asterisk/modules/res_pjsip_registrar.so
lib/asterisk/modules/res_pjsip_rfc3326.so
lib/asterisk/modules/res_pjsip_rfc3329.so
lib/asterisk/modules/res_pjsip_sdp_rtp.so
lib/asterisk/modules/res_pjsip_send_to_voicemail.so
lib/asterisk/modules/res_pjsip_session.so
lib/asterisk/modules/res_pjsip_sips_contact.so
lib/asterisk/modules/res_pjsip_t38.so
lib/asterisk/modules/res_pjsip_transport_websocket.so
lib/asterisk/modules/res_pjsip_xpidf_body_generator.so
lib/asterisk/modules/res_prometheus.so
lib/asterisk/modules/res_realtime.so
lib/asterisk/modules/res_rtp_asterisk.so
lib/asterisk/modules/res_rtp_multicast.so
lib/asterisk/modules/res_security_log.so
lib/asterisk/modules/res_smdi.so
${PLIST.snmp}lib/asterisk/modules/res_snmp.so
lib/asterisk/modules/res_sorcery_astdb.so
lib/asterisk/modules/res_sorcery_config.so
lib/asterisk/modules/res_sorcery_memory.so
lib/asterisk/modules/res_sorcery_memory_cache.so
lib/asterisk/modules/res_sorcery_realtime.so
lib/asterisk/modules/res_speech.so
lib/asterisk/modules/res_speech_aeap.so
${PLIST.srtp}lib/asterisk/modules/res_srtp.so
lib/asterisk/modules/res_stasis.so
lib/asterisk/modules/res_stasis_answer.so
lib/asterisk/modules/res_stasis_device_state.so
lib/asterisk/modules/res_stasis_playback.so
lib/asterisk/modules/res_stasis_recording.so
lib/asterisk/modules/res_stasis_snoop.so
lib/asterisk/modules/res_statsd.so
lib/asterisk/modules/res_stun_monitor.so
${PLIST.kqueue}lib/asterisk/modules/res_timing_kqueue.so
lib/asterisk/modules/res_timing_pthread.so
${PLIST.timerfd}lib/asterisk/modules/res_timing_timerfd.so
lib/asterisk/modules/res_tonedetect.so
${PLIST.jabber}lib/asterisk/modules/res_xmpp.so
lib/libasteriskssl.so
lib/libasteriskssl.so.1
lib/pkgconfig/asterisk.pc
libdata/asterisk/documentation/appdocsxml.dtd
libdata/asterisk/documentation/appdocsxml.xslt
libdata/asterisk/documentation/core-en_US.xml
libdata/asterisk/images/asterisk-intro.jpg
libdata/asterisk/images/kpad2.jpg
libdata/asterisk/moh/.asterisk-moh-opsound-wav-2.03
libdata/asterisk/moh/CHANGES-asterisk-moh-opsound-wav
libdata/asterisk/moh/CREDITS-asterisk-moh-opsound-wav
libdata/asterisk/moh/LICENSE-asterisk-moh-opsound-wav
libdata/asterisk/moh/macroform-cold_day.wav
libdata/asterisk/moh/macroform-robot_dity.wav
libdata/asterisk/moh/macroform-the_simplicity.wav
libdata/asterisk/moh/manolo_camp-morning_coffee.wav
libdata/asterisk/moh/reno_project-system.wav
libdata/asterisk/phoneprov/000000000000-directory.xml
libdata/asterisk/phoneprov/000000000000-phone.cfg
libdata/asterisk/phoneprov/000000000000.cfg
libdata/asterisk/phoneprov/polycom.xml
libdata/asterisk/phoneprov/polycom_line.xml
libdata/asterisk/phoneprov/snom-mac.xml
libdata/asterisk/rest-api/applications.json
libdata/asterisk/rest-api/asterisk.json
libdata/asterisk/rest-api/bridges.json
libdata/asterisk/rest-api/channels.json
libdata/asterisk/rest-api/deviceStates.json
libdata/asterisk/rest-api/endpoints.json
libdata/asterisk/rest-api/events.json
libdata/asterisk/rest-api/mailboxes.json
libdata/asterisk/rest-api/playbacks.json
libdata/asterisk/rest-api/recordings.json
libdata/asterisk/rest-api/resources.json
libdata/asterisk/rest-api/sounds.json
libdata/asterisk/scripts/ast_coredumper
libdata/asterisk/scripts/ast_logescalator
libdata/asterisk/scripts/ast_loggrabber
libdata/asterisk/scripts/refcounter.py
libdata/asterisk/scripts/reflocks.py
libdata/asterisk/scripts/refstats.py
libdata/asterisk/sounds/en/.asterisk-core-sounds-en-gsm-1.6.1
libdata/asterisk/sounds/en/1-for-am-2-for-pm.gsm
libdata/asterisk/sounds/en/1-yes-2-no.gsm
libdata/asterisk/sounds/en/CHANGES-asterisk-core-en-1.6.1
libdata/asterisk/sounds/en/CHANGES-asterisk-extra-en-1.5.2
libdata/asterisk/sounds/en/CREDITS-asterisk-core-en-1.6.1
libdata/asterisk/sounds/en/CREDITS-asterisk-extra-en-1.5.2
libdata/asterisk/sounds/en/LICENSE-asterisk-core-en-1.6.1
libdata/asterisk/sounds/en/LICENSE-asterisk-extra-en-1.5.2
libdata/asterisk/sounds/en/OfficeSpace.gsm
libdata/asterisk/sounds/en/Randulo-allison.gsm
libdata/asterisk/sounds/en/SIP_Test_Failure.gsm
libdata/asterisk/sounds/en/SIP_Test_Success.gsm
libdata/asterisk/sounds/en/T-changed-to.gsm
libdata/asterisk/sounds/en/T-is-not-available.gsm
libdata/asterisk/sounds/en/T-to-disable-ancmnt.gsm
libdata/asterisk/sounds/en/T-to-enable-ancmnt.gsm
libdata/asterisk/sounds/en/T-to-hear-cur-ancmnt.gsm
libdata/asterisk/sounds/en/T-to-leave-msg.gsm
libdata/asterisk/sounds/en/T-to-reach-main-office.gsm
libdata/asterisk/sounds/en/T-to-rec-ancmnt.gsm
libdata/asterisk/sounds/en/T-to-rtrn-to-main-menu.gsm
libdata/asterisk/sounds/en/a-charge-for-this-svc.gsm
libdata/asterisk/sounds/en/a-collect-charge-of.gsm
libdata/asterisk/sounds/en/a-collect-charge.gsm
libdata/asterisk/sounds/en/a-connect-charge-of.gsm
libdata/asterisk/sounds/en/a-connect-charge.gsm
libdata/asterisk/sounds/en/abandon-all-hope.gsm
libdata/asterisk/sounds/en/abandons.gsm
libdata/asterisk/sounds/en/academic-support.gsm
libdata/asterisk/sounds/en/access-code.gsm
libdata/asterisk/sounds/en/access-denied.gsm
libdata/asterisk/sounds/en/access-granted.gsm
libdata/asterisk/sounds/en/accessible-through-system.gsm
libdata/asterisk/sounds/en/account-balance-is.gsm
libdata/asterisk/sounds/en/account_number.gsm
libdata/asterisk/sounds/en/accounting.gsm
libdata/asterisk/sounds/en/accounts-payable.gsm
libdata/asterisk/sounds/en/accounts-receivable.gsm
libdata/asterisk/sounds/en/activated.gsm
libdata/asterisk/sounds/en/added-to.gsm
libdata/asterisk/sounds/en/added.gsm
libdata/asterisk/sounds/en/address.gsm
libdata/asterisk/sounds/en/administration.gsm
libdata/asterisk/sounds/en/advised-to-seek-shelter.gsm
libdata/asterisk/sounds/en/after-the-tone.gsm
libdata/asterisk/sounds/en/after_tone.gsm
libdata/asterisk/sounds/en/afternoon.gsm
libdata/asterisk/sounds/en/agent-alreadyon.gsm
libdata/asterisk/sounds/en/agent-incorrect.gsm
libdata/asterisk/sounds/en/agent-loggedoff.gsm
libdata/asterisk/sounds/en/agent-loginok.gsm
libdata/asterisk/sounds/en/agent-newlocation.gsm
libdata/asterisk/sounds/en/agent-pass.gsm
libdata/asterisk/sounds/en/agent-user.gsm
libdata/asterisk/sounds/en/airport.gsm
libdata/asterisk/sounds/en/alabama.gsm
libdata/asterisk/sounds/en/alaska.gsm
libdata/asterisk/sounds/en/albuquerque.gsm
libdata/asterisk/sounds/en/alert.gsm
libdata/asterisk/sounds/en/all-circuits-busy-now.gsm
libdata/asterisk/sounds/en/all-outgoing-lines-unavailable.gsm
libdata/asterisk/sounds/en/all-reps-busy.gsm
libdata/asterisk/sounds/en/all-your-base.gsm
libdata/asterisk/sounds/en/altitude.gsm
libdata/asterisk/sounds/en/ampersand.gsm
libdata/asterisk/sounds/en/an-error-has-occurred.gsm
libdata/asterisk/sounds/en/and-area-code.gsm
libdata/asterisk/sounds/en/and-or.gsm
libdata/asterisk/sounds/en/and-prs-pound-whn-finished.gsm
libdata/asterisk/sounds/en/and.gsm
libdata/asterisk/sounds/en/andnowstandby.gsm
libdata/asterisk/sounds/en/another-time.gsm
libdata/asterisk/sounds/en/approaching.gsm
libdata/asterisk/sounds/en/approximately.gsm
libdata/asterisk/sounds/en/are-you-still-there.gsm
libdata/asterisk/sounds/en/are-you-still-there2.gsm
libdata/asterisk/sounds/en/arizona.gsm
libdata/asterisk/sounds/en/arkansas.gsm
libdata/asterisk/sounds/en/arlington.gsm
libdata/asterisk/sounds/en/ascending-2tone.gsm
libdata/asterisk/sounds/en/astcc-account-balance-is.gsm
libdata/asterisk/sounds/en/astcc-account-number-invalid.gsm
libdata/asterisk/sounds/en/astcc-balance-of-account-is.gsm
libdata/asterisk/sounds/en/astcc-card-number-invalid.gsm
libdata/asterisk/sounds/en/astcc-digit-account-number.gsm
libdata/asterisk/sounds/en/astcc-followed-by-the-hash-key.gsm
libdata/asterisk/sounds/en/astcc-followed-by-the-pound-key.gsm
libdata/asterisk/sounds/en/astcc-login12pound.gsm
libdata/asterisk/sounds/en/astcc-please-enter-your.gsm
libdata/asterisk/sounds/en/astcc-skipping-any-punctuation.gsm
libdata/asterisk/sounds/en/asterisk-friend.gsm
libdata/asterisk/sounds/en/at-any-time.gsm
libdata/asterisk/sounds/en/at-customers-request.gsm
libdata/asterisk/sounds/en/at-following-number.gsm
libdata/asterisk/sounds/en/at-sign.gsm
libdata/asterisk/sounds/en/at-tone-time-exactly.gsm
libdata/asterisk/sounds/en/at_tone.gsm
libdata/asterisk/sounds/en/athletics.gsm
libdata/asterisk/sounds/en/atlanta.gsm
libdata/asterisk/sounds/en/atlantic.gsm
libdata/asterisk/sounds/en/attention-required.gsm
libdata/asterisk/sounds/en/auditing.gsm
libdata/asterisk/sounds/en/austin.gsm
libdata/asterisk/sounds/en/auth-incorrect.gsm
libdata/asterisk/sounds/en/auth-thankyou.gsm
libdata/asterisk/sounds/en/available-options.gsm
libdata/asterisk/sounds/en/available.gsm
libdata/asterisk/sounds/en/avg-speed-answer.gsm
libdata/asterisk/sounds/en/away-naughty-boy.gsm
libdata/asterisk/sounds/en/away-naughty-girl.gsm
libdata/asterisk/sounds/en/awkward.gsm
libdata/asterisk/sounds/en/backslash.gsm
libdata/asterisk/sounds/en/bad.gsm
libdata/asterisk/sounds/en/baltimore.gsm
libdata/asterisk/sounds/en/bar.gsm
libdata/asterisk/sounds/en/barn.gsm
libdata/asterisk/sounds/en/barns.gsm
libdata/asterisk/sounds/en/barometric.gsm
libdata/asterisk/sounds/en/basic-pbx-ivr-main.gsm
libdata/asterisk/sounds/en/bearing.gsm
libdata/asterisk/sounds/en/beaufort.gsm
libdata/asterisk/sounds/en/because-paranoid.gsm
libdata/asterisk/sounds/en/beep.gsm
libdata/asterisk/sounds/en/beeperr.gsm
libdata/asterisk/sounds/en/before-the-number.gsm
libdata/asterisk/sounds/en/believe-its-free.gsm
libdata/asterisk/sounds/en/billing-and-collections.gsm
libdata/asterisk/sounds/en/billing.gsm
libdata/asterisk/sounds/en/billionth.gsm
libdata/asterisk/sounds/en/binary.gsm
libdata/asterisk/sounds/en/bits.gsm
libdata/asterisk/sounds/en/blue-eyed-polar-bear.gsm
libdata/asterisk/sounds/en/bombsquad.gsm
libdata/asterisk/sounds/en/bookstore.gsm
libdata/asterisk/sounds/en/boston.gsm
libdata/asterisk/sounds/en/box.gsm
libdata/asterisk/sounds/en/brian.gsm
libdata/asterisk/sounds/en/business-development.gsm
libdata/asterisk/sounds/en/busy-hangovers.gsm
libdata/asterisk/sounds/en/busy-pls-hold.gsm
libdata/asterisk/sounds/en/but.gsm
libdata/asterisk/sounds/en/by.gsm
libdata/asterisk/sounds/en/bytes.gsm
libdata/asterisk/sounds/en/cafeteria.gsm
libdata/asterisk/sounds/en/california.gsm
libdata/asterisk/sounds/en/call-forward.gsm
libdata/asterisk/sounds/en/call-forwarding.gsm
libdata/asterisk/sounds/en/call-fwd-cancelled.gsm
libdata/asterisk/sounds/en/call-fwd-no-ans.gsm
libdata/asterisk/sounds/en/call-fwd-on-busy.gsm
libdata/asterisk/sounds/en/call-fwd-parallel.gsm
libdata/asterisk/sounds/en/call-fwd-unconditional.gsm
libdata/asterisk/sounds/en/call-preempted.gsm
libdata/asterisk/sounds/en/call-quality-menu.gsm
libdata/asterisk/sounds/en/call-requres.gsm
libdata/asterisk/sounds/en/call-terminated.gsm
libdata/asterisk/sounds/en/call-waiting.gsm
libdata/asterisk/sounds/en/call.gsm
libdata/asterisk/sounds/en/calling.gsm
libdata/asterisk/sounds/en/calls-taken-by.gsm
libdata/asterisk/sounds/en/calls-waiting-for-rep.gsm
libdata/asterisk/sounds/en/calls.gsm
libdata/asterisk/sounds/en/campground-office.gsm
libdata/asterisk/sounds/en/cancelled.gsm
libdata/asterisk/sounds/en/cannot-complete-as-dialed.gsm
libdata/asterisk/sounds/en/cannot-complete-network-error.gsm
libdata/asterisk/sounds/en/cannot-complete-otherend-error.gsm
libdata/asterisk/sounds/en/cannot-complete-temp-error.gsm
libdata/asterisk/sounds/en/card-balance-is.gsm
libdata/asterisk/sounds/en/card-is-invalid.gsm
libdata/asterisk/sounds/en/card-number.gsm
libdata/asterisk/sounds/en/carried-away-by-monkeys.gsm
libdata/asterisk/sounds/en/cause-code.gsm
libdata/asterisk/sounds/en/cc-amex.gsm
libdata/asterisk/sounds/en/cc-discover.gsm
libdata/asterisk/sounds/en/cc-mastercard.gsm
libdata/asterisk/sounds/en/cc-visa.gsm
libdata/asterisk/sounds/en/celsius.gsm
libdata/asterisk/sounds/en/cent.gsm
libdata/asterisk/sounds/en/central.gsm
libdata/asterisk/sounds/en/cents-per-minute.gsm
libdata/asterisk/sounds/en/cents.gsm
libdata/asterisk/sounds/en/ceo-office.gsm
libdata/asterisk/sounds/en/challenge_try_again.gsm
libdata/asterisk/sounds/en/chance-of.gsm
libdata/asterisk/sounds/en/changing.gsm
libdata/asterisk/sounds/en/channel-insecure-warn.gsm
libdata/asterisk/sounds/en/channel-secure.gsm
libdata/asterisk/sounds/en/channel.gsm
libdata/asterisk/sounds/en/charlotte.gsm
libdata/asterisk/sounds/en/chat-room.gsm
libdata/asterisk/sounds/en/check-number-dial-again.gsm
libdata/asterisk/sounds/en/chemistry.gsm
libdata/asterisk/sounds/en/chicago.gsm
libdata/asterisk/sounds/en/chris.gsm
libdata/asterisk/sounds/en/claims.gsm
libdata/asterisk/sounds/en/clear.gsm
libdata/asterisk/sounds/en/clearing.gsm
libdata/asterisk/sounds/en/cleveland.gsm
libdata/asterisk/sounds/en/clli.gsm
libdata/asterisk/sounds/en/close-parenthesis.gsm
libdata/asterisk/sounds/en/closed.gsm
libdata/asterisk/sounds/en/clouds.gsm
libdata/asterisk/sounds/en/cloudy.gsm
libdata/asterisk/sounds/en/collections.gsm
libdata/asterisk/sounds/en/colorado-springs.gsm
libdata/asterisk/sounds/en/colorado.gsm
libdata/asterisk/sounds/en/columbus.gsm
libdata/asterisk/sounds/en/comedyclub.gsm
libdata/asterisk/sounds/en/comma.gsm
libdata/asterisk/sounds/en/communications.gsm
libdata/asterisk/sounds/en/company-dir-411.gsm
libdata/asterisk/sounds/en/complaint.gsm
libdata/asterisk/sounds/en/compliance.gsm
libdata/asterisk/sounds/en/computer-friend1.gsm
libdata/asterisk/sounds/en/computer-friend2.gsm
libdata/asterisk/sounds/en/conditions.gsm
libdata/asterisk/sounds/en/conf-1-to-list-users.gsm
libdata/asterisk/sounds/en/conf-2-to-kick-nonadmin.gsm
libdata/asterisk/sounds/en/conf-3-mute-or-unmute-nonadmin.gsm
libdata/asterisk/sounds/en/conf-4-to-record-conf.gsm
libdata/asterisk/sounds/en/conf-8-for-more-options.gsm
libdata/asterisk/sounds/en/conf-8-to-exit-return-to-conf.gsm
libdata/asterisk/sounds/en/conf-adminmenu-162.gsm
libdata/asterisk/sounds/en/conf-adminmenu-18.gsm
libdata/asterisk/sounds/en/conf-adminmenu-menu8.gsm
libdata/asterisk/sounds/en/conf-adminmenu.gsm
libdata/asterisk/sounds/en/conf-banned.gsm
libdata/asterisk/sounds/en/conf-enteringno.gsm
libdata/asterisk/sounds/en/conf-errormenu.gsm
libdata/asterisk/sounds/en/conf-extended.gsm
libdata/asterisk/sounds/en/conf-full.gsm
libdata/asterisk/sounds/en/conf-getchannel.gsm
libdata/asterisk/sounds/en/conf-getconfno.gsm
libdata/asterisk/sounds/en/conf-getpin.gsm
libdata/asterisk/sounds/en/conf-hasentered.gsm
libdata/asterisk/sounds/en/conf-hasjoin.gsm
libdata/asterisk/sounds/en/conf-hasleft.gsm
libdata/asterisk/sounds/en/conf-invalid.gsm
libdata/asterisk/sounds/en/conf-invalidpin.gsm
libdata/asterisk/sounds/en/conf-kicked.gsm
libdata/asterisk/sounds/en/conf-leaderhasleft.gsm
libdata/asterisk/sounds/en/conf-locked.gsm
libdata/asterisk/sounds/en/conf-lockednow.gsm
libdata/asterisk/sounds/en/conf-muted.gsm
libdata/asterisk/sounds/en/conf-noempty.gsm
libdata/asterisk/sounds/en/conf-nonextended.gsm
libdata/asterisk/sounds/en/conf-now-muted.gsm
libdata/asterisk/sounds/en/conf-now-recording.gsm
libdata/asterisk/sounds/en/conf-now-unmuted.gsm
libdata/asterisk/sounds/en/conf-onlyone.gsm
libdata/asterisk/sounds/en/conf-onlyperson.gsm
libdata/asterisk/sounds/en/conf-onlypersonleft.gsm
libdata/asterisk/sounds/en/conf-otherinparty.gsm
libdata/asterisk/sounds/en/conf-peopleinconf.gsm
libdata/asterisk/sounds/en/conf-placeintoconf.gsm
libdata/asterisk/sounds/en/conf-roll-callcomplete.gsm
libdata/asterisk/sounds/en/conf-sysop.gsm
libdata/asterisk/sounds/en/conf-sysopreq.gsm
libdata/asterisk/sounds/en/conf-sysopreqcancelled.gsm
libdata/asterisk/sounds/en/conf-thereare.gsm
libdata/asterisk/sounds/en/conf-unlockednow.gsm
libdata/asterisk/sounds/en/conf-unmuted.gsm
libdata/asterisk/sounds/en/conf-usermenu-162.gsm
libdata/asterisk/sounds/en/conf-usermenu.gsm
libdata/asterisk/sounds/en/conf-userswilljoin.gsm
libdata/asterisk/sounds/en/conf-userwilljoin.gsm
libdata/asterisk/sounds/en/conf-waitforleader.gsm
libdata/asterisk/sounds/en/conf-youareinconfnum.gsm
libdata/asterisk/sounds/en/confbridge-begin-glorious-a.gsm
libdata/asterisk/sounds/en/confbridge-begin-glorious-b.gsm
libdata/asterisk/sounds/en/confbridge-begin-glorious-c.gsm
libdata/asterisk/sounds/en/confbridge-begin-leader.gsm
libdata/asterisk/sounds/en/confbridge-binaural-off.gsm
libdata/asterisk/sounds/en/confbridge-binaural-on.gsm
libdata/asterisk/sounds/en/confbridge-conf-begin.gsm
libdata/asterisk/sounds/en/confbridge-conf-end.gsm
libdata/asterisk/sounds/en/confbridge-dec-list-vol-in.gsm
libdata/asterisk/sounds/en/confbridge-dec-list-vol-out.gsm
libdata/asterisk/sounds/en/confbridge-dec-talk-vol-in.gsm
libdata/asterisk/sounds/en/confbridge-dec-talk-vol-out.gsm
libdata/asterisk/sounds/en/confbridge-has-joined.gsm
libdata/asterisk/sounds/en/confbridge-has-left.gsm
libdata/asterisk/sounds/en/confbridge-inc-list-vol-in.gsm
libdata/asterisk/sounds/en/confbridge-inc-list-vol-out.gsm
libdata/asterisk/sounds/en/confbridge-inc-talk-vol-in.gsm
libdata/asterisk/sounds/en/confbridge-inc-talk-vol-out.gsm
libdata/asterisk/sounds/en/confbridge-invalid.gsm
libdata/asterisk/sounds/en/confbridge-join.gsm
libdata/asterisk/sounds/en/confbridge-leave-in.gsm
libdata/asterisk/sounds/en/confbridge-leave-out.gsm
libdata/asterisk/sounds/en/confbridge-leave.gsm
libdata/asterisk/sounds/en/confbridge-lock-extended.gsm
libdata/asterisk/sounds/en/confbridge-lock-in.gsm
libdata/asterisk/sounds/en/confbridge-lock-no-join.gsm
libdata/asterisk/sounds/en/confbridge-lock-out.gsm
libdata/asterisk/sounds/en/confbridge-locked.gsm
libdata/asterisk/sounds/en/confbridge-menu-exit-in.gsm
libdata/asterisk/sounds/en/confbridge-menu-exit-out.gsm
libdata/asterisk/sounds/en/confbridge-mute-extended.gsm
libdata/asterisk/sounds/en/confbridge-mute-in.gsm
libdata/asterisk/sounds/en/confbridge-mute-out.gsm
libdata/asterisk/sounds/en/confbridge-muted.gsm
libdata/asterisk/sounds/en/confbridge-only-one.gsm
libdata/asterisk/sounds/en/confbridge-only-participant.gsm
libdata/asterisk/sounds/en/confbridge-participants.gsm
libdata/asterisk/sounds/en/confbridge-pin-bad.gsm
libdata/asterisk/sounds/en/confbridge-pin.gsm
libdata/asterisk/sounds/en/confbridge-remove-last-in.gsm
libdata/asterisk/sounds/en/confbridge-remove-last-out.gsm
libdata/asterisk/sounds/en/confbridge-removed.gsm
libdata/asterisk/sounds/en/confbridge-rest-list-vol-in.gsm
libdata/asterisk/sounds/en/confbridge-rest-list-vol-out.gsm
libdata/asterisk/sounds/en/confbridge-rest-talk-vol-in.gsm
libdata/asterisk/sounds/en/confbridge-rest-talk-vol-out.gsm
libdata/asterisk/sounds/en/confbridge-there-are.gsm
libdata/asterisk/sounds/en/confbridge-unlocked.gsm
libdata/asterisk/sounds/en/confbridge-unmuted.gsm
libdata/asterisk/sounds/en/conference-call.gsm
libdata/asterisk/sounds/en/conference-reservations.gsm
libdata/asterisk/sounds/en/conference.gsm
libdata/asterisk/sounds/en/confirm-number-is.gsm
libdata/asterisk/sounds/en/connected.gsm
libdata/asterisk/sounds/en/connecticut.gsm
libdata/asterisk/sounds/en/connecting.gsm
libdata/asterisk/sounds/en/connection-failed.gsm
libdata/asterisk/sounds/en/connection-timed-out.gsm
libdata/asterisk/sounds/en/continue-english-press.gsm
libdata/asterisk/sounds/en/continue-in-english.gsm
libdata/asterisk/sounds/en/copy-center.gsm
libdata/asterisk/sounds/en/core-sounds-en.txt
libdata/asterisk/sounds/en/could-lose-a-few-pounds.gsm
libdata/asterisk/sounds/en/counseling-services.gsm
libdata/asterisk/sounds/en/count.gsm
libdata/asterisk/sounds/en/countdown.gsm
libdata/asterisk/sounds/en/crash.gsm
libdata/asterisk/sounds/en/crashing_conf.gsm
libdata/asterisk/sounds/en/current-time-is.gsm
libdata/asterisk/sounds/en/current_account_balance.gsm
libdata/asterisk/sounds/en/currently.gsm
libdata/asterisk/sounds/en/customer-accounts.gsm
libdata/asterisk/sounds/en/customer-relations.gsm
libdata/asterisk/sounds/en/customer-service.gsm
libdata/asterisk/sounds/en/cyclone.gsm
libdata/asterisk/sounds/en/dallas.gsm
libdata/asterisk/sounds/en/date.gsm
libdata/asterisk/sounds/en/day.gsm
libdata/asterisk/sounds/en/daylight.gsm
libdata/asterisk/sounds/en/days.gsm
libdata/asterisk/sounds/en/de-activated.gsm
libdata/asterisk/sounds/en/deadbeat.gsm
libdata/asterisk/sounds/en/decode.gsm
libdata/asterisk/sounds/en/default-attendant.gsm
libdata/asterisk/sounds/en/degrees.gsm
libdata/asterisk/sounds/en/delaware.gsm
libdata/asterisk/sounds/en/demo-abouttotry.gsm
libdata/asterisk/sounds/en/demo-congrats.gsm
libdata/asterisk/sounds/en/demo-echodone.gsm
libdata/asterisk/sounds/en/demo-echotest.gsm
libdata/asterisk/sounds/en/demo-enterkeywords.gsm
libdata/asterisk/sounds/en/demo-instruct.gsm
libdata/asterisk/sounds/en/demo-moreinfo.gsm
libdata/asterisk/sounds/en/demo-nogo.gsm
libdata/asterisk/sounds/en/demo-nomatch.gsm
libdata/asterisk/sounds/en/demo-thanks.gsm
libdata/asterisk/sounds/en/denial-of-service.gsm
libdata/asterisk/sounds/en/denver.gsm
libdata/asterisk/sounds/en/department-administrator.gsm
libdata/asterisk/sounds/en/department.gsm
libdata/asterisk/sounds/en/deposit.gsm
libdata/asterisk/sounds/en/descending-2tone.gsm
libdata/asterisk/sounds/en/design.gsm
libdata/asterisk/sounds/en/detroit.gsm
libdata/asterisk/sounds/en/development.gsm
libdata/asterisk/sounds/en/dial-here-often.gsm
libdata/asterisk/sounds/en/dictate/both_help.gsm
libdata/asterisk/sounds/en/dictate/enter_filename.gsm
libdata/asterisk/sounds/en/dictate/forhelp.gsm
libdata/asterisk/sounds/en/dictate/pause.gsm
libdata/asterisk/sounds/en/dictate/paused.gsm
libdata/asterisk/sounds/en/dictate/play_help.gsm
libdata/asterisk/sounds/en/dictate/playback.gsm
libdata/asterisk/sounds/en/dictate/playback_mode.gsm
libdata/asterisk/sounds/en/dictate/record.gsm
libdata/asterisk/sounds/en/dictate/record_help.gsm
libdata/asterisk/sounds/en/dictate/record_mode.gsm
libdata/asterisk/sounds/en/dictate/truncating_audio.gsm
libdata/asterisk/sounds/en/digit.gsm
libdata/asterisk/sounds/en/digits.gsm
libdata/asterisk/sounds/en/digits/0.gsm
libdata/asterisk/sounds/en/digits/1.gsm
libdata/asterisk/sounds/en/digits/10.gsm
libdata/asterisk/sounds/en/digits/11.gsm
libdata/asterisk/sounds/en/digits/12.gsm
libdata/asterisk/sounds/en/digits/13.gsm
libdata/asterisk/sounds/en/digits/14.gsm
libdata/asterisk/sounds/en/digits/15.gsm
libdata/asterisk/sounds/en/digits/16.gsm
libdata/asterisk/sounds/en/digits/17.gsm
libdata/asterisk/sounds/en/digits/18.gsm
libdata/asterisk/sounds/en/digits/19.gsm
libdata/asterisk/sounds/en/digits/2.gsm
libdata/asterisk/sounds/en/digits/20.gsm
libdata/asterisk/sounds/en/digits/3.gsm
libdata/asterisk/sounds/en/digits/30.gsm
libdata/asterisk/sounds/en/digits/4.gsm
libdata/asterisk/sounds/en/digits/40.gsm
libdata/asterisk/sounds/en/digits/5.gsm
libdata/asterisk/sounds/en/digits/50.gsm
libdata/asterisk/sounds/en/digits/6.gsm
libdata/asterisk/sounds/en/digits/60.gsm
libdata/asterisk/sounds/en/digits/7.gsm
libdata/asterisk/sounds/en/digits/70.gsm
libdata/asterisk/sounds/en/digits/8.gsm
libdata/asterisk/sounds/en/digits/80.gsm
libdata/asterisk/sounds/en/digits/9.gsm
libdata/asterisk/sounds/en/digits/90.gsm
libdata/asterisk/sounds/en/digits/a-m.gsm
libdata/asterisk/sounds/en/digits/at.gsm
libdata/asterisk/sounds/en/digits/billion.gsm
libdata/asterisk/sounds/en/digits/day-0.gsm
libdata/asterisk/sounds/en/digits/day-1.gsm
libdata/asterisk/sounds/en/digits/day-2.gsm
libdata/asterisk/sounds/en/digits/day-3.gsm
libdata/asterisk/sounds/en/digits/day-4.gsm
libdata/asterisk/sounds/en/digits/day-5.gsm
libdata/asterisk/sounds/en/digits/day-6.gsm
libdata/asterisk/sounds/en/digits/dollars.gsm
libdata/asterisk/sounds/en/digits/h-1.gsm
libdata/asterisk/sounds/en/digits/h-10.gsm
libdata/asterisk/sounds/en/digits/h-11.gsm
libdata/asterisk/sounds/en/digits/h-12.gsm
libdata/asterisk/sounds/en/digits/h-13.gsm
libdata/asterisk/sounds/en/digits/h-14.gsm
libdata/asterisk/sounds/en/digits/h-15.gsm
libdata/asterisk/sounds/en/digits/h-16.gsm
libdata/asterisk/sounds/en/digits/h-17.gsm
libdata/asterisk/sounds/en/digits/h-18.gsm
libdata/asterisk/sounds/en/digits/h-19.gsm
libdata/asterisk/sounds/en/digits/h-2.gsm
libdata/asterisk/sounds/en/digits/h-20.gsm
libdata/asterisk/sounds/en/digits/h-3.gsm
libdata/asterisk/sounds/en/digits/h-30.gsm
libdata/asterisk/sounds/en/digits/h-4.gsm
libdata/asterisk/sounds/en/digits/h-40.gsm
libdata/asterisk/sounds/en/digits/h-5.gsm
libdata/asterisk/sounds/en/digits/h-50.gsm
libdata/asterisk/sounds/en/digits/h-6.gsm
libdata/asterisk/sounds/en/digits/h-60.gsm
libdata/asterisk/sounds/en/digits/h-7.gsm
libdata/asterisk/sounds/en/digits/h-70.gsm
libdata/asterisk/sounds/en/digits/h-8.gsm
libdata/asterisk/sounds/en/digits/h-80.gsm
libdata/asterisk/sounds/en/digits/h-9.gsm
libdata/asterisk/sounds/en/digits/h-90.gsm
libdata/asterisk/sounds/en/digits/h-billion.gsm
libdata/asterisk/sounds/en/digits/h-hundred.gsm
libdata/asterisk/sounds/en/digits/h-million.gsm
libdata/asterisk/sounds/en/digits/h-thousand.gsm
libdata/asterisk/sounds/en/digits/hundred.gsm
libdata/asterisk/sounds/en/digits/million.gsm
libdata/asterisk/sounds/en/digits/minus.gsm
libdata/asterisk/sounds/en/digits/mon-0.gsm
libdata/asterisk/sounds/en/digits/mon-1.gsm
libdata/asterisk/sounds/en/digits/mon-10.gsm
libdata/asterisk/sounds/en/digits/mon-11.gsm
libdata/asterisk/sounds/en/digits/mon-2.gsm
libdata/asterisk/sounds/en/digits/mon-3.gsm
libdata/asterisk/sounds/en/digits/mon-4.gsm
libdata/asterisk/sounds/en/digits/mon-5.gsm
libdata/asterisk/sounds/en/digits/mon-6.gsm
libdata/asterisk/sounds/en/digits/mon-7.gsm
libdata/asterisk/sounds/en/digits/mon-8.gsm
libdata/asterisk/sounds/en/digits/mon-9.gsm
libdata/asterisk/sounds/en/digits/oclock.gsm
libdata/asterisk/sounds/en/digits/oh.gsm
libdata/asterisk/sounds/en/digits/p-m.gsm
libdata/asterisk/sounds/en/digits/pound.gsm
libdata/asterisk/sounds/en/digits/star.gsm
libdata/asterisk/sounds/en/digits/thousand.gsm
libdata/asterisk/sounds/en/digits/today.gsm
libdata/asterisk/sounds/en/digits/tomorrow.gsm
libdata/asterisk/sounds/en/digits/yesterday.gsm
libdata/asterisk/sounds/en/dir-first.gsm
libdata/asterisk/sounds/en/dir-firstlast.gsm
libdata/asterisk/sounds/en/dir-instr.gsm
libdata/asterisk/sounds/en/dir-intro-fn.gsm
libdata/asterisk/sounds/en/dir-intro.gsm
libdata/asterisk/sounds/en/dir-last.gsm
libdata/asterisk/sounds/en/dir-multi1.gsm
libdata/asterisk/sounds/en/dir-multi2.gsm
libdata/asterisk/sounds/en/dir-multi3.gsm
libdata/asterisk/sounds/en/dir-multi9.gsm
libdata/asterisk/sounds/en/dir-nomatch.gsm
libdata/asterisk/sounds/en/dir-nomore.gsm
libdata/asterisk/sounds/en/dir-pls-enter.gsm
libdata/asterisk/sounds/en/dir-usingkeypad.gsm
libdata/asterisk/sounds/en/dir-welcome.gsm
libdata/asterisk/sounds/en/directory-assistance.gsm
libdata/asterisk/sounds/en/directory.gsm
libdata/asterisk/sounds/en/disabled.gsm
libdata/asterisk/sounds/en/discon-or-out-of-service.gsm
libdata/asterisk/sounds/en/disconnected.gsm
libdata/asterisk/sounds/en/disk.gsm
libdata/asterisk/sounds/en/distribution.gsm
libdata/asterisk/sounds/en/divided-by.gsm
libdata/asterisk/sounds/en/dns.gsm
libdata/asterisk/sounds/en/do-not-disturb.gsm
libdata/asterisk/sounds/en/doing-enum-lookup.gsm
libdata/asterisk/sounds/en/donotcall1.gsm
libdata/asterisk/sounds/en/donotcall2.gsm
libdata/asterisk/sounds/en/dont-know-who-sent.gsm
libdata/asterisk/sounds/en/doppler-radar.gsm
libdata/asterisk/sounds/en/down.gsm
libdata/asterisk/sounds/en/driving-directions.gsm
libdata/asterisk/sounds/en/duplex.gsm
libdata/asterisk/sounds/en/duplication.gsm
libdata/asterisk/sounds/en/early.gsm
libdata/asterisk/sounds/en/east.gsm
libdata/asterisk/sounds/en/easterly.gsm
libdata/asterisk/sounds/en/eastern.gsm
libdata/asterisk/sounds/en/echo-test.gsm
libdata/asterisk/sounds/en/ed.gsm
libdata/asterisk/sounds/en/eighteenth.gsm
libdata/asterisk/sounds/en/eighth.gsm
libdata/asterisk/sounds/en/eightieth.gsm
libdata/asterisk/sounds/en/el-paso.gsm
libdata/asterisk/sounds/en/eletelephony.gsm
libdata/asterisk/sounds/en/eleventh.gsm
libdata/asterisk/sounds/en/email.gsm
libdata/asterisk/sounds/en/emergency.gsm
libdata/asterisk/sounds/en/enabled.gsm
libdata/asterisk/sounds/en/encode.gsm
libdata/asterisk/sounds/en/engineering.gsm
libdata/asterisk/sounds/en/ent-target-attendant.gsm
libdata/asterisk/sounds/en/enter-a-time.gsm
libdata/asterisk/sounds/en/enter-conf-call-number.gsm
libdata/asterisk/sounds/en/enter-conf-pin-number.gsm
libdata/asterisk/sounds/en/enter-ext-of-person.gsm
libdata/asterisk/sounds/en/enter-num-blacklist.gsm
libdata/asterisk/sounds/en/enter-password.gsm
libdata/asterisk/sounds/en/enter-phone-number10.gsm
libdata/asterisk/sounds/en/enter_account.gsm
libdata/asterisk/sounds/en/entering-conf-number.gsm
libdata/asterisk/sounds/en/entr-num-rmv-blklist.gsm
libdata/asterisk/sounds/en/enum-lookup-failed.gsm
libdata/asterisk/sounds/en/enum-lookup-successful.gsm
libdata/asterisk/sounds/en/error-number.gsm
libdata/asterisk/sounds/en/error.gsm
libdata/asterisk/sounds/en/est-hold-time-is.gsm
libdata/asterisk/sounds/en/euro.gsm
libdata/asterisk/sounds/en/european.gsm
libdata/asterisk/sounds/en/euros.gsm
libdata/asterisk/sounds/en/evening.gsm
libdata/asterisk/sounds/en/explanation.gsm
libdata/asterisk/sounds/en/ext-or-zero.gsm
libdata/asterisk/sounds/en/extension.gsm
libdata/asterisk/sounds/en/extensions.gsm
libdata/asterisk/sounds/en/extra-sounds-en.txt
libdata/asterisk/sounds/en/facilities.gsm
libdata/asterisk/sounds/en/fahrenheit.gsm
libdata/asterisk/sounds/en/falling.gsm
libdata/asterisk/sounds/en/fast.gsm
libdata/asterisk/sounds/en/feature-not-avail-line.gsm
libdata/asterisk/sounds/en/feeling_lucky_punk.gsm
libdata/asterisk/sounds/en/feet.gsm
libdata/asterisk/sounds/en/female.gsm
libdata/asterisk/sounds/en/fifteenth.gsm
libdata/asterisk/sounds/en/fifth.gsm
libdata/asterisk/sounds/en/fiftieth.gsm
libdata/asterisk/sounds/en/finals.gsm
libdata/asterisk/sounds/en/finance.gsm
libdata/asterisk/sounds/en/first-in-line.gsm
libdata/asterisk/sounds/en/first.gsm
libdata/asterisk/sounds/en/flagged-for-lea.gsm
libdata/asterisk/sounds/en/flooding.gsm
libdata/asterisk/sounds/en/florida.gsm
libdata/asterisk/sounds/en/fog.gsm
libdata/asterisk/sounds/en/foggy.gsm
libdata/asterisk/sounds/en/followed-by.gsm
libdata/asterisk/sounds/en/followed_hash.gsm
libdata/asterisk/sounds/en/followed_pound.gsm
libdata/asterisk/sounds/en/followme/call-from.gsm
libdata/asterisk/sounds/en/followme/no-recording.gsm
libdata/asterisk/sounds/en/followme/options.gsm
libdata/asterisk/sounds/en/followme/pls-hold-while-try.gsm
libdata/asterisk/sounds/en/followme/sorry.gsm
libdata/asterisk/sounds/en/followme/status.gsm
libdata/asterisk/sounds/en/food-service.gsm
libdata/asterisk/sounds/en/food-services.gsm
libdata/asterisk/sounds/en/for-a-daily-wakeup-call.gsm
libdata/asterisk/sounds/en/for-a-list-of.gsm
libdata/asterisk/sounds/en/for-accounting.gsm
libdata/asterisk/sounds/en/for-billing.gsm
libdata/asterisk/sounds/en/for-english-press.gsm
libdata/asterisk/sounds/en/for-investor-relations.gsm
libdata/asterisk/sounds/en/for-louie-louie.gsm
libdata/asterisk/sounds/en/for-no-press.gsm
libdata/asterisk/sounds/en/for-qc-and-training-purposes.gsm
libdata/asterisk/sounds/en/for-quality-purposes.gsm
libdata/asterisk/sounds/en/for-sales.gsm
libdata/asterisk/sounds/en/for-service.gsm
libdata/asterisk/sounds/en/for-tech-support.gsm
libdata/asterisk/sounds/en/for-the-first.gsm
libdata/asterisk/sounds/en/for-the-weather.gsm
libdata/asterisk/sounds/en/for-wakeup-call.gsm
libdata/asterisk/sounds/en/for-yes-press.gsm
libdata/asterisk/sounds/en/for.gsm
libdata/asterisk/sounds/en/forget_about_it.gsm
libdata/asterisk/sounds/en/fort-worth.gsm
libdata/asterisk/sounds/en/fortieth.gsm
libdata/asterisk/sounds/en/fourteenth.gsm
libdata/asterisk/sounds/en/fourth.gsm
libdata/asterisk/sounds/en/freeze.gsm
libdata/asterisk/sounds/en/freezing.gsm
libdata/asterisk/sounds/en/frequency.gsm
libdata/asterisk/sounds/en/fresno.gsm
libdata/asterisk/sounds/en/from-unknown-caller.gsm
libdata/asterisk/sounds/en/from.gsm
libdata/asterisk/sounds/en/ftp.gsm
libdata/asterisk/sounds/en/gale.gsm
libdata/asterisk/sounds/en/gambling-drunk.gsm
libdata/asterisk/sounds/en/georgia.gsm
libdata/asterisk/sounds/en/get-in-line-sales-guy.gsm
libdata/asterisk/sounds/en/get_bleep_outta.gsm
libdata/asterisk/sounds/en/get_information.gsm
libdata/asterisk/sounds/en/get_information_first.gsm
libdata/asterisk/sounds/en/gigabits.gsm
libdata/asterisk/sounds/en/gigabytes.gsm
libdata/asterisk/sounds/en/gigahertz.gsm
libdata/asterisk/sounds/en/giggle1.gsm
libdata/asterisk/sounds/en/gmt.gsm
libdata/asterisk/sounds/en/go-away1.gsm
libdata/asterisk/sounds/en/go-away2.gsm
libdata/asterisk/sounds/en/good-afternoon.gsm
libdata/asterisk/sounds/en/good-evening.gsm
libdata/asterisk/sounds/en/good-morning.gsm
libdata/asterisk/sounds/en/good.gsm
libdata/asterisk/sounds/en/goodbye.gsm
libdata/asterisk/sounds/en/goodbye_for_the_best.gsm
libdata/asterisk/sounds/en/goodbye_love.gsm
libdata/asterisk/sounds/en/got_kidding.gsm
libdata/asterisk/sounds/en/grammar.gsm
libdata/asterisk/sounds/en/greater-than.gsm
libdata/asterisk/sounds/en/groovy.gsm
libdata/asterisk/sounds/en/ha/ac.gsm
libdata/asterisk/sounds/en/ha/air-conditioner.gsm
libdata/asterisk/sounds/en/ha/alarm.gsm
libdata/asterisk/sounds/en/ha/amp.gsm
libdata/asterisk/sounds/en/ha/amps.gsm
libdata/asterisk/sounds/en/ha/attic.gsm
libdata/asterisk/sounds/en/ha/baby-sleeping-mode.gsm
libdata/asterisk/sounds/en/ha/back.gsm
libdata/asterisk/sounds/en/ha/basement.gsm
libdata/asterisk/sounds/en/ha/bathroom.gsm
libdata/asterisk/sounds/en/ha/bedroom.gsm
libdata/asterisk/sounds/en/ha/bright.gsm
libdata/asterisk/sounds/en/ha/callerid.gsm
libdata/asterisk/sounds/en/ha/carport.gsm
libdata/asterisk/sounds/en/ha/closet.gsm
libdata/asterisk/sounds/en/ha/coffee-pot.gsm
libdata/asterisk/sounds/en/ha/cool.gsm
libdata/asterisk/sounds/en/ha/cooling.gsm
libdata/asterisk/sounds/en/ha/dc.gsm
libdata/asterisk/sounds/en/ha/decibel.gsm
libdata/asterisk/sounds/en/ha/decibels.gsm
libdata/asterisk/sounds/en/ha/deck.gsm
libdata/asterisk/sounds/en/ha/degree.gsm
libdata/asterisk/sounds/en/ha/degrees.gsm
libdata/asterisk/sounds/en/ha/den.gsm
libdata/asterisk/sounds/en/ha/dim.gsm
libdata/asterisk/sounds/en/ha/dining-room.gsm
libdata/asterisk/sounds/en/ha/door.gsm
libdata/asterisk/sounds/en/ha/doors.gsm
libdata/asterisk/sounds/en/ha/down.gsm
libdata/asterisk/sounds/en/ha/driveway.gsm
libdata/asterisk/sounds/en/ha/dryer.gsm
libdata/asterisk/sounds/en/ha/fan.gsm
libdata/asterisk/sounds/en/ha/farad.gsm
libdata/asterisk/sounds/en/ha/farads.gsm
libdata/asterisk/sounds/en/ha/first-floor.gsm
libdata/asterisk/sounds/en/ha/floor.gsm
libdata/asterisk/sounds/en/ha/floors.gsm
libdata/asterisk/sounds/en/ha/for-extended-status-report.gsm
libdata/asterisk/sounds/en/ha/for-quick-status-report.gsm
libdata/asterisk/sounds/en/ha/for-wx-report.gsm
libdata/asterisk/sounds/en/ha/fountain.gsm
libdata/asterisk/sounds/en/ha/foyer.gsm
libdata/asterisk/sounds/en/ha/front.gsm
libdata/asterisk/sounds/en/ha/furnace.gsm
libdata/asterisk/sounds/en/ha/game-room.gsm
libdata/asterisk/sounds/en/ha/garage.gsm
libdata/asterisk/sounds/en/ha/great-room.gsm
libdata/asterisk/sounds/en/ha/guest-room.gsm
libdata/asterisk/sounds/en/ha/hall.gsm
libdata/asterisk/sounds/en/ha/has-been-left.gsm
libdata/asterisk/sounds/en/ha/heat-pump.gsm
libdata/asterisk/sounds/en/ha/heat.gsm
libdata/asterisk/sounds/en/ha/heating.gsm
libdata/asterisk/sounds/en/ha/hot-tub.gsm
libdata/asterisk/sounds/en/ha/house.gsm
libdata/asterisk/sounds/en/ha/intruder.gsm
libdata/asterisk/sounds/en/ha/is.gsm
libdata/asterisk/sounds/en/ha/kelvin.gsm
libdata/asterisk/sounds/en/ha/kitchen.gsm
libdata/asterisk/sounds/en/ha/lamp.gsm
libdata/asterisk/sounds/en/ha/lamps.gsm
libdata/asterisk/sounds/en/ha/landscape.gsm
libdata/asterisk/sounds/en/ha/laundry.gsm
libdata/asterisk/sounds/en/ha/library.gsm
libdata/asterisk/sounds/en/ha/light.gsm
libdata/asterisk/sounds/en/ha/lights.gsm
libdata/asterisk/sounds/en/ha/living-room.gsm
libdata/asterisk/sounds/en/ha/locked.gsm
libdata/asterisk/sounds/en/ha/locking.gsm
libdata/asterisk/sounds/en/ha/mailbox.gsm
libdata/asterisk/sounds/en/ha/master.gsm
libdata/asterisk/sounds/en/ha/off.gsm
libdata/asterisk/sounds/en/ha/office.gsm
libdata/asterisk/sounds/en/ha/ohm.gsm
libdata/asterisk/sounds/en/ha/ohms.gsm
libdata/asterisk/sounds/en/ha/on.gsm
libdata/asterisk/sounds/en/ha/open.gsm
libdata/asterisk/sounds/en/ha/patio.gsm
libdata/asterisk/sounds/en/ha/phone.gsm
libdata/asterisk/sounds/en/ha/play-room.gsm
libdata/asterisk/sounds/en/ha/play.gsm
libdata/asterisk/sounds/en/ha/pool.gsm
libdata/asterisk/sounds/en/ha/porch.gsm
libdata/asterisk/sounds/en/ha/power-failure.gsm
libdata/asterisk/sounds/en/ha/pressure.gsm
libdata/asterisk/sounds/en/ha/psi.gsm
libdata/asterisk/sounds/en/ha/quiet-mode.gsm
libdata/asterisk/sounds/en/ha/reset.gsm
libdata/asterisk/sounds/en/ha/roof.gsm
libdata/asterisk/sounds/en/ha/room.gsm
libdata/asterisk/sounds/en/ha/rooms.gsm
libdata/asterisk/sounds/en/ha/second-floor.gsm
libdata/asterisk/sounds/en/ha/secure.gsm
libdata/asterisk/sounds/en/ha/security-system.gsm
libdata/asterisk/sounds/en/ha/set.gsm
libdata/asterisk/sounds/en/ha/side.gsm
libdata/asterisk/sounds/en/ha/solar.gsm
libdata/asterisk/sounds/en/ha/sprinklers.gsm
libdata/asterisk/sounds/en/ha/still.gsm
libdata/asterisk/sounds/en/ha/stove.gsm
libdata/asterisk/sounds/en/ha/sump-pump.gsm
libdata/asterisk/sounds/en/ha/sun-room.gsm
libdata/asterisk/sounds/en/ha/system.gsm
libdata/asterisk/sounds/en/ha/systems.gsm
libdata/asterisk/sounds/en/ha/thermostat.gsm
libdata/asterisk/sounds/en/ha/to-control-environ-sys.gsm
libdata/asterisk/sounds/en/ha/to-control-lights-appl.gsm
libdata/asterisk/sounds/en/ha/tower.gsm
libdata/asterisk/sounds/en/ha/unlocked.gsm
libdata/asterisk/sounds/en/ha/unlocking.gsm
libdata/asterisk/sounds/en/ha/up.gsm
libdata/asterisk/sounds/en/ha/volt.gsm
libdata/asterisk/sounds/en/ha/volts.gsm
libdata/asterisk/sounds/en/ha/washing-machine.gsm
libdata/asterisk/sounds/en/ha/water-heater.gsm
libdata/asterisk/sounds/en/ha/watt.gsm
libdata/asterisk/sounds/en/ha/watts.gsm
libdata/asterisk/sounds/en/ha/well-pump.gsm
libdata/asterisk/sounds/en/ha/window.gsm
libdata/asterisk/sounds/en/ha/windows.gsm
libdata/asterisk/sounds/en/ha/xmas-lights.gsm
libdata/asterisk/sounds/en/ha/xmas-tree.gsm
libdata/asterisk/sounds/en/ha/yard.gsm
libdata/asterisk/sounds/en/hail.gsm
libdata/asterisk/sounds/en/hal_goodbye.gsm
libdata/asterisk/sounds/en/half.gsm
libdata/asterisk/sounds/en/hang-on-a-second-angry.gsm
libdata/asterisk/sounds/en/hang-on-a-second.gsm
libdata/asterisk/sounds/en/hangup-try-again.gsm
libdata/asterisk/sounds/en/happy_saved.gsm
libdata/asterisk/sounds/en/has-arrived-at.gsm
libdata/asterisk/sounds/en/has-been-changed-to.gsm
libdata/asterisk/sounds/en/has-been-cleared.gsm
libdata/asterisk/sounds/en/has-been-disconnected.gsm
libdata/asterisk/sounds/en/has-been-set-to.gsm
libdata/asterisk/sounds/en/has-been.gsm
libdata/asterisk/sounds/en/has-expired.gsm
libdata/asterisk/sounds/en/has-issued-a.gsm
libdata/asterisk/sounds/en/has-not-been-seen-for.gsm
libdata/asterisk/sounds/en/has.gsm
libdata/asterisk/sounds/en/hash.gsm
libdata/asterisk/sounds/en/hawaii.gsm
libdata/asterisk/sounds/en/headed-towards.gsm
libdata/asterisk/sounds/en/heading.gsm
libdata/asterisk/sounds/en/health-center.gsm
libdata/asterisk/sounds/en/hear-odd-noise.gsm
libdata/asterisk/sounds/en/hear-toilet-flush.gsm
libdata/asterisk/sounds/en/hectopascal.gsm
libdata/asterisk/sounds/en/hello-world.gsm
libdata/asterisk/sounds/en/hello.gsm
libdata/asterisk/sounds/en/helpdesk.gsm
libdata/asterisk/sounds/en/hertz.gsm
libdata/asterisk/sounds/en/high.gsm
libdata/asterisk/sounds/en/highway.gsm
libdata/asterisk/sounds/en/hit.gsm
libdata/asterisk/sounds/en/hold-or-dial-0.gsm
libdata/asterisk/sounds/en/home.gsm
libdata/asterisk/sounds/en/honolulu.gsm
libdata/asterisk/sounds/en/hours.gsm
libdata/asterisk/sounds/en/housekeeping.gsm
libdata/asterisk/sounds/en/houston.gsm
libdata/asterisk/sounds/en/http.gsm
libdata/asterisk/sounds/en/human-resources.gsm
libdata/asterisk/sounds/en/humidity.gsm
libdata/asterisk/sounds/en/hundredth.gsm
libdata/asterisk/sounds/en/hurricane.gsm
libdata/asterisk/sounds/en/hz.gsm
libdata/asterisk/sounds/en/i-dont-understand.gsm
libdata/asterisk/sounds/en/i-dont-understand2.gsm
libdata/asterisk/sounds/en/i-dont-understand3.gsm
libdata/asterisk/sounds/en/i-dont-understand4.gsm
libdata/asterisk/sounds/en/i-dont-understand5.gsm
libdata/asterisk/sounds/en/i-grow-bored.gsm
libdata/asterisk/sounds/en/ice.gsm
libdata/asterisk/sounds/en/icmp.gsm
libdata/asterisk/sounds/en/icy.gsm
libdata/asterisk/sounds/en/idaho.gsm
libdata/asterisk/sounds/en/if-correct-press.gsm
libdata/asterisk/sounds/en/if-grtg-played-indefinately.gsm
libdata/asterisk/sounds/en/if-grtg-should-expire-at.gsm
libdata/asterisk/sounds/en/if-maint-contract-or-emergency.gsm
libdata/asterisk/sounds/en/if-rotary-phone.gsm
libdata/asterisk/sounds/en/if-this-is-correct-press.gsm
libdata/asterisk/sounds/en/if-this-is-correct.gsm
libdata/asterisk/sounds/en/if-this-is-not-correct.gsm
libdata/asterisk/sounds/en/if-u-know-ext-dial.gsm
libdata/asterisk/sounds/en/if-unsuccessful-speak-to.gsm
libdata/asterisk/sounds/en/if-you-know-the.gsm
libdata/asterisk/sounds/en/if-you-need-help.gsm
libdata/asterisk/sounds/en/if-youd-like-to-make-a-call.gsm
libdata/asterisk/sounds/en/illinois.gsm
libdata/asterisk/sounds/en/im-sorry-unable-to-connect-to-eng.gsm
libdata/asterisk/sounds/en/im-sorry.gsm
libdata/asterisk/sounds/en/imap.gsm
libdata/asterisk/sounds/en/in-service.gsm
libdata/asterisk/sounds/en/in-the-line.gsm
libdata/asterisk/sounds/en/in-the-queue.gsm
libdata/asterisk/sounds/en/in-the.gsm
libdata/asterisk/sounds/en/in-your-city.gsm
libdata/asterisk/sounds/en/in-your-zip-code.gsm
libdata/asterisk/sounds/en/inbound.gsm
libdata/asterisk/sounds/en/indiana.gsm
libdata/asterisk/sounds/en/indianapolis.gsm
libdata/asterisk/sounds/en/indicated.gsm
libdata/asterisk/sounds/en/info-about-last-call.gsm
libdata/asterisk/sounds/en/information-technology.gsm
libdata/asterisk/sounds/en/information.gsm
libdata/asterisk/sounds/en/infuriate-tech-staff.gsm
libdata/asterisk/sounds/en/initiated.gsm
libdata/asterisk/sounds/en/initiating.gsm
libdata/asterisk/sounds/en/inside-sales.gsm
libdata/asterisk/sounds/en/internal-audit.gsm
libdata/asterisk/sounds/en/international-call.gsm
libdata/asterisk/sounds/en/interstate.gsm
libdata/asterisk/sounds/en/invalid-date.gsm
libdata/asterisk/sounds/en/invalid-featurecode.gsm
libdata/asterisk/sounds/en/invalid.gsm
libdata/asterisk/sounds/en/investor-relations.gsm
libdata/asterisk/sounds/en/iowa.gsm
libdata/asterisk/sounds/en/is-at.gsm
libdata/asterisk/sounds/en/is-curntly-busy.gsm
libdata/asterisk/sounds/en/is-curntly-unavail.gsm
libdata/asterisk/sounds/en/is-currently.gsm
libdata/asterisk/sounds/en/is-in-use.gsm
libdata/asterisk/sounds/en/is-not-in-the.gsm
libdata/asterisk/sounds/en/is-not-set.gsm
libdata/asterisk/sounds/en/is-now-being-recorded.gsm
libdata/asterisk/sounds/en/is-set-to.gsm
libdata/asterisk/sounds/en/is.gsm
libdata/asterisk/sounds/en/it-now.gsm
libdata/asterisk/sounds/en/it-services.gsm
libdata/asterisk/sounds/en/jacksonville.gsm
libdata/asterisk/sounds/en/janitorial.gsm
libdata/asterisk/sounds/en/jason.gsm
libdata/asterisk/sounds/en/jedi-extension-trick.gsm
libdata/asterisk/sounds/en/john.gsm
libdata/asterisk/sounds/en/just-kidding-not-upset.gsm
libdata/asterisk/sounds/en/just-kidding-not-upset2.gsm
libdata/asterisk/sounds/en/kansas-city.gsm
libdata/asterisk/sounds/en/kansas.gsm
libdata/asterisk/sounds/en/kentucky.gsm
libdata/asterisk/sounds/en/keywords_cross_fingers.gsm
libdata/asterisk/sounds/en/kilobits.gsm
libdata/asterisk/sounds/en/kilobytes.gsm
libdata/asterisk/sounds/en/kilohertz.gsm
libdata/asterisk/sounds/en/kilometer.gsm
libdata/asterisk/sounds/en/kilometers-per-hour.gsm
libdata/asterisk/sounds/en/knock-knock.gsm
libdata/asterisk/sounds/en/knots.gsm
libdata/asterisk/sounds/en/language.gsm
libdata/asterisk/sounds/en/las-vegas.gsm
libdata/asterisk/sounds/en/last-error-was.gsm
libdata/asterisk/sounds/en/last-num-to-call.gsm
libdata/asterisk/sounds/en/late.gsm
libdata/asterisk/sounds/en/later.gsm
libdata/asterisk/sounds/en/lea-may-request-info.gsm
libdata/asterisk/sounds/en/left-bracket.gsm
libdata/asterisk/sounds/en/legal.gsm
libdata/asterisk/sounds/en/len.gsm
libdata/asterisk/sounds/en/less-than.gsm
libdata/asterisk/sounds/en/letters/a.gsm
libdata/asterisk/sounds/en/letters/ascii123.gsm
libdata/asterisk/sounds/en/letters/ascii124.gsm
libdata/asterisk/sounds/en/letters/ascii125.gsm
libdata/asterisk/sounds/en/letters/ascii126.gsm
libdata/asterisk/sounds/en/letters/ascii34.gsm
libdata/asterisk/sounds/en/letters/ascii36.gsm
libdata/asterisk/sounds/en/letters/ascii37.gsm
libdata/asterisk/sounds/en/letters/ascii38.gsm
libdata/asterisk/sounds/en/letters/ascii39.gsm
libdata/asterisk/sounds/en/letters/ascii40.gsm
libdata/asterisk/sounds/en/letters/ascii41.gsm
libdata/asterisk/sounds/en/letters/ascii42.gsm
libdata/asterisk/sounds/en/letters/ascii44.gsm
libdata/asterisk/sounds/en/letters/ascii58.gsm
libdata/asterisk/sounds/en/letters/ascii59.gsm
libdata/asterisk/sounds/en/letters/ascii60.gsm
libdata/asterisk/sounds/en/letters/ascii62.gsm
libdata/asterisk/sounds/en/letters/ascii63.gsm
libdata/asterisk/sounds/en/letters/ascii91.gsm
libdata/asterisk/sounds/en/letters/ascii92.gsm
libdata/asterisk/sounds/en/letters/ascii93.gsm
libdata/asterisk/sounds/en/letters/ascii94.gsm
libdata/asterisk/sounds/en/letters/ascii95.gsm
libdata/asterisk/sounds/en/letters/ascii96.gsm
libdata/asterisk/sounds/en/letters/asterisk.gsm
libdata/asterisk/sounds/en/letters/at.gsm
libdata/asterisk/sounds/en/letters/b.gsm
libdata/asterisk/sounds/en/letters/c.gsm
libdata/asterisk/sounds/en/letters/d.gsm
libdata/asterisk/sounds/en/letters/dash.gsm
libdata/asterisk/sounds/en/letters/dollar.gsm
libdata/asterisk/sounds/en/letters/dot.gsm
libdata/asterisk/sounds/en/letters/e.gsm
libdata/asterisk/sounds/en/letters/equals.gsm
libdata/asterisk/sounds/en/letters/exclaimation-point.gsm
libdata/asterisk/sounds/en/letters/f.gsm
libdata/asterisk/sounds/en/letters/g.gsm
libdata/asterisk/sounds/en/letters/h.gsm
libdata/asterisk/sounds/en/letters/i.gsm
libdata/asterisk/sounds/en/letters/j.gsm
libdata/asterisk/sounds/en/letters/k.gsm
libdata/asterisk/sounds/en/letters/l.gsm
libdata/asterisk/sounds/en/letters/m.gsm
libdata/asterisk/sounds/en/letters/n.gsm
libdata/asterisk/sounds/en/letters/o.gsm
libdata/asterisk/sounds/en/letters/p.gsm
libdata/asterisk/sounds/en/letters/plus.gsm
libdata/asterisk/sounds/en/letters/q.gsm
libdata/asterisk/sounds/en/letters/r.gsm
libdata/asterisk/sounds/en/letters/s.gsm
libdata/asterisk/sounds/en/letters/slash.gsm
libdata/asterisk/sounds/en/letters/space.gsm
libdata/asterisk/sounds/en/letters/t.gsm
libdata/asterisk/sounds/en/letters/u.gsm
libdata/asterisk/sounds/en/letters/v.gsm
libdata/asterisk/sounds/en/letters/w.gsm
libdata/asterisk/sounds/en/letters/x.gsm
libdata/asterisk/sounds/en/letters/y.gsm
libdata/asterisk/sounds/en/letters/z.gsm
libdata/asterisk/sounds/en/letters/zed.gsm
libdata/asterisk/sounds/en/library.gsm
libdata/asterisk/sounds/en/lightning.gsm
libdata/asterisk/sounds/en/like_to_tell_valid_ext.gsm
libdata/asterisk/sounds/en/limit-simul-calls.gsm
libdata/asterisk/sounds/en/lines-complaining-customers.gsm
libdata/asterisk/sounds/en/linux.gsm
libdata/asterisk/sounds/en/list.gsm
libdata/asterisk/sounds/en/load-average.gsm
libdata/asterisk/sounds/en/local-authorities.gsm
libdata/asterisk/sounds/en/location.gsm
libdata/asterisk/sounds/en/login-fail.gsm
libdata/asterisk/sounds/en/long-beach.gsm
libdata/asterisk/sounds/en/los-angeles.gsm
libdata/asterisk/sounds/en/loss-prevention.gsm
libdata/asterisk/sounds/en/loss.gsm
libdata/asterisk/sounds/en/lots-o-monkeys.gsm
libdata/asterisk/sounds/en/louisiana.gsm
libdata/asterisk/sounds/en/low.gsm
libdata/asterisk/sounds/en/lowercase.gsm
libdata/asterisk/sounds/en/lunch.gsm
libdata/asterisk/sounds/en/lyrics-louie-louie.gsm
libdata/asterisk/sounds/en/machine.gsm
libdata/asterisk/sounds/en/made-it-up.gsm
libdata/asterisk/sounds/en/mail.gsm
libdata/asterisk/sounds/en/mailroom.gsm
libdata/asterisk/sounds/en/main-menu.gsm
libdata/asterisk/sounds/en/maine.gsm
libdata/asterisk/sounds/en/maintenance.gsm
libdata/asterisk/sounds/en/male.gsm
libdata/asterisk/sounds/en/management.gsm
libdata/asterisk/sounds/en/manufacturing.gsm
libdata/asterisk/sounds/en/marketing.gsm
libdata/asterisk/sounds/en/marryme.gsm
libdata/asterisk/sounds/en/martini.gsm
libdata/asterisk/sounds/en/maryland.gsm
libdata/asterisk/sounds/en/massachusetts.gsm
libdata/asterisk/sounds/en/mathematics.gsm
libdata/asterisk/sounds/en/maximum.gsm
libdata/asterisk/sounds/en/megabits.gsm
libdata/asterisk/sounds/en/megabytes.gsm
libdata/asterisk/sounds/en/megahertz.gsm
libdata/asterisk/sounds/en/memory.gsm
libdata/asterisk/sounds/en/memphis.gsm
libdata/asterisk/sounds/en/menu.gsm
libdata/asterisk/sounds/en/mesa.gsm
libdata/asterisk/sounds/en/message-from.gsm
libdata/asterisk/sounds/en/message-number.gsm
libdata/asterisk/sounds/en/messages_curious.gsm
libdata/asterisk/sounds/en/meter.gsm
libdata/asterisk/sounds/en/meters.gsm
libdata/asterisk/sounds/en/miami.gsm
libdata/asterisk/sounds/en/michigan.gsm
libdata/asterisk/sounds/en/midnight-tomorrow-night.gsm
libdata/asterisk/sounds/en/midnight-tonight.gsm
libdata/asterisk/sounds/en/midnight.gsm
libdata/asterisk/sounds/en/mike.gsm
libdata/asterisk/sounds/en/miles-per-hour.gsm
libdata/asterisk/sounds/en/miles.gsm
libdata/asterisk/sounds/en/millionth.gsm
libdata/asterisk/sounds/en/milwaukee.gsm
libdata/asterisk/sounds/en/mind_repeating.gsm
libdata/asterisk/sounds/en/minimum.gsm
libdata/asterisk/sounds/en/minions-not-answering-leave-message.gsm
libdata/asterisk/sounds/en/minneapolis.gsm
libdata/asterisk/sounds/en/minnesota.gsm
libdata/asterisk/sounds/en/minute.gsm
libdata/asterisk/sounds/en/minutes.gsm
libdata/asterisk/sounds/en/missed.gsm
libdata/asterisk/sounds/en/mississippi.gsm
libdata/asterisk/sounds/en/missouri.gsm
libdata/asterisk/sounds/en/misty.gsm
libdata/asterisk/sounds/en/mode.gsm
libdata/asterisk/sounds/en/monitored.gsm
libdata/asterisk/sounds/en/montana.gsm
libdata/asterisk/sounds/en/month.gsm
libdata/asterisk/sounds/en/months.gsm
libdata/asterisk/sounds/en/moo1.gsm
libdata/asterisk/sounds/en/moo2.gsm
libdata/asterisk/sounds/en/morning.gsm
libdata/asterisk/sounds/en/moron.gsm
libdata/asterisk/sounds/en/mostly.gsm
libdata/asterisk/sounds/en/motor-pool.gsm
libdata/asterisk/sounds/en/mountain.gsm
libdata/asterisk/sounds/en/moving.gsm
libdata/asterisk/sounds/en/ms.gsm
libdata/asterisk/sounds/en/nashville.gsm
libdata/asterisk/sounds/en/national-weather-service.gsm
libdata/asterisk/sounds/en/nautical-miles.gsm
libdata/asterisk/sounds/en/nbdy-avail-to-take-call.gsm
libdata/asterisk/sounds/en/near.gsm
libdata/asterisk/sounds/en/nebraska.gsm
libdata/asterisk/sounds/en/negative.gsm
libdata/asterisk/sounds/en/network-operations-center.gsm
libdata/asterisk/sounds/en/network-operations.gsm
libdata/asterisk/sounds/en/nevada.gsm
libdata/asterisk/sounds/en/new-accounts.gsm
libdata/asterisk/sounds/en/new-hampshire.gsm
libdata/asterisk/sounds/en/new-jersey.gsm
libdata/asterisk/sounds/en/new-mexico.gsm
libdata/asterisk/sounds/en/new-orleans.gsm
libdata/asterisk/sounds/en/new-york.gsm
libdata/asterisk/sounds/en/night.gsm
libdata/asterisk/sounds/en/nineteenth.gsm
libdata/asterisk/sounds/en/ninetieth.gsm
libdata/asterisk/sounds/en/ninth.gsm
libdata/asterisk/sounds/en/no-112-1.gsm
libdata/asterisk/sounds/en/no-112-2.gsm
libdata/asterisk/sounds/en/no-911-1.gsm
libdata/asterisk/sounds/en/no-911-2.gsm
libdata/asterisk/sounds/en/no-empty-conferences.gsm
libdata/asterisk/sounds/en/no-info-about-number.gsm
libdata/asterisk/sounds/en/no-longer-in-service.gsm
libdata/asterisk/sounds/en/no-reply-no-mailbox.gsm
libdata/asterisk/sounds/en/no-route-exists-to-dest.gsm
libdata/asterisk/sounds/en/no_invite_to_conf.gsm
libdata/asterisk/sounds/en/no_longer_conf.gsm
libdata/asterisk/sounds/en/no_problem_help.gsm
libdata/asterisk/sounds/en/no_worries_try_again.gsm
libdata/asterisk/sounds/en/nobody-but-chickens.gsm
libdata/asterisk/sounds/en/node.gsm
libdata/asterisk/sounds/en/none_of_my_business1.gsm
libdata/asterisk/sounds/en/none_of_my_business2.gsm
libdata/asterisk/sounds/en/north-carolina.gsm
libdata/asterisk/sounds/en/north-dakota.gsm
libdata/asterisk/sounds/en/north.gsm
libdata/asterisk/sounds/en/northerly.gsm
libdata/asterisk/sounds/en/not-auth-pstn.gsm
libdata/asterisk/sounds/en/not-enough-credit.gsm
libdata/asterisk/sounds/en/not-necessary-1.gsm
libdata/asterisk/sounds/en/not-necessary-ac.gsm
libdata/asterisk/sounds/en/not-necessary-dial-1-or-ac.gsm
libdata/asterisk/sounds/en/not-rqsted-wakeup.gsm
libdata/asterisk/sounds/en/not-taking-your-call.gsm
libdata/asterisk/sounds/en/not-yet-assigned.gsm
libdata/asterisk/sounds/en/not-yet-connected.gsm
libdata/asterisk/sounds/en/not_me.gsm
libdata/asterisk/sounds/en/not_pass.gsm
libdata/asterisk/sounds/en/not_siri.gsm
libdata/asterisk/sounds/en/not_you.gsm
libdata/asterisk/sounds/en/nothing-recorded.gsm
libdata/asterisk/sounds/en/now.gsm
libdata/asterisk/sounds/en/num-not-in-db.gsm
libdata/asterisk/sounds/en/num-outside-area.gsm
libdata/asterisk/sounds/en/num-was-successfully.gsm
libdata/asterisk/sounds/en/number-not-answering.gsm
libdata/asterisk/sounds/en/number.gsm
libdata/asterisk/sounds/en/oakland.gsm
libdata/asterisk/sounds/en/octothorpe.gsm
libdata/asterisk/sounds/en/off-duty.gsm
libdata/asterisk/sounds/en/off.gsm
libdata/asterisk/sounds/en/office-code.gsm
libdata/asterisk/sounds/en/office-iguanas.gsm
libdata/asterisk/sounds/en/office.gsm
libdata/asterisk/sounds/en/ogm_home.gsm
libdata/asterisk/sounds/en/ohio.gsm
libdata/asterisk/sounds/en/oklahoma-city.gsm
libdata/asterisk/sounds/en/oklahoma.gsm
libdata/asterisk/sounds/en/omaha.gsm
libdata/asterisk/sounds/en/on-busy.gsm
libdata/asterisk/sounds/en/on-monthly-tel-stment.gsm
libdata/asterisk/sounds/en/on-no-answer.gsm
libdata/asterisk/sounds/en/on.gsm
libdata/asterisk/sounds/en/one-moment-please.gsm
libdata/asterisk/sounds/en/one-small-step.gsm
libdata/asterisk/sounds/en/one-small-step2.gsm
libdata/asterisk/sounds/en/oops1.gsm
libdata/asterisk/sounds/en/oops2.gsm
libdata/asterisk/sounds/en/oops3.gsm
libdata/asterisk/sounds/en/open-parenthesis.gsm
libdata/asterisk/sounds/en/open.gsm
libdata/asterisk/sounds/en/operations.gsm
libdata/asterisk/sounds/en/option-is-invalid.gsm
libdata/asterisk/sounds/en/option-not-implemented.gsm
libdata/asterisk/sounds/en/or-press.gsm
libdata/asterisk/sounds/en/or.gsm
libdata/asterisk/sounds/en/order-desk.gsm
libdata/asterisk/sounds/en/orders.gsm
libdata/asterisk/sounds/en/oregon.gsm
libdata/asterisk/sounds/en/other-options-exercise.gsm
libdata/asterisk/sounds/en/otherwise-press.gsm
libdata/asterisk/sounds/en/otherwise.gsm
libdata/asterisk/sounds/en/our-business-hours-are.gsm
libdata/asterisk/sounds/en/outbound.gsm
libdata/asterisk/sounds/en/outside-sales.gsm
libdata/asterisk/sounds/en/outside-transfer.gsm
libdata/asterisk/sounds/en/pacific.gsm
libdata/asterisk/sounds/en/packet.gsm
libdata/asterisk/sounds/en/panic.gsm
libdata/asterisk/sounds/en/partially.gsm
libdata/asterisk/sounds/en/partly.gsm
libdata/asterisk/sounds/en/pascal.gsm
libdata/asterisk/sounds/en/pascal2.gsm
libdata/asterisk/sounds/en/passwords_not_match.gsm
libdata/asterisk/sounds/en/patchy.gsm
libdata/asterisk/sounds/en/pbx-invalid.gsm
libdata/asterisk/sounds/en/pbx-invalidpark.gsm
libdata/asterisk/sounds/en/pbx-parkingfailed.gsm
libdata/asterisk/sounds/en/pbx-transfer.gsm
libdata/asterisk/sounds/en/pence.gsm
libdata/asterisk/sounds/en/pennies.gsm
libdata/asterisk/sounds/en/pennsylvania.gsm
libdata/asterisk/sounds/en/penny.gsm
libdata/asterisk/sounds/en/percent.gsm
libdata/asterisk/sounds/en/perhaps-we-are.gsm
libdata/asterisk/sounds/en/perhaps-we-are2.gsm
libdata/asterisk/sounds/en/period.gsm
libdata/asterisk/sounds/en/personnel.gsm
libdata/asterisk/sounds/en/persons-in-path-of.gsm
libdata/asterisk/sounds/en/philadelphia.gsm
libdata/asterisk/sounds/en/phoenix.gsm
libdata/asterisk/sounds/en/phonetic/9_p.gsm
libdata/asterisk/sounds/en/phonetic/a_p.gsm
libdata/asterisk/sounds/en/phonetic/b_p.gsm
libdata/asterisk/sounds/en/phonetic/c_p.gsm
libdata/asterisk/sounds/en/phonetic/d_p.gsm
libdata/asterisk/sounds/en/phonetic/e_p.gsm
libdata/asterisk/sounds/en/phonetic/f_p.gsm
libdata/asterisk/sounds/en/phonetic/g_p.gsm
libdata/asterisk/sounds/en/phonetic/h_p.gsm
libdata/asterisk/sounds/en/phonetic/i_p.gsm
libdata/asterisk/sounds/en/phonetic/j_p.gsm
libdata/asterisk/sounds/en/phonetic/k_p.gsm
libdata/asterisk/sounds/en/phonetic/l_p.gsm
libdata/asterisk/sounds/en/phonetic/m_p.gsm
libdata/asterisk/sounds/en/phonetic/n_p.gsm
libdata/asterisk/sounds/en/phonetic/o_p.gsm
libdata/asterisk/sounds/en/phonetic/p_p.gsm
libdata/asterisk/sounds/en/phonetic/q_p.gsm
libdata/asterisk/sounds/en/phonetic/r_p.gsm
libdata/asterisk/sounds/en/phonetic/s_p.gsm
libdata/asterisk/sounds/en/phonetic/t_p.gsm
libdata/asterisk/sounds/en/phonetic/u_p.gsm
libdata/asterisk/sounds/en/phonetic/v_p.gsm
libdata/asterisk/sounds/en/phonetic/w_p.gsm
libdata/asterisk/sounds/en/phonetic/x_p.gsm
libdata/asterisk/sounds/en/phonetic/y_p.gsm
libdata/asterisk/sounds/en/phonetic/z_p.gsm
libdata/asterisk/sounds/en/physics.gsm
libdata/asterisk/sounds/en/pin-invalid.gsm
libdata/asterisk/sounds/en/pin-number-accepted.gsm
libdata/asterisk/sounds/en/pin_number.gsm
libdata/asterisk/sounds/en/ping.gsm
libdata/asterisk/sounds/en/pipe.gsm
libdata/asterisk/sounds/en/planning.gsm
libdata/asterisk/sounds/en/please-answer-the-following.gsm
libdata/asterisk/sounds/en/please-contact-tech-supt.gsm
libdata/asterisk/sounds/en/please-enter-first-three-letters.gsm
libdata/asterisk/sounds/en/please-enter-the.gsm
libdata/asterisk/sounds/en/please-enter-your.gsm
libdata/asterisk/sounds/en/please-hang-up-and-dial-operator.gsm
libdata/asterisk/sounds/en/please-hang-up-and-try-again.gsm
libdata/asterisk/sounds/en/please-hold-minion-connect.gsm
libdata/asterisk/sounds/en/please-hold-while-minion.gsm
libdata/asterisk/sounds/en/please-try-again-later.gsm
libdata/asterisk/sounds/en/please-try-again.gsm
libdata/asterisk/sounds/en/please-try-call-later.gsm
libdata/asterisk/sounds/en/please-try.gsm
libdata/asterisk/sounds/en/please-wait-connect-oncall-eng.gsm
libdata/asterisk/sounds/en/pls-ent-num-transfer.gsm
libdata/asterisk/sounds/en/pls-enter-conf-password.gsm
libdata/asterisk/sounds/en/pls-enter-num-message-after-tone.gsm
libdata/asterisk/sounds/en/pls-enter-vm-password.gsm
libdata/asterisk/sounds/en/pls-entr-num-uwish2-call.gsm
libdata/asterisk/sounds/en/pls-hold-process-tx.gsm
libdata/asterisk/sounds/en/pls-hold-silent30.gsm
libdata/asterisk/sounds/en/pls-hold-while-try.gsm
libdata/asterisk/sounds/en/pls-listen-options-changed.gsm
libdata/asterisk/sounds/en/pls-lv-msg-will-contact.gsm
libdata/asterisk/sounds/en/pls-rcrd-name-at-tone.gsm
libdata/asterisk/sounds/en/pls-stay-on-line.gsm
libdata/asterisk/sounds/en/pls-try-again.gsm
libdata/asterisk/sounds/en/pls-try-area-code.gsm
libdata/asterisk/sounds/en/pls-try-manually.gsm
libdata/asterisk/sounds/en/pls-wait-connect-call.gsm
libdata/asterisk/sounds/en/plugh.gsm
libdata/asterisk/sounds/en/pm-announcement-number.gsm
libdata/asterisk/sounds/en/pm-invalid-option.gsm
libdata/asterisk/sounds/en/pm-phrase-management.gsm
libdata/asterisk/sounds/en/pm-prompt-number.gsm
libdata/asterisk/sounds/en/pm-to-record-phrase.gsm
libdata/asterisk/sounds/en/pm-to-review-phrase.gsm
libdata/asterisk/sounds/en/point.gsm
libdata/asterisk/sounds/en/pop.gsm
libdata/asterisk/sounds/en/port.gsm
libdata/asterisk/sounds/en/portland.gsm
libdata/asterisk/sounds/en/portnumber.gsm
libdata/asterisk/sounds/en/position.gsm
libdata/asterisk/sounds/en/post-entry-pound.gsm
libdata/asterisk/sounds/en/pounds.gsm
libdata/asterisk/sounds/en/presales-support.gsm
libdata/asterisk/sounds/en/presidents-office.gsm
libdata/asterisk/sounds/en/press-0.gsm
libdata/asterisk/sounds/en/press-1.gsm
libdata/asterisk/sounds/en/press-2.gsm
libdata/asterisk/sounds/en/press-3.gsm
libdata/asterisk/sounds/en/press-4.gsm
libdata/asterisk/sounds/en/press-5.gsm
libdata/asterisk/sounds/en/press-6-to-eject.gsm
libdata/asterisk/sounds/en/press-6.gsm
libdata/asterisk/sounds/en/press-7.gsm
libdata/asterisk/sounds/en/press-8.gsm
libdata/asterisk/sounds/en/press-9.gsm
libdata/asterisk/sounds/en/press-button-again.gsm
libdata/asterisk/sounds/en/press-enter.gsm
libdata/asterisk/sounds/en/press-escape.gsm
libdata/asterisk/sounds/en/press-hash.gsm
libdata/asterisk/sounds/en/press-or-say-0.gsm
libdata/asterisk/sounds/en/press-or-say-1.gsm
libdata/asterisk/sounds/en/press-or-say-2.gsm
libdata/asterisk/sounds/en/press-or-say-3.gsm
libdata/asterisk/sounds/en/press-or-say-4.gsm
libdata/asterisk/sounds/en/press-or-say-5.gsm
libdata/asterisk/sounds/en/press-or-say-6.gsm
libdata/asterisk/sounds/en/press-or-say-7.gsm
libdata/asterisk/sounds/en/press-or-say-8.gsm
libdata/asterisk/sounds/en/press-or-say-9.gsm
libdata/asterisk/sounds/en/press-pound-save-changes.gsm
libdata/asterisk/sounds/en/press-pound-to-login-star-to-hangup.gsm
libdata/asterisk/sounds/en/press-pound.gsm
libdata/asterisk/sounds/en/press-return.gsm
libdata/asterisk/sounds/en/press-star-cancel.gsm
libdata/asterisk/sounds/en/press-star.gsm
libdata/asterisk/sounds/en/press-the-space-bar.gsm
libdata/asterisk/sounds/en/press-tilde.gsm
libdata/asterisk/sounds/en/press.gsm
libdata/asterisk/sounds/en/press_pound_hash.gsm
libdata/asterisk/sounds/en/press_pound_hash_key.gsm
libdata/asterisk/sounds/en/pressure.gsm
libdata/asterisk/sounds/en/prime_number.gsm
libdata/asterisk/sounds/en/printing.gsm
libdata/asterisk/sounds/en/priv-callee-options.gsm
libdata/asterisk/sounds/en/priv-callpending.gsm
libdata/asterisk/sounds/en/priv-introsaved.gsm
libdata/asterisk/sounds/en/priv-recordintro.gsm
libdata/asterisk/sounds/en/privacy-blacklisted.gsm
libdata/asterisk/sounds/en/privacy-blocked.gsm
libdata/asterisk/sounds/en/privacy-if-error-leave-message-or-hangup.gsm
libdata/asterisk/sounds/en/privacy-if-error.gsm
libdata/asterisk/sounds/en/privacy-if-sales-call-contact-in-writing.gsm
libdata/asterisk/sounds/en/privacy-incorrect.gsm
libdata/asterisk/sounds/en/privacy-last-caller-was.gsm
libdata/asterisk/sounds/en/privacy-not.gsm
libdata/asterisk/sounds/en/privacy-please-dial.gsm
libdata/asterisk/sounds/en/privacy-please-stay-on-line-to-be-connected.gsm
libdata/asterisk/sounds/en/privacy-prompt.gsm
libdata/asterisk/sounds/en/privacy-restricted-by-req.gsm
libdata/asterisk/sounds/en/privacy-screening-unidentified-calls.gsm
libdata/asterisk/sounds/en/privacy-stop-calling-not-welcome.gsm
libdata/asterisk/sounds/en/privacy-stop-calling-not-welcome2.gsm
libdata/asterisk/sounds/en/privacy-thankyou.gsm
libdata/asterisk/sounds/en/privacy-this-number-is.gsm
libdata/asterisk/sounds/en/privacy-to-blacklist-last-caller.gsm
libdata/asterisk/sounds/en/privacy-to-blacklist-this-number.gsm
libdata/asterisk/sounds/en/privacy-to-hear-our-contact-details.gsm
libdata/asterisk/sounds/en/privacy-to-whitelist-last-caller.gsm
libdata/asterisk/sounds/en/privacy-to-whitelist-this-number.gsm
libdata/asterisk/sounds/en/privacy-unident.gsm
libdata/asterisk/sounds/en/privacy-whitelisted.gsm
libdata/asterisk/sounds/en/privacy-you-are-blacklisted.gsm
libdata/asterisk/sounds/en/privacy-you-are-calling-from.gsm
libdata/asterisk/sounds/en/privacy-your-callerid-is.gsm
libdata/asterisk/sounds/en/product.gsm
libdata/asterisk/sounds/en/production.gsm
libdata/asterisk/sounds/en/projects.gsm
libdata/asterisk/sounds/en/prompt-not-found.gsm
libdata/asterisk/sounds/en/protocol.gsm
libdata/asterisk/sounds/en/public-relations.gsm
libdata/asterisk/sounds/en/purchasing.gsm
libdata/asterisk/sounds/en/purposes.gsm
libdata/asterisk/sounds/en/q-dot-931.gsm
libdata/asterisk/sounds/en/q-dot-9thirty1.gsm
libdata/asterisk/sounds/en/quality-assurance.gsm
libdata/asterisk/sounds/en/quality-control.gsm
libdata/asterisk/sounds/en/quality_control.gsm
libdata/asterisk/sounds/en/quarter.gsm
libdata/asterisk/sounds/en/queue-callswaiting.gsm
libdata/asterisk/sounds/en/queue-holdtime.gsm
libdata/asterisk/sounds/en/queue-less-than.gsm
libdata/asterisk/sounds/en/queue-minute.gsm
libdata/asterisk/sounds/en/queue-minutes.gsm
libdata/asterisk/sounds/en/queue-periodic-announce.gsm
libdata/asterisk/sounds/en/queue-quantity1.gsm
libdata/asterisk/sounds/en/queue-quantity2.gsm
libdata/asterisk/sounds/en/queue-reporthold.gsm
libdata/asterisk/sounds/en/queue-seconds.gsm
libdata/asterisk/sounds/en/queue-thankyou.gsm
libdata/asterisk/sounds/en/queue-thereare.gsm
libdata/asterisk/sounds/en/queue-youarenext.gsm
libdata/asterisk/sounds/en/quickly.gsm
libdata/asterisk/sounds/en/quote.gsm
libdata/asterisk/sounds/en/race.gsm
libdata/asterisk/sounds/en/rain.gsm
libdata/asterisk/sounds/en/rainfall.gsm
libdata/asterisk/sounds/en/rainy.gsm
libdata/asterisk/sounds/en/range.gsm
libdata/asterisk/sounds/en/reassigned-new-areacode.gsm
libdata/asterisk/sounds/en/rebates.gsm
libdata/asterisk/sounds/en/received.gsm
libdata/asterisk/sounds/en/receiving.gsm
libdata/asterisk/sounds/en/reception.gsm
libdata/asterisk/sounds/en/recorded.gsm
libdata/asterisk/sounds/en/registrar.gsm
libdata/asterisk/sounds/en/regret_not_saved.gsm
libdata/asterisk/sounds/en/remote-already-in-this-mode-2.gsm
libdata/asterisk/sounds/en/remote-already-in-this-mode.gsm
libdata/asterisk/sounds/en/remote-base.gsm
libdata/asterisk/sounds/en/removed.gsm
libdata/asterisk/sounds/en/repair.gsm
libdata/asterisk/sounds/en/repeat-only.gsm
libdata/asterisk/sounds/en/repeat_pin.gsm
libdata/asterisk/sounds/en/repeater.gsm
libdata/asterisk/sounds/en/research-and-development.gsm
libdata/asterisk/sounds/en/research.gsm
libdata/asterisk/sounds/en/reservations.gsm
libdata/asterisk/sounds/en/restarting.gsm
libdata/asterisk/sounds/en/rhode-island.gsm
libdata/asterisk/sounds/en/right-bracket.gsm
libdata/asterisk/sounds/en/rising.gsm
libdata/asterisk/sounds/en/risk-management.gsm
libdata/asterisk/sounds/en/roaming.gsm
libdata/asterisk/sounds/en/room-service.gsm
libdata/asterisk/sounds/en/route-sip.gsm
libdata/asterisk/sounds/en/rqsted-wakeup-for.gsm
libdata/asterisk/sounds/en/sacramento.gsm
libdata/asterisk/sounds/en/said_hold_on.gsm
libdata/asterisk/sounds/en/saint-louis.gsm
libdata/asterisk/sounds/en/sales-floor.gsm
libdata/asterisk/sounds/en/sales.gsm
libdata/asterisk/sounds/en/saleshell.gsm
libdata/asterisk/sounds/en/san-antonio.gsm
libdata/asterisk/sounds/en/san-diego.gsm
libdata/asterisk/sounds/en/san-francisco.gsm
libdata/asterisk/sounds/en/san-jose.gsm
libdata/asterisk/sounds/en/save-announce-press.gsm
libdata/asterisk/sounds/en/say-temp-msg-prs-pound.gsm
libdata/asterisk/sounds/en/says-thats-stupid.gsm
libdata/asterisk/sounds/en/scattered.gsm
libdata/asterisk/sounds/en/sciences.gsm
libdata/asterisk/sounds/en/screen-callee-options.gsm
libdata/asterisk/sounds/en/seattle.gsm
libdata/asterisk/sounds/en/second.gsm
libdata/asterisk/sounds/en/seconds.gsm
libdata/asterisk/sounds/en/secretary.gsm
libdata/asterisk/sounds/en/security.gsm
libdata/asterisk/sounds/en/self-destruct-in.gsm
libdata/asterisk/sounds/en/self-destruct.gsm
libdata/asterisk/sounds/en/sendhelp.gsm
libdata/asterisk/sounds/en/server.gsm
libdata/asterisk/sounds/en/service-not-implemented.gsm
libdata/asterisk/sounds/en/service.gsm
libdata/asterisk/sounds/en/seventeenth.gsm
libdata/asterisk/sounds/en/seventh.gsm
libdata/asterisk/sounds/en/seventieth.gsm
libdata/asterisk/sounds/en/severe.gsm
libdata/asterisk/sounds/en/shall-i-try-again.gsm
libdata/asterisk/sounds/en/shiny-brass-lamp.gsm
libdata/asterisk/sounds/en/shipping.gsm
libdata/asterisk/sounds/en/shop.gsm
libdata/asterisk/sounds/en/show-office.gsm
libdata/asterisk/sounds/en/sighted.gsm
libdata/asterisk/sounds/en/silence/1.gsm
libdata/asterisk/sounds/en/silence/10.gsm
libdata/asterisk/sounds/en/silence/2.gsm
libdata/asterisk/sounds/en/silence/3.gsm
libdata/asterisk/sounds/en/silence/4.gsm
libdata/asterisk/sounds/en/silence/5.gsm
libdata/asterisk/sounds/en/silence/6.gsm
libdata/asterisk/sounds/en/silence/7.gsm
libdata/asterisk/sounds/en/silence/8.gsm
libdata/asterisk/sounds/en/silence/9.gsm
libdata/asterisk/sounds/en/simplex.gsm
libdata/asterisk/sounds/en/simul-call-limit-reached.gsm
libdata/asterisk/sounds/en/sixteenth.gsm
libdata/asterisk/sounds/en/sixth.gsm
libdata/asterisk/sounds/en/sixtieth.gsm
libdata/asterisk/sounds/en/sleet.gsm
libdata/asterisk/sounds/en/sleeting.gsm
libdata/asterisk/sounds/en/slow.gsm
libdata/asterisk/sounds/en/slowly.gsm
libdata/asterisk/sounds/en/snow.gsm
libdata/asterisk/sounds/en/snowing.gsm
libdata/asterisk/sounds/en/snowy.gsm
libdata/asterisk/sounds/en/software.gsm
libdata/asterisk/sounds/en/someone-you-trust1.gsm
libdata/asterisk/sounds/en/someone-you-trust2.gsm
libdata/asterisk/sounds/en/someone-you-trust3.gsm
libdata/asterisk/sounds/en/something-terribly-wrong.gsm
libdata/asterisk/sounds/en/sorry-cant-let-you-do-that.gsm
libdata/asterisk/sounds/en/sorry-cant-let-you-do-that2.gsm
libdata/asterisk/sounds/en/sorry-cant-let-you-do-that3.gsm
libdata/asterisk/sounds/en/sorry-mailbox-full.gsm
libdata/asterisk/sounds/en/sorry-youre-having-problems.gsm
libdata/asterisk/sounds/en/sorry.gsm
libdata/asterisk/sounds/en/sorry2.gsm
libdata/asterisk/sounds/en/sorry_caller_number.gsm
libdata/asterisk/sounds/en/sorry_didnt_get.gsm
libdata/asterisk/sounds/en/sorry_didnt_quite_get.gsm
libdata/asterisk/sounds/en/sorry_login_incorrect.gsm
libdata/asterisk/sounds/en/sorry_missed.gsm
libdata/asterisk/sounds/en/sorry_no_messages.gsm
libdata/asterisk/sounds/en/sorrydave.gsm
libdata/asterisk/sounds/en/south-carolina.gsm
libdata/asterisk/sounds/en/south-dakota.gsm
libdata/asterisk/sounds/en/south.gsm
libdata/asterisk/sounds/en/southerly.gsm
libdata/asterisk/sounds/en/spam.gsm
libdata/asterisk/sounds/en/spam2.gsm
libdata/asterisk/sounds/en/speak-louder-into-phone.gsm
libdata/asterisk/sounds/en/speak-louder.gsm
libdata/asterisk/sounds/en/speak-to-the-operator.gsm
libdata/asterisk/sounds/en/speed-dial-empty.gsm
libdata/asterisk/sounds/en/speed-dial.gsm
libdata/asterisk/sounds/en/speed.gsm
libdata/asterisk/sounds/en/splat.gsm
libdata/asterisk/sounds/en/spy-agent.gsm
libdata/asterisk/sounds/en/spy-console.gsm
libdata/asterisk/sounds/en/spy-dahdi.gsm
libdata/asterisk/sounds/en/spy-h323.gsm
libdata/asterisk/sounds/en/spy-iax.gsm
libdata/asterisk/sounds/en/spy-iax2.gsm
libdata/asterisk/sounds/en/spy-jingle.gsm
libdata/asterisk/sounds/en/spy-local.gsm
libdata/asterisk/sounds/en/spy-mgcp.gsm
libdata/asterisk/sounds/en/spy-misdn.gsm
libdata/asterisk/sounds/en/spy-mobile.gsm
libdata/asterisk/sounds/en/spy-nbs.gsm
libdata/asterisk/sounds/en/spy-sip.gsm
libdata/asterisk/sounds/en/spy-skinny.gsm
libdata/asterisk/sounds/en/spy-unistim.gsm
libdata/asterisk/sounds/en/spy-usbradio.gsm
libdata/asterisk/sounds/en/spy-zap.gsm
libdata/asterisk/sounds/en/ss-noservice.gsm
libdata/asterisk/sounds/en/ssh.gsm
libdata/asterisk/sounds/en/staff.gsm
libdata/asterisk/sounds/en/staffing.gsm
libdata/asterisk/sounds/en/standard.gsm
libdata/asterisk/sounds/en/star-for-menu-again.gsm
libdata/asterisk/sounds/en/starting-with-either.gsm
libdata/asterisk/sounds/en/station.gsm
libdata/asterisk/sounds/en/status.gsm
libdata/asterisk/sounds/en/step-in-stream.gsm
libdata/asterisk/sounds/en/sterling.gsm
libdata/asterisk/sounds/en/still_on_phone.gsm
libdata/asterisk/sounds/en/store-accounting.gsm
libdata/asterisk/sounds/en/storm.gsm
libdata/asterisk/sounds/en/sun.gsm
libdata/asterisk/sounds/en/sunny.gsm
libdata/asterisk/sounds/en/support.gsm
libdata/asterisk/sounds/en/sure_help.gsm
libdata/asterisk/sounds/en/swap.gsm
libdata/asterisk/sounds/en/system-crashed.gsm
libdata/asterisk/sounds/en/system-status-msg.gsm
libdata/asterisk/sounds/en/system.gsm
libdata/asterisk/sounds/en/systems.gsm
libdata/asterisk/sounds/en/talkin_me.gsm
libdata/asterisk/sounds/en/talking-to-myself.gsm
libdata/asterisk/sounds/en/target-attendant.gsm
libdata/asterisk/sounds/en/tcp.gsm
libdata/asterisk/sounds/en/technical-support.gsm
libdata/asterisk/sounds/en/telemarketercalling.gsm
libdata/asterisk/sounds/en/telephone-in-your-pocket.gsm
libdata/asterisk/sounds/en/telephone-in-your-pocket2.gsm
libdata/asterisk/sounds/en/telephone-number.gsm
libdata/asterisk/sounds/en/telesales.gsm
libdata/asterisk/sounds/en/teletubbie-murder.gsm
libdata/asterisk/sounds/en/telnet.gsm
libdata/asterisk/sounds/en/temp-disconnected.gsm
libdata/asterisk/sounds/en/temperature.gsm
libdata/asterisk/sounds/en/tennessee.gsm
libdata/asterisk/sounds/en/tenth.gsm
libdata/asterisk/sounds/en/terabits.gsm
libdata/asterisk/sounds/en/terabytes.gsm
libdata/asterisk/sounds/en/terminated.gsm
libdata/asterisk/sounds/en/terminating.gsm
libdata/asterisk/sounds/en/test-tones-follow.gsm
libdata/asterisk/sounds/en/texas.gsm
libdata/asterisk/sounds/en/thank-you-cooperation.gsm
libdata/asterisk/sounds/en/thank-you-for-calling.gsm
libdata/asterisk/sounds/en/thank_you_calling.gsm
libdata/asterisk/sounds/en/thanks-annoyance.gsm
libdata/asterisk/sounds/en/thanks-for-calling-today.gsm
libdata/asterisk/sounds/en/thanks-for-using.gsm
libdata/asterisk/sounds/en/that-is-not-rec-phn-num.gsm
libdata/asterisk/sounds/en/that-number.gsm
libdata/asterisk/sounds/en/that-tickles.gsm
libdata/asterisk/sounds/en/that-you-require.gsm
libdata/asterisk/sounds/en/the-mailbox.gsm
libdata/asterisk/sounds/en/the-monkeys-twice.gsm
libdata/asterisk/sounds/en/the-new-number-is.gsm
libdata/asterisk/sounds/en/the-next.gsm
libdata/asterisk/sounds/en/the-num-i-have-is.gsm
libdata/asterisk/sounds/en/the-number-u-dialed.gsm
libdata/asterisk/sounds/en/the-party-you-are-calling.gsm
libdata/asterisk/sounds/en/the-weather-at.gsm
libdata/asterisk/sounds/en/then-press-pound.gsm
libdata/asterisk/sounds/en/there-are.gsm
libdata/asterisk/sounds/en/there-is-no-customer-support.gsm
libdata/asterisk/sounds/en/these-are-currently.gsm
libdata/asterisk/sounds/en/third.gsm
libdata/asterisk/sounds/en/thirteenth.gsm
libdata/asterisk/sounds/en/thirtieth.gsm
libdata/asterisk/sounds/en/this-call-may-be-monitored-or-recorded.gsm
libdata/asterisk/sounds/en/this-call-may-be.gsm
libdata/asterisk/sounds/en/this-call-will-cost.gsm
libdata/asterisk/sounds/en/this-call-will-end-in.gsm
libdata/asterisk/sounds/en/this-is-the-voice-mail-system.gsm
libdata/asterisk/sounds/en/this-is-yr-wakeup-call.gsm
libdata/asterisk/sounds/en/this.gsm
libdata/asterisk/sounds/en/thnk-u-for-patience.gsm
libdata/asterisk/sounds/en/thousandth.gsm
libdata/asterisk/sounds/en/through.gsm
libdata/asterisk/sounds/en/thunderstorm.gsm
libdata/asterisk/sounds/en/tide.gsm
libdata/asterisk/sounds/en/time.gsm
libdata/asterisk/sounds/en/times.gsm
libdata/asterisk/sounds/en/timewarp.gsm
libdata/asterisk/sounds/en/to-accept-recording.gsm
libdata/asterisk/sounds/en/to-be-called-back.gsm
libdata/asterisk/sounds/en/to-blklist-last-caller.gsm
libdata/asterisk/sounds/en/to-blklist-last-num.gsm
libdata/asterisk/sounds/en/to-call-num-press.gsm
libdata/asterisk/sounds/en/to-call-prson-w-sent-msg.gsm
libdata/asterisk/sounds/en/to-call-this-number.gsm
libdata/asterisk/sounds/en/to-cancel-this-msg.gsm
libdata/asterisk/sounds/en/to-cancel-wakeup.gsm
libdata/asterisk/sounds/en/to-change-exp-date.gsm
libdata/asterisk/sounds/en/to-change-your-pin-number.gsm
libdata/asterisk/sounds/en/to-collect-voicemail.gsm
libdata/asterisk/sounds/en/to-compose-a-message.gsm
libdata/asterisk/sounds/en/to-confirm-wakeup.gsm
libdata/asterisk/sounds/en/to-dial-by-name-press.gsm
libdata/asterisk/sounds/en/to-dial-by-name.gsm
libdata/asterisk/sounds/en/to-enter-a-diff-number.gsm
libdata/asterisk/sounds/en/to-enter-a-number.gsm
libdata/asterisk/sounds/en/to-erase-yr-temp-grtg.gsm
libdata/asterisk/sounds/en/to-extension.gsm
libdata/asterisk/sounds/en/to-hang-up-2.gsm
libdata/asterisk/sounds/en/to-hang-up.gsm
libdata/asterisk/sounds/en/to-hear-callerid.gsm
libdata/asterisk/sounds/en/to-hear-menu-again.gsm
libdata/asterisk/sounds/en/to-hear-msg-again.gsm
libdata/asterisk/sounds/en/to-hear-msg-envelope.gsm
libdata/asterisk/sounds/en/to-hear-net-status.gsm
libdata/asterisk/sounds/en/to-hear-weather-status.gsm
libdata/asterisk/sounds/en/to-hear-your-account-balance.gsm
libdata/asterisk/sounds/en/to-join-a-meeting.gsm
libdata/asterisk/sounds/en/to-leave-message-for.gsm
libdata/asterisk/sounds/en/to-listen-to-it.gsm
libdata/asterisk/sounds/en/to-log-in-to-voice-mail.gsm
libdata/asterisk/sounds/en/to-place-outgoing-call.gsm
libdata/asterisk/sounds/en/to-reach-first-rep.gsm
libdata/asterisk/sounds/en/to-reach-operator.gsm
libdata/asterisk/sounds/en/to-rec-yr-temp-grtg.gsm
libdata/asterisk/sounds/en/to-record-call.gsm
libdata/asterisk/sounds/en/to-redial-the-last-number-you-called.gsm
libdata/asterisk/sounds/en/to-report-emergency.gsm
libdata/asterisk/sounds/en/to-report-system-network-down.gsm
libdata/asterisk/sounds/en/to-rerecord-announce.gsm
libdata/asterisk/sounds/en/to-rerecord-it.gsm
libdata/asterisk/sounds/en/to-rerecord-yr-message.gsm
libdata/asterisk/sounds/en/to-rmv-num-blklist.gsm
libdata/asterisk/sounds/en/to-rqst-wakeup-call.gsm
libdata/asterisk/sounds/en/to-send-a-reply.gsm
libdata/asterisk/sounds/en/to-snooze-for.gsm
libdata/asterisk/sounds/en/to-use-def-attendant.gsm
libdata/asterisk/sounds/en/tomorrow-night.gsm
libdata/asterisk/sounds/en/tone_time.gsm
libdata/asterisk/sounds/en/tones-that-follow-are-for-the-deaf.gsm
libdata/asterisk/sounds/en/tonight.gsm
libdata/asterisk/sounds/en/too-low.gsm
libdata/asterisk/sounds/en/tornado.gsm
libdata/asterisk/sounds/en/touchtone1.gsm
libdata/asterisk/sounds/en/touchtone2.gsm
libdata/asterisk/sounds/en/touchtone3.gsm
libdata/asterisk/sounds/en/towards.gsm
libdata/asterisk/sounds/en/trading-desk.gsm
libdata/asterisk/sounds/en/traffic.gsm
libdata/asterisk/sounds/en/training.gsm
libdata/asterisk/sounds/en/transfer.gsm
libdata/asterisk/sounds/en/transfer_to_agent.gsm
libdata/asterisk/sounds/en/transportation.gsm
libdata/asterisk/sounds/en/travel.gsm
libdata/asterisk/sounds/en/treasury.gsm
libdata/asterisk/sounds/en/tt-allbusy.gsm
libdata/asterisk/sounds/en/tt-codezone.gsm
libdata/asterisk/sounds/en/tt-codezone_MIXDOWN.gsm
libdata/asterisk/sounds/en/tt-hangup.gsm
libdata/asterisk/sounds/en/tt-monkeys.gsm
libdata/asterisk/sounds/en/tt-monkeysintro.gsm
libdata/asterisk/sounds/en/tt-monty-knights.gsm
libdata/asterisk/sounds/en/tt-somethingwrong.gsm
libdata/asterisk/sounds/en/tt-weasels.gsm
libdata/asterisk/sounds/en/tucson.gsm
libdata/asterisk/sounds/en/tulsa.gsm
libdata/asterisk/sounds/en/turn-off-recording.gsm
libdata/asterisk/sounds/en/turning-to.gsm
libdata/asterisk/sounds/en/twelveth.gsm
libdata/asterisk/sounds/en/twentieth.gsm
libdata/asterisk/sounds/en/twisty-maze.gsm
libdata/asterisk/sounds/en/tx-has-been-approved.gsm
libdata/asterisk/sounds/en/typhoon.gsm
libdata/asterisk/sounds/en/udp.gsm
libdata/asterisk/sounds/en/uh-oh1.gsm
libdata/asterisk/sounds/en/uh-oh2.gsm
libdata/asterisk/sounds/en/uk.gsm
libdata/asterisk/sounds/en/unavailable.gsm
libdata/asterisk/sounds/en/unconditional.gsm
libdata/asterisk/sounds/en/unicorn_blood.gsm
libdata/asterisk/sounds/en/unicorn_blood_MIXDOWN.gsm
libdata/asterisk/sounds/en/unidentified-no-callback.gsm
libdata/asterisk/sounds/en/units.gsm
libdata/asterisk/sounds/en/unix.gsm
libdata/asterisk/sounds/en/unwelcomecall.gsm
libdata/asterisk/sounds/en/up.gsm
libdata/asterisk/sounds/en/uppercase.gsm
libdata/asterisk/sounds/en/uptime.gsm
libdata/asterisk/sounds/en/user.gsm
libdata/asterisk/sounds/en/users.gsm
libdata/asterisk/sounds/en/utah.gsm
libdata/asterisk/sounds/en/variable.gsm
libdata/asterisk/sounds/en/vermont.gsm
libdata/asterisk/sounds/en/virginia-beach.gsm
libdata/asterisk/sounds/en/virginia.gsm
libdata/asterisk/sounds/en/visibility.gsm
libdata/asterisk/sounds/en/visit-asterisk-website.gsm
libdata/asterisk/sounds/en/vm-Cust1.gsm
libdata/asterisk/sounds/en/vm-Cust2.gsm
libdata/asterisk/sounds/en/vm-Cust3.gsm
libdata/asterisk/sounds/en/vm-Cust4.gsm
libdata/asterisk/sounds/en/vm-Cust5.gsm
libdata/asterisk/sounds/en/vm-Family.gsm
libdata/asterisk/sounds/en/vm-Friends.gsm
libdata/asterisk/sounds/en/vm-INBOX.gsm
libdata/asterisk/sounds/en/vm-Old.gsm
libdata/asterisk/sounds/en/vm-Urgent.gsm
libdata/asterisk/sounds/en/vm-Work.gsm
libdata/asterisk/sounds/en/vm-advopts.gsm
libdata/asterisk/sounds/en/vm-and.gsm
libdata/asterisk/sounds/en/vm-calldiffnum.gsm
libdata/asterisk/sounds/en/vm-changeto.gsm
libdata/asterisk/sounds/en/vm-delete.gsm
libdata/asterisk/sounds/en/vm-deleted.gsm
libdata/asterisk/sounds/en/vm-dialout.gsm
libdata/asterisk/sounds/en/vm-duration.gsm
libdata/asterisk/sounds/en/vm-enter-num-to-call.gsm
libdata/asterisk/sounds/en/vm-extension.gsm
libdata/asterisk/sounds/en/vm-first.gsm
libdata/asterisk/sounds/en/vm-for.gsm
libdata/asterisk/sounds/en/vm-forward-multiple.gsm
libdata/asterisk/sounds/en/vm-forward.gsm
libdata/asterisk/sounds/en/vm-forwardoptions.gsm
libdata/asterisk/sounds/en/vm-from-extension.gsm
libdata/asterisk/sounds/en/vm-from-phonenumber.gsm
libdata/asterisk/sounds/en/vm-from.gsm
libdata/asterisk/sounds/en/vm-goodbye.gsm
libdata/asterisk/sounds/en/vm-helpexit.gsm
libdata/asterisk/sounds/en/vm-incorrect-mailbox.gsm
libdata/asterisk/sounds/en/vm-incorrect.gsm
libdata/asterisk/sounds/en/vm-instructions.gsm
libdata/asterisk/sounds/en/vm-intro.gsm
libdata/asterisk/sounds/en/vm-invalid-password.gsm
libdata/asterisk/sounds/en/vm-invalidpassword.gsm
libdata/asterisk/sounds/en/vm-isonphone.gsm
libdata/asterisk/sounds/en/vm-isunavail.gsm
libdata/asterisk/sounds/en/vm-last.gsm
libdata/asterisk/sounds/en/vm-leavemsg.gsm
libdata/asterisk/sounds/en/vm-login.gsm
libdata/asterisk/sounds/en/vm-mailboxfull.gsm
libdata/asterisk/sounds/en/vm-marked-nonurgent.gsm
libdata/asterisk/sounds/en/vm-marked-urgent.gsm
libdata/asterisk/sounds/en/vm-message.gsm
libdata/asterisk/sounds/en/vm-messages.gsm
libdata/asterisk/sounds/en/vm-minutes.gsm
libdata/asterisk/sounds/en/vm-mismatch.gsm
libdata/asterisk/sounds/en/vm-msgforwarded.gsm
libdata/asterisk/sounds/en/vm-msginstruct.gsm
libdata/asterisk/sounds/en/vm-msgsaved.gsm
libdata/asterisk/sounds/en/vm-newpassword.gsm
libdata/asterisk/sounds/en/vm-newuser.gsm
libdata/asterisk/sounds/en/vm-next.gsm
libdata/asterisk/sounds/en/vm-no.gsm
libdata/asterisk/sounds/en/vm-nobodyavail.gsm
libdata/asterisk/sounds/en/vm-nobox.gsm
libdata/asterisk/sounds/en/vm-nomore.gsm
libdata/asterisk/sounds/en/vm-nonumber.gsm
libdata/asterisk/sounds/en/vm-num-i-have.gsm
libdata/asterisk/sounds/en/vm-onefor-full.gsm
libdata/asterisk/sounds/en/vm-onefor.gsm
libdata/asterisk/sounds/en/vm-options.gsm
libdata/asterisk/sounds/en/vm-opts-full.gsm
libdata/asterisk/sounds/en/vm-opts.gsm
libdata/asterisk/sounds/en/vm-passchanged.gsm
libdata/asterisk/sounds/en/vm-password.gsm
libdata/asterisk/sounds/en/vm-pls-try-again.gsm
libdata/asterisk/sounds/en/vm-press.gsm
libdata/asterisk/sounds/en/vm-prev.gsm
libdata/asterisk/sounds/en/vm-reachoper.gsm
libdata/asterisk/sounds/en/vm-rec-busy.gsm
libdata/asterisk/sounds/en/vm-rec-name.gsm
libdata/asterisk/sounds/en/vm-rec-temp.gsm
libdata/asterisk/sounds/en/vm-rec-unv.gsm
libdata/asterisk/sounds/en/vm-received.gsm
libdata/asterisk/sounds/en/vm-record-prepend.gsm
libdata/asterisk/sounds/en/vm-reenterpassword.gsm
libdata/asterisk/sounds/en/vm-repeat.gsm
libdata/asterisk/sounds/en/vm-review-nonurgent.gsm
libdata/asterisk/sounds/en/vm-review-urgent.gsm
libdata/asterisk/sounds/en/vm-review.gsm
libdata/asterisk/sounds/en/vm-saved.gsm
libdata/asterisk/sounds/en/vm-savedto.gsm
libdata/asterisk/sounds/en/vm-savefolder.gsm
libdata/asterisk/sounds/en/vm-savemessage.gsm
libdata/asterisk/sounds/en/vm-saveoper.gsm
libdata/asterisk/sounds/en/vm-sorry.gsm
libdata/asterisk/sounds/en/vm-star-cancel.gsm
libdata/asterisk/sounds/en/vm-starmain.gsm
libdata/asterisk/sounds/en/vm-tempgreetactive.gsm
libdata/asterisk/sounds/en/vm-tempgreeting.gsm
libdata/asterisk/sounds/en/vm-tempgreeting2.gsm
libdata/asterisk/sounds/en/vm-tempremoved.gsm
libdata/asterisk/sounds/en/vm-then-pound.gsm
libdata/asterisk/sounds/en/vm-theperson.gsm
libdata/asterisk/sounds/en/vm-tmpexists.gsm
libdata/asterisk/sounds/en/vm-tocallback.gsm
libdata/asterisk/sounds/en/vm-tocallnum.gsm
libdata/asterisk/sounds/en/vm-tocancel.gsm
libdata/asterisk/sounds/en/vm-tocancelmsg.gsm
libdata/asterisk/sounds/en/vm-toenternumber.gsm
libdata/asterisk/sounds/en/vm-toforward.gsm
libdata/asterisk/sounds/en/vm-tohearenv.gsm
libdata/asterisk/sounds/en/vm-tomakecall.gsm
libdata/asterisk/sounds/en/vm-tooshort.gsm
libdata/asterisk/sounds/en/vm-toreply.gsm
libdata/asterisk/sounds/en/vm-torerecord.gsm
libdata/asterisk/sounds/en/vm-undelete.gsm
libdata/asterisk/sounds/en/vm-undeleted.gsm
libdata/asterisk/sounds/en/vm-unknown-caller.gsm
libdata/asterisk/sounds/en/vm-whichbox.gsm
libdata/asterisk/sounds/en/vm-youhave.gsm
libdata/asterisk/sounds/en/voice-mail-system.gsm
libdata/asterisk/sounds/en/wait-moment.gsm
libdata/asterisk/sounds/en/wait-offensive-sounds.gsm
libdata/asterisk/sounds/en/wakeup-call-cancelled.gsm
libdata/asterisk/sounds/en/wakeup-call.gsm
libdata/asterisk/sounds/en/wakeup-daily.gsm
libdata/asterisk/sounds/en/wakeup-for-daily.gsm
libdata/asterisk/sounds/en/wakeup-for-one-time.gsm
libdata/asterisk/sounds/en/wakeup-onetime.gsm
libdata/asterisk/sounds/en/walks-into-bar-mail.gsm
libdata/asterisk/sounds/en/warning.gsm
libdata/asterisk/sounds/en/was-last-seen.gsm
libdata/asterisk/sounds/en/was.gsm
libdata/asterisk/sounds/en/washington-dc.gsm
libdata/asterisk/sounds/en/washington.gsm
libdata/asterisk/sounds/en/watch.gsm
libdata/asterisk/sounds/en/watson.gsm
libdata/asterisk/sounds/en/we-apologize.gsm
libdata/asterisk/sounds/en/we-dont-have-tech-support.gsm
libdata/asterisk/sounds/en/weasels-eaten-phonesys.gsm
libdata/asterisk/sounds/en/weather-station.gsm
libdata/asterisk/sounds/en/weather.gsm
libdata/asterisk/sounds/en/web.gsm
libdata/asterisk/sounds/en/weeks.gsm
libdata/asterisk/sounds/en/welcome.gsm
libdata/asterisk/sounds/en/were-sorry.gsm
libdata/asterisk/sounds/en/west-virginia.gsm
libdata/asterisk/sounds/en/west.gsm
libdata/asterisk/sounds/en/westerly.gsm
libdata/asterisk/sounds/en/what-are-you-wearing.gsm
libdata/asterisk/sounds/en/what-time-it-is.gsm
libdata/asterisk/sounds/en/what-time-it-is2.gsm
libdata/asterisk/sounds/en/when-dialing-this-number.gsm
libdata/asterisk/sounds/en/who-would-you-like-to-call.gsm
libdata/asterisk/sounds/en/whoareyou.gsm
libdata/asterisk/sounds/en/why-no-answer-mystery.gsm
libdata/asterisk/sounds/en/wichita.gsm
libdata/asterisk/sounds/en/will-apply.gsm
libdata/asterisk/sounds/en/will-expire.gsm
libdata/asterisk/sounds/en/will-not-expire.gsm
libdata/asterisk/sounds/en/will-reflect-charge-of.gsm
libdata/asterisk/sounds/en/wind.gsm
libdata/asterisk/sounds/en/windows.gsm
libdata/asterisk/sounds/en/windy.gsm
libdata/asterisk/sounds/en/wisconsin.gsm
libdata/asterisk/sounds/en/wish-to-continue.gsm
libdata/asterisk/sounds/en/wish_command_totally.gsm
libdata/asterisk/sounds/en/with.gsm
libdata/asterisk/sounds/en/within.gsm
libdata/asterisk/sounds/en/woo_hoo_call_first.gsm
libdata/asterisk/sounds/en/work.gsm
libdata/asterisk/sounds/en/wrong-try-again-smarty.gsm
libdata/asterisk/sounds/en/wtng-to-spk-w-rep.gsm
libdata/asterisk/sounds/en/www-switchboard-com.gsm
libdata/asterisk/sounds/en/wx/around.gsm
libdata/asterisk/sounds/en/wx/barometer.gsm
libdata/asterisk/sounds/en/wx/ceiling.gsm
libdata/asterisk/sounds/en/wx/dew-point.gsm
libdata/asterisk/sounds/en/wx/falling.gsm
libdata/asterisk/sounds/en/wx/feet.gsm
libdata/asterisk/sounds/en/wx/foot.gsm
libdata/asterisk/sounds/en/wx/gust.gsm
libdata/asterisk/sounds/en/wx/gusting-to.gsm
libdata/asterisk/sounds/en/wx/gusts.gsm
libdata/asterisk/sounds/en/wx/gusty.gsm
libdata/asterisk/sounds/en/wx/heat-index.gsm
libdata/asterisk/sounds/en/wx/humidity.gsm
libdata/asterisk/sounds/en/wx/inch.gsm
libdata/asterisk/sounds/en/wx/inches.gsm
libdata/asterisk/sounds/en/wx/kilometer.gsm
libdata/asterisk/sounds/en/wx/large.gsm
libdata/asterisk/sounds/en/wx/meter.gsm
libdata/asterisk/sounds/en/wx/mist.gsm
libdata/asterisk/sounds/en/wx/northeast.gsm
libdata/asterisk/sounds/en/wx/northwest.gsm
libdata/asterisk/sounds/en/wx/percent.gsm
libdata/asterisk/sounds/en/wx/point.gsm
libdata/asterisk/sounds/en/wx/rising.gsm
libdata/asterisk/sounds/en/wx/southeast.gsm
libdata/asterisk/sounds/en/wx/southwest.gsm
libdata/asterisk/sounds/en/wx/steady.gsm
libdata/asterisk/sounds/en/wx/temperature.gsm
libdata/asterisk/sounds/en/wx/wind-chill.gsm
libdata/asterisk/sounds/en/wx/winds.gsm
libdata/asterisk/sounds/en/wyoming.gsm
libdata/asterisk/sounds/en/yeah.gsm
libdata/asterisk/sounds/en/year.gsm
libdata/asterisk/sounds/en/years.gsm
libdata/asterisk/sounds/en/yes-dear.gsm
libdata/asterisk/sounds/en/yes-dear2.gsm
libdata/asterisk/sounds/en/you-are-caller-num.gsm
libdata/asterisk/sounds/en/you-are-curr-call-num.gsm
libdata/asterisk/sounds/en/you-can-press.gsm
libdata/asterisk/sounds/en/you-dialed-wrong-number.gsm
libdata/asterisk/sounds/en/you-entered.gsm
libdata/asterisk/sounds/en/you-have-dialed.gsm
libdata/asterisk/sounds/en/you-have-reached-a-test-number.gsm
libdata/asterisk/sounds/en/you-have-these-options.gsm
libdata/asterisk/sounds/en/you-must-first-dial.gsm
libdata/asterisk/sounds/en/you-seem-impatient.gsm
libdata/asterisk/sounds/en/you-sound-cute.gsm
libdata/asterisk/sounds/en/you-wish-to-join.gsm
libdata/asterisk/sounds/en/you_say_yes.gsm
libdata/asterisk/sounds/en/your-account.gsm
libdata/asterisk/sounds/en/your-msg-has-been-saved.gsm
libdata/asterisk/sounds/en/your-msg-is-too-short.gsm
libdata/asterisk/sounds/en/your-notifications.gsm
libdata/asterisk/sounds/en/your-req-notification.gsm
libdata/asterisk/sounds/en/your-temp-greeting.gsm
libdata/asterisk/sounds/en/your.gsm
libdata/asterisk/sounds/en/yourcallisimportant.gsm
libdata/asterisk/sounds/en/yourcallisimpotent.gsm
libdata/asterisk/sounds/en/zip-code.gsm
libdata/asterisk/sounds/en/zombies.gsm
libdata/asterisk/static-http/ajamdemo.html
libdata/asterisk/static-http/appdocsxml.xslt
libdata/asterisk/static-http/astman.css
libdata/asterisk/static-http/astman.js
libdata/asterisk/static-http/core-en_US.xml
libdata/asterisk/static-http/mantest.html
libdata/asterisk/static-http/prototype.js
libexec/agi-bin/agi-test.agi
libexec/agi-bin/eagi-sphinx-test
libexec/agi-bin/eagi-test
libexec/agi-bin/jukebox.agi
${PLIST.webvmail}libexec/cgi-bin/vmail
man/man8/astdb2bdb.8
man/man8/astdb2sqlite3.8
man/man8/asterisk.8
man/man8/astgenkey.8
man/man8/autosupport.8
man/man8/safe_asterisk.8
sbin/astcanary
sbin/astdb2bdb
sbin/astdb2sqlite3
sbin/asterisk
sbin/astgenkey
sbin/astversion
sbin/autosupport
sbin/rasterisk
sbin/safe_asterisk
share/doc/asterisk/BUGS
share/doc/asterisk/CHANGES
share/doc/asterisk/COPYING
share/doc/asterisk/CREDITS
share/doc/asterisk/ChangeLog-21.0.0.md
share/doc/asterisk/ChangeLog-21.0.1.md
share/doc/asterisk/ChangeLog-21.0.2.md
share/doc/asterisk/ChangeLog-21.1.0.md
share/doc/asterisk/ChangeLog-${PKGVERSION}.md
share/doc/asterisk/IAX2-security.pdf
share/doc/asterisk/IAX2-security.txt
share/doc/asterisk/LICENSE
share/doc/asterisk/README-SERIOUSLY.bestpractices.md
share/doc/asterisk/README.md
share/doc/asterisk/README.txt
share/doc/asterisk/SECURITY.md
share/doc/asterisk/Zaptel-to-DAHDI.txt
share/examples/asterisk/acl.conf
share/examples/asterisk/adsi.conf
share/examples/asterisk/aeap.conf
share/examples/asterisk/agents.conf
share/examples/asterisk/alarmreceiver.conf
share/examples/asterisk/amd.conf
share/examples/asterisk/app_skel.conf
share/examples/asterisk/ari.conf
share/examples/asterisk/ast_debug_tools.conf
share/examples/asterisk/asterisk.adsi
share/examples/asterisk/asterisk.conf
share/examples/asterisk/calendar.conf
share/examples/asterisk/ccss.conf
share/examples/asterisk/cdr.conf
share/examples/asterisk/cdr_adaptive_odbc.conf
share/examples/asterisk/cdr_beanstalkd.conf
share/examples/asterisk/cdr_custom.conf
share/examples/asterisk/cdr_manager.conf
share/examples/asterisk/cdr_odbc.conf
share/examples/asterisk/cdr_pgsql.conf
share/examples/asterisk/cdr_sqlite3_custom.conf
share/examples/asterisk/cdr_tds.conf
share/examples/asterisk/cel.conf
share/examples/asterisk/cel_beanstalkd.conf
share/examples/asterisk/cel_custom.conf
share/examples/asterisk/cel_odbc.conf
share/examples/asterisk/cel_pgsql.conf
share/examples/asterisk/cel_sqlite3_custom.conf
share/examples/asterisk/cel_tds.conf
share/examples/asterisk/chan_dahdi.conf
share/examples/asterisk/chan_mobile.conf
share/examples/asterisk/cli.conf
share/examples/asterisk/cli_aliases.conf
share/examples/asterisk/cli_permissions.conf
share/examples/asterisk/codecs.conf
share/examples/asterisk/confbridge.conf
share/examples/asterisk/config_test.conf
share/examples/asterisk/console.conf
share/examples/asterisk/dbsep.conf
share/examples/asterisk/dnsmgr.conf
share/examples/asterisk/dsp.conf
share/examples/asterisk/dundi.conf
share/examples/asterisk/enum.conf
share/examples/asterisk/extconfig.conf
share/examples/asterisk/extensions.ael
share/examples/asterisk/extensions.conf
share/examples/asterisk/extensions.lua
share/examples/asterisk/extensions_minivm.conf
share/examples/asterisk/features.conf
share/examples/asterisk/festival.conf
share/examples/asterisk/followme.conf
share/examples/asterisk/func_odbc.conf
share/examples/asterisk/geolocation.conf
share/examples/asterisk/hep.conf
share/examples/asterisk/http.conf
share/examples/asterisk/iax.conf
share/examples/asterisk/iaxprov.conf
share/examples/asterisk/indications.conf
share/examples/asterisk/logger.conf
share/examples/asterisk/manager.conf
share/examples/asterisk/meetme.conf
share/examples/asterisk/minivm.conf
share/examples/asterisk/modules.conf
share/examples/asterisk/motif.conf
share/examples/asterisk/musiconhold.conf
share/examples/asterisk/ooh323.conf
share/examples/asterisk/phoneprov.conf
share/examples/asterisk/pjproject.conf
share/examples/asterisk/pjsip.conf
share/examples/asterisk/pjsip_notify.conf
share/examples/asterisk/pjsip_wizard.conf
share/examples/asterisk/prometheus.conf
share/examples/asterisk/queuerules.conf
share/examples/asterisk/queues.conf
share/examples/asterisk/res_config_mysql.conf
share/examples/asterisk/res_config_odbc.conf
share/examples/asterisk/res_config_sqlite3.conf
share/examples/asterisk/res_corosync.conf
share/examples/asterisk/res_curl.conf
share/examples/asterisk/res_fax.conf
share/examples/asterisk/res_http_media_cache.conf
share/examples/asterisk/res_ldap.conf
share/examples/asterisk/res_odbc.conf
share/examples/asterisk/res_parking.conf
share/examples/asterisk/res_pgsql.conf
share/examples/asterisk/res_snmp.conf
share/examples/asterisk/res_stun_monitor.conf
share/examples/asterisk/resolver_unbound.conf
share/examples/asterisk/rtp.conf
share/examples/asterisk/say.conf
share/examples/asterisk/sla.conf
share/examples/asterisk/smdi.conf
share/examples/asterisk/sorcery.conf
share/examples/asterisk/ss7.timers
share/examples/asterisk/stasis.conf
share/examples/asterisk/statsd.conf
share/examples/asterisk/stir_shaken.conf
share/examples/asterisk/telcordia-1.adsi
share/examples/asterisk/test_sorcery.conf
share/examples/asterisk/udptl.conf
share/examples/asterisk/unistim.conf
share/examples/asterisk/users.conf
share/examples/asterisk/voicemail.conf
share/examples/asterisk/xmpp.conf
${PLIST.webvmail}share/httpd/htdocs/_asterisk/animlogo.gif
${PLIST.webvmail}share/httpd/htdocs/_asterisk/play.gif
@pkgdir libdata/asterisk/third-party/pjproject
@pkgdir libdata/asterisk/keys/stir_shaken
@pkgdir libdata/asterisk/keys/stir_shaken/cache
@pkgdir libdata/asterisk/firmware/iax
@pkgdir libdata/asterisk/documentation/thirdparty

File Added: pkgsrc/comms/asterisk21/distinfo
$NetBSD: distinfo,v 1.1 2024/04/08 03:20:06 jnemeth Exp $

BLAKE2s (asterisk-21.2.0/asterisk-21.2.0.tar.gz) = f96a9cdf12c25b04b55ffa1250be62358b57e1b12e96dc3c37738b2adf23590b
SHA512 (asterisk-21.2.0/asterisk-21.2.0.tar.gz) = f6ede5da3a9f3fefa30aac2a55e3a06c9fb185f1a484cfc9b7e014ebcdf222e60cdb024b6b3f7daa1ce7a3f61c2a24c0135849ea669f086c6e86da08928536de
Size (asterisk-21.2.0/asterisk-21.2.0.tar.gz) = 26312154 bytes
BLAKE2s (asterisk-21.2.0/asterisk-extra-sounds-en-gsm-1.5.2.tar.gz) = 3f7e5fe212d7e7cdca14c52527a2552311ab7762c3f1464b09ddedc7c66aebde
SHA512 (asterisk-21.2.0/asterisk-extra-sounds-en-gsm-1.5.2.tar.gz) = 3f2f7bf3d5bce3544bc013f913c352f0204a3ce96239987403eb9dce8bc87e64a61d437762323a422a87b2fad1f3bf3e7a5f3d0d340f912a1b1dbfea9479d41d
Size (asterisk-21.2.0/asterisk-extra-sounds-en-gsm-1.5.2.tar.gz) = 4253587 bytes
BLAKE2s (asterisk-21.2.0/pjproject-2.14.md5) = 8cbd12b39e930e684607202c7cff8036d1fa10c0070f8d5b50c1850095b8b28d
SHA512 (asterisk-21.2.0/pjproject-2.14.md5) = ea4c33f75a0cc4afcd7a1f7fd2a53423a182ef16a7abfe2189bce0ef0e6b956c6eb4f89aeabee714dfed0616bfd8f4aa98602b1faeda1671e00ff21a150283d2
Size (asterisk-21.2.0/pjproject-2.14.md5) = 166 bytes
BLAKE2s (asterisk-21.2.0/pjproject-2.14.tar.bz2) = 1e76da2fa893451c66f41e5c3dd2a7594494c0852947ef2146d6b642550604d0
SHA512 (asterisk-21.2.0/pjproject-2.14.tar.bz2) = 5b60a1033c9f09c0fbb5b132229fa99fdc103f8864a7cdeadf217ec47ff6bc784827826f595c4bc76816bc0fbf5cc6e9751cc4f6307eeecb7c7d8f5d0413d4ac
Size (asterisk-21.2.0/pjproject-2.14.tar.bz2) = 8376462 bytes
SHA1 (patch-Makefile) = 5cf3b6937ec23a82e4d056b91e493a36bc1089b9
SHA1 (patch-addons_chan__ooh323.c) = 1775da7ca2129a962ed460bd1e78ba3ce6afa62c
SHA1 (patch-apps_app__adsiprog.c) = 031139e5cd1ef6bb2afb0a74fee3d752eded0a2c
SHA1 (patch-apps_app__chanspy.c) = 29a807909645c1ad0c8f81b6513a284b978e7c47
SHA1 (patch-apps_app__directory.c) = 889a78123033709d28b0b805f2a379242ccd7dcc
SHA1 (patch-apps_app__dumpchan.c) = 127ac02bdc180ad2334cd095aa6e646feb6fba10
SHA1 (patch-apps_app__followme.c) = c6a5790b5e9b34d07dbfdd66a58e2854c8c72695
SHA1 (patch-apps_app__minivm.c) = 22ee6ebfbe205baf0acf46ab16c94fea1750f2fb
SHA1 (patch-apps_app__queue.c) = fdf7cf202b60e24cd9227f7e461bbd541565d602
SHA1 (patch-apps_app__sms.c) = ad65b3cb2a30489551101f7534c691cd1155d18f
SHA1 (patch-apps_app__voicemail.c) = bee10453a86039a99db9df644585800f347aaace
SHA1 (patch-build__tools_make__xml__documentation) = b909cac9a847e8d0a0c30d9ee97d6d8de5f43a12
SHA1 (patch-build__tools_mkpkgconfig) = 7fab8fcf46d9f8a3b98455674fec6307ec472b23
SHA1 (patch-cdr_cdr__pgsql.c) = 82b002a1f5ed3b7361a98e2bffb5cea8833949b8
SHA1 (patch-cel_cel__pgsql.c) = b280efab2b035ce60be268bac9bc8824910b2b8f
SHA1 (patch-channels_chan__pjsip.c) = efd4cbb82133fc5ddf7de70d01c99e185c585211
SHA1 (patch-channels_pjsip_cli__commands.c) = 01baa9d242e3af02a1f3540cfb3064ad68c71d67
SHA1 (patch-channels_pjsip_dialplan__functions.c) = 2cf8199c4ec9d4894eb922c2703d49ecc06188ef
SHA1 (patch-configure) = 7bb72c26abe5c362bf8e415821534b83f6241473
SHA1 (patch-configure.ac) = b972730a2be3bf54502116f1f7e03afee76a02cc
SHA1 (patch-contrib_scripts_vmail.cgi) = 7935ce96ea319eb19cc2ce999813eb837d5357c0
SHA1 (patch-funcs_func__cdr.c) = 79c743df264948e5ea9e1c292012a1f6362d0c1e
SHA1 (patch-funcs_func__channel.c) = 9d6ed8a2431fbde6879782d8228030467aabe7eb
SHA1 (patch-funcs_func__env.c) = 9305d4dde2509f689e676295d3eb06bf5a74b3cb
SHA1 (patch-funcs_func__pjsip__aor.c) = 9874f8d66a8afd26ae1669aa727cb5fa2a788334
SHA1 (patch-funcs_func__pjsip__contact.c) = 9b1fa54ee31a549be40d487c650cc79d625c8092
SHA1 (patch-funcs_func__pjsip__endpoint.c) = 263a4bdb6365bcc9f6392d25a5aef5c607e59d04
SHA1 (patch-funcs_func__strings.c) = 08d313add57c5be822a19311fc70a7555bd63877
SHA1 (patch-include_asterisk_autoconfig.h.in) = 23807b08b94f5cf9c2de76c2928f7ae38997d006
SHA1 (patch-include_asterisk_lock.h) = 85418bcd20f3ed7eb0310f46f3b2d334980bdcef
SHA1 (patch-include_asterisk_strings.h) = 9ace78a13131bcb411eda79a98264b5cfcc7789c
SHA1 (patch-main_Makefile) = e3b5d261fd15ffd23d81060ff3aafba6b0300e7c
SHA1 (patch-main_acl.c) = 06a9d247b19d648e9ff54ac2a234dc8ac8c023bb
SHA1 (patch-main_app.c) = 1c12bb207dcb0060017d63ba4f11fcf63d60a45e
SHA1 (patch-main_ast__expr2.c) = bad644eb956645e889344810ec315afd430853be
SHA1 (patch-main_ast__expr2.y) = 56ac74b5a3ae47bd5bec798e549ec43bd085e0e8
SHA1 (patch-main_asterisk.c) = 1262d792f330fe8a1bb1d1f7ba51bc502d65be42
SHA1 (patch-main_astmm.c) = 26a98d6fbb567ae619041ebd01a31349a847deab
SHA1 (patch-main_bridge__basic.c) = b48627e563e20544017fdfcfb4559e868badf41d
SHA1 (patch-main_bridge__channel.c) = 72dafc04521fa02e8456c09d5c9be4789d8ac918
SHA1 (patch-main_callerid.c) = 0ea1b3df8aaf3969fcd9e06055c8e6184d50d3d3
SHA1 (patch-main_cdr.c) = 540fbdb354aba100fa37392b879b92a85d1d8620
SHA1 (patch-main_cel.c) = 22fa21db8e0afa0958d34014f52e2c4fe9c73ba2
SHA1 (patch-main_cli.c) = ee72bcaac7dce397354cbc09af4ed7441dbb4650
SHA1 (patch-main_config.c) = 0647c59c4be846e7a9f6d523fbc93c54dc45b664
SHA1 (patch-main_conversions.c) = a516ef4f706fabbd250f66a3159825a2a6085344
SHA1 (patch-main_dns__naptr.c) = 4fa3fe5d2acf7bcd84ca2044280c644e4bd15d7f
SHA1 (patch-main_enum.c) = c5f620297cf98f95ce74aa0d98eddc697946a77b
SHA1 (patch-main_features.c) = 6e50ea4c6ee26f56edca22611aeed44787459968
SHA1 (patch-main_http.c) = b36f1f3f0da25456a17888d34ea2bf7b61c1acf4
SHA1 (patch-main_indications.c) = 511b4c270e4a4a71517109f959121777caf2aa36
SHA1 (patch-main_logger.c) = 321a52b3015af85ea13055953cec5a5d9da05ec8
SHA1 (patch-main_manager.c) = 2f88c51f4ca62985a1824efd60a39542925adf95
SHA1 (patch-main_pbx.c) = 8e7ced268edb29238f96418e8b21456364c4ae1f
SHA1 (patch-main_pbx__builtins.c) = 3e5ede8a62821fda498f2bea94af386aca01798c
SHA1 (patch-main_pbx__timing.c) = a4657330086c5b0e8fd271d5676fb897badea452
SHA1 (patch-main_sched.c) = 4219ac1561e8c4fbc5b1facdf38b3e8b764d5def
SHA1 (patch-main_stdtime_localtime.c) = 1e3c62d70eab62c46ac29e03e842229cf7587d2b
SHA1 (patch-main_taskprocessor.c) = f90805bd78fd4096beb9ee1cf9c794c50b87481a
SHA1 (patch-main_tdd.c) = 9f525971938dd4f222622cb3e78a35822bd08389
SHA1 (patch-main_test.c) = f38b370cdb5788304e02c71ef05d2130ead9de98
SHA1 (patch-main_utils.c) = ab6fb7619111f4906ff3797e6d918dd0c8f9f7e2
SHA1 (patch-menuselect_menuselect.c) = 8bae3a2c6b8c6e7927b35bd83147a55e380efd7f
SHA1 (patch-pbx_pbx__config.c) = cc5e6d2b383f86abfb354c9bf14fc93374fba0a3
SHA1 (patch-pbx_pbx__dundi.c) = 1bc28ff2412da569f139f245c5223845a2f6cebe
SHA1 (patch-res_ael_pval.c) = 8a238c78403d3098bf8be8ae266162bc05e586f3
SHA1 (patch-res_res__calendar.c) = 45211a3baf8fbd8b201ba0167f8c56fb35728c4a
SHA1 (patch-res_res__format__attr__celt.c) = 81d5300b9a2b33e733e30760e2c9858c87b3e554
SHA1 (patch-res_res__format__attr__h263.c) = 4438d544ee028404e407d5ee3229c8f3536135f5
SHA1 (patch-res_res__format__attr__ilbc.c) = f7ff1692eae46b7950665f58317f6e39607dcc01
SHA1 (patch-res_res__format__attr__opus.c) = ba1012f111a7a996f85bbc09fec81569d2179888
SHA1 (patch-res_res__format__attr__silk.c) = d94370f9b09c917f4d68ebfbcc995c1bef1ed675
SHA1 (patch-res_res__format__attr__siren14.c) = 41e997886ca9f554e46f3af36e07e3aea984dd47
SHA1 (patch-res_res__format__attr__siren7.c) = e20e288781d0530049d127731edb8d309049077d
SHA1 (patch-res_res__format__attr__vp8.c) = 6257e281c0a29dfd3ef2613bfa5be172d399d2e0
SHA1 (patch-res_res__hep__pjsip.c) = b0c8fed52451ec31a2c77d4abd28640631bb708c
SHA1 (patch-res_res__limit.c) = e80f370fe5b84dcdc2f38e2137d5ed6f75ba35a4
SHA1 (patch-res_res__musiconhold.c) = 401999cefa3805f63df33424c635ad18a7d00748
SHA1 (patch-res_res__pjproject.c) = 0326bf12d9f798c8eae2eff4fad8b86d4bbc0589
SHA1 (patch-res_res__pjsip__diversion.c) = b7996a43b4af395392161f75319ab499ceda7f09
SHA1 (patch-res_res__pjsip_pjsip__configuration.c) = 7a9f2c293ad5c8d05df5cc9b304473859ee09d6f
SHA1 (patch-res_res__xmpp.c) = 390376180d1fb11a41c16f59dd44f506006a8e5d
SHA1 (patch-sounds_Makefile) = acc15088ae2545f2822246466bfe783b5215fc54
SHA1 (patch-tests_test__locale.c) = f3f1edc86356f2a7b4d3493433c772e164c77f66
SHA1 (patch-tests_test__voicemail__api.c) = c600f726136581e47cf34da2c0bb485b8a5912eb
SHA1 (patch-third-party_pjproject_patches_0100-netbsd.patch) = fa82ca5f7340d97f9d6729734b4e698dfd26ed61
SHA1 (patch-third-party_pjproject_patches_0110-netbsd.patch) = 52e84093814dba144f89a2f9f953465f877f1506
SHA1 (patch-third-party_pjproject_patches_0120-netbsd.patch) = 1f6e9d9a1fb12dcf8efeff945a78cb3583f74598
SHA1 (patch-third-party_pjproject_patches_0130-netbsd.patch) = a1ec694ba0e2ebe1e434dc77b45ad441e730998a
SHA1 (patch-third-party_pjproject_patches_0140-netbsd.patch) = 0c18adc61339c74dfc3702b5f4428a99cb370252
SHA1 (patch-third-party_pjproject_patches_0150-netbsd.patch) = 97c6a868df8359aa27ef009863c845731a5c03a2
SHA1 (patch-third-party_pjproject_patches_0160-netbsd.patch) = d3b2aa29f368ae53951615030fb5648a12fb3426
SHA1 (patch-utils_Makefile) = 30e22c5d5d740c5531d657f91f7b51fa477d8a74
SHA1 (patch-utils_db1-ast_include_db.h) = 03b43353b7967f999ace3eb160828c530e2e8fae
SHA1 (patch-utils_extconf.c) = f35d079c4801fe20132ff52d63d951d9e1658902
SHA1 (patch-utils_smsq.c) = 5c4cd729f1c9cb68291c514a2e54418e9b5a47cb

File Added: pkgsrc/comms/asterisk21/options.mk
# $NetBSD: options.mk,v 1.1 2024/04/08 03:20:06 jnemeth Exp $

PKG_OPTIONS_VAR=		PKG_OPTIONS.asterisk
PKG_SUPPORTED_OPTIONS=		unixodbc ilbc webvmail ldap spandsp
PKG_SUPPORTED_OPTIONS+=		jabber speex snmp pgsql asterisk-config
PKG_SUGGESTED_OPTIONS=		ldap jabber speex asterisk-config

.include "../../mk/bsd.options.mk"

PLIST_VARS+=		zaptel unixodbc webvmail ldap spandsp jabber
PLIST_VARS+=		speex snmp pgsql srtp

# Asterisk now uses DAHDI, not zaptel; not implemented yet...
#.if !empty(PKG_OPTIONS:Mzaptel)
## zaptel only supported under NetBSD at the moment
#.  include "../../comms/zaptel-netbsd/buildlink3.mk"
#PLIST.zaptel=		yes
#.else
#MAKE_FLAGS+=		WITHOUT_ZAPTEL=1
#.endif

.if !empty(PKG_OPTIONS:Munixodbc)
.  include "../../databases/unixodbc/buildlink3.mk"
.  include "../../devel/libltdl/buildlink3.mk"
CONFIGURE_ARGS+=	--with-unixodbc
PLIST.unixodbc=		yes
.else
CONFIGURE_ARGS+=	--without-unixodbc
.endif

.if !empty(PKG_OPTIONS:Mspandsp)
.  include "../../comms/spandsp/buildlink3.mk"
CONFIGURE_ARGS+=	--with-spandsp
PLIST.spandsp=		yes
.else
CONFIGURE_ARGS+=	--without-spandsp
.endif

.if !empty(PKG_OPTIONS:Mjabber)
.  include "../../textproc/iksemel/buildlink3.mk"
CONFIGURE_ARGS+=	--with-iksemel=${PREFIX}
PLIST.jabber=		yes
.else
CONFIGURE_ARGS+=	--without-iksemel
.endif

MAKE_FLAGS+=	GLOBAL_MAKEOPTS=${WRKSRC}/pkgsrc.makeopts
post-configure:
#	${ECHO} "MENUSELECT_RES=res_mwi_external" >> ${WRKSRC}/pkgsrc.makeopts
.if !empty(PKG_OPTIONS:Munixodbc)
	${ECHO} "MENUSELECT_APPS=app_voicemail_odbc" >> ${WRKSRC}/pkgsrc.makeopts
.endif
	${ECHO} "MENUSELECT_AGIS=agi-test.agi eagi-test eagi-sphinx-test jukebox.agi" >> ${WRKSRC}/pkgsrc.makeopts
	${ECHO} "MENUSELECT_CFLAGS=-BUILD_NATIVE" >> ${WRKSRC}/pkgsrc.makeopts
	# this is a hack to work around a bug in menuselect
	cd ${WRKSRC} && make menuselect.makeopts

.if !empty(PKG_OPTIONS:Mwebvmail)
DEPENDS+=		p5-DBI-[0-9]*:../../databases/p5-DBI
SUBST_CLASSES+=		webvmail
SUBST_STAGE.webvmail=	pre-configure
SUBST_FILES.webvmail=	contrib/scripts/vmail.cgi
SUBST_VARS.webvmail=	ASTETCDIR
SUBST_VARS.webvmail+=	ASTSPOOLDIR
INSTALLATION_DIRS+=	${PREFIX}/libexec/cgi-bin ${PREFIX}/share/httpd/htdocs
SPECIAL_PERMS+=		${PREFIX}/libexec/cgi-bin/vmail ${ASTERISK_USER} ${ASTERISK_GROUP} 04555
INSTALL_TARGET+=	webvmail
PLIST.webvmail=		yes
.endif

.if !empty(PKG_OPTIONS:Mldap)
.include "../../databases/openldap-client/buildlink3.mk"
PLIST.ldap=		yes
.else
CONFIGURE_ARGS+=	--without-ldap
.endif

.if !empty(PKG_OPTIONS:Mspeex)
.include "../../audio/speex/buildlink3.mk"
.include "../../audio/speexdsp/buildlink3.mk"
CONFIGURE_ARGS+=	--with-speex
CONFIGURE_ARGS+=	--with-speexdsp
PLIST.speex=		yes
.else
CONFIGURE_ARGS+=	--without-speex
CONFIGURE_ARGS+=	--without-speexdsp
.endif

.if !empty(PKG_OPTIONS:Msnmp)
.include "../../net/net-snmp/buildlink3.mk"
CONFIGURE_ARGS+=	--with-netsnmp
PLIST.snmp=		yes
.else
CONFIGURE_ARGS+=	--without-netsnmp
.endif

.if !empty(PKG_OPTIONS:Mpgsql)
.include "../../mk/pgsql.buildlink3.mk"
CONFIGURE_ARGS+=	--with-postgres
PLIST.pgsql=		yes
.else
CONFIGURE_ARGS+=	--without-postgres
.endif

File Added: pkgsrc/comms/asterisk21/files/asterisk.sh
#!@RCD_SCRIPTS_SHELL@
#
# $NetBSD: asterisk.sh,v 1.1 2024/04/08 03:20:06 jnemeth Exp $
#
# PROVIDE: asterisk
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# You will need to set some variables in /etc/rc.conf to start Asterisk:
#
# asterisk=YES

if [ -f /etc/rc.subr ]
then
	. /etc/rc.subr
fi

name="asterisk"
rcvar=$name
command="@PREFIX@/sbin/asterisk"
pidfile=@ASTVARRUNDIR@/${name}.pid
required_files="@PKG_SYSCONFDIR@/asterisk.conf"
extra_commands="reload"
start_precmd=asterisk_prestart

auser="@ASTERISK_USER@"
agroup="@ASTERISK_GROUP@"
command_args="-U $auser -G $agroup -n"

asterisk_prestart() {
	if test ! -d @ASTVARRUNDIR@; then
		mkdir @ASTVARRUNDIR@
	fi
	chown $auser:$agroup @ASTVARRUNDIR@
	chmod 0755 @ASTVARRUNDIR@
}

stop_cmd="$command -nr -x 'core stop gracefully' >/dev/null"
reload_cmd="$command -nr -x 'core reload' >/dev/null"
asterisk_nice="-20"

load_rc_config $name
run_rc_command "$1"

File Added: pkgsrc/comms/asterisk21/files/smf/manifest.xml
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type="manifest" name="export">
  <service name="@SMF_PREFIX@/@SMF_NAME@" type="service" version="1">
    <create_default_instance enabled="false" />
    <single_instance />
    <dependency name='network' grouping='require_all' restart_on='error' type='service'>
      <service_fmri value='svc:/milestone/network:default' />
    </dependency>
    <dependency name='filesystem-local' grouping='require_all' restart_on='none' type='service'>
      <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>
    <method_context>
      <method_environment>
        <envvar name="LD_PRELOAD_32" value="/usr/lib/extendedFILE.so.1" />
      </method_environment>
    </method_context>
    <exec_method type="method" name="start" exec="@PREFIX@/sbin/asterisk" timeout_seconds="60" />
    <exec_method type="method" name="stop" exec="@PREFIX@/sbin/asterisk -nr -x 'core stop gracefully' >/dev/null" timeout_seconds="60" />
    <exec_method type="method" name="refresh" exec="@PREFIX@/sbin/asterisk -nr -x 'core reload' >/dev/null" timeout_seconds="60" />
    <property_group name="startd" type="framework">
      <propval name="duration" type="astring" value="contract" />
      <propval name="ignore_error" type="astring" value="core,signal" />
    </property_group>
    <property_group name="application" type="application">
      <propval name="config_file" type="astring" value="@PKG_SYSCONFDIR@/asterisk.conf" />
    </property_group>
    <template>
      <common_name>
        <loctext xml:lang="C">Asterisk PBX</loctext>
      </common_name>
    </template>
  </service>
</service_bundle>

File Added: pkgsrc/comms/asterisk21/patches/patch-Makefile
$NetBSD: patch-Makefile,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- Makefile.orig	2021-11-02 08:53:05.000000000 +0000
+++ Makefile
@@ -143,7 +143,7 @@ DEBUG=-g3
 
 # Asterisk.conf is located in ASTETCDIR or by using the -C flag
 # when starting Asterisk
-ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
+ASTCONFPATH=$(ASTEXAMPLEDIR)/asterisk.conf
 AGI_DIR=$(ASTDATADIR)/agi-bin
 
 # If you use Apache, you may determine by a grep 'DocumentRoot' of your httpd.conf file
@@ -215,12 +215,6 @@ ifeq ($(AST_DEVMODE),yes)
   endif
 endif
 
-ifeq ($(OSARCH),NetBSD)
-  _ASTCFLAGS+=-isystem /usr/pkg/include
-else ifneq ($(findstring BSD,$(OSARCH)),)
-  _ASTCFLAGS+=-isystem /usr/local/include
-endif
-
 ifeq ($(OSARCH),FreeBSD)
   # -V is understood by BSD Make, not by GNU make.
   BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
@@ -435,7 +429,6 @@ dist-clean: distclean
 
 distclean: $(SUBDIRS_DIST_CLEAN) _clean
 	@$(MAKE) -C menuselect dist-clean
-	@$(MAKE) -C sounds dist-clean
 	rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
 	rm -f config.log config.status config.cache
 	rm -rf autom4te.cache
@@ -563,7 +556,7 @@ update:
 
 NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
 OLDHEADERS=$(filter-out $(NEWHEADERS) $(notdir $(DESTDIR)$(ASTHEADERDIR)),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
-INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTCACHEDIR)" "$(ASTETCDIR)" "$(ASTVARRUNDIR)" \
+INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTCACHEDIR)" "$(ASTEXAMPLEDIR)" "$(ASTVARRUNDIR)" \
 	"$(ASTSPOOLDIR)" "$(ASTSPOOLDIR)/dictate" "$(ASTSPOOLDIR)/meetme" \
 	"$(ASTSPOOLDIR)/monitor" "$(ASTSPOOLDIR)/system" "$(ASTSPOOLDIR)/tmp" \
 	"$(ASTSPOOLDIR)/voicemail" "$(ASTSPOOLDIR)/recording" \
@@ -769,7 +762,7 @@ upgrade: bininstall
 #  (2) the extension to strip off
 define INSTALL_CONFIGS
 	@for x in $(1)/*$(2); do \
-		dst="$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x $(2)`"; \
+		dst="$(DESTDIR)$(ASTEXAMPLEDIR)/`$(BASENAME) $$x $(2)`"; \
 		if [ -f "$${dst}" ]; then \
 			if [ "$(OVERWRITE)" = "y" ]; then \
 				if cmp -s "$${dst}" "$$x" ; then \
@@ -799,9 +792,9 @@ define INSTALL_CONFIGS
 			-e 's|^astrundir.*$$|astrundir => $(ASTVARRUNDIR)|' \
 			-e 's|^astlogdir.*$$|astlogdir => $(ASTLOGDIR)|' \
 			-e 's|^astsbindir.*$$|astsbindir => $(ASTSBINDIR)|' \
-			"$(DESTDIR)$(ASTCONFPATH)" > "$(DESTDIR)$(ASTCONFPATH).tmp" ; \
-		$(INSTALL) -m 644 "$(DESTDIR)$(ASTCONFPATH).tmp" "$(DESTDIR)$(ASTCONFPATH)" ; \
-		rm -f "$(DESTDIR)$(ASTCONFPATH).tmp" ; \
+			"$(DESTDIR)$(ASTEXAMPLEDIR)/asterisk.conf" > "$(DESTDIR)$(ASTEXAMPLEDIR)/asterisk.conf.tmp" ; \
+		$(INSTALL) -m 644 "$(DESTDIR)$(ASTEXAMPLEDIR)/asterisk.conf.tmp" "$(DESTDIR)$(ASTEXAMPLEDIR)/asterisk.conf" ; \
+		rm -f "$(DESTDIR)$(ASTEXAMPLEDIR)/asterisk.conf.tmp" ; \
 	fi
 endef
 
@@ -826,15 +819,15 @@ install-configs:
 # XXX why *.adsi is installed first ?
 adsi:
 	@echo Installing adsi config files...
-	$(INSTALL) -d "$(DESTDIR)$(ASTETCDIR)"
+	$(INSTALL) -d "$(DESTDIR)$(ASTEXAMPLEDIR)"
 	@for x in configs/samples/*.adsi; do \
-		dst="$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`" ; \
+		dst="$(DESTDIR)$(ASTEXAMPLEDIR)/`$(BASENAME) $$x`" ; \
 		if [ -f "$${dst}" ] ; then \
 			echo "Overwriting $$x" ; \
 		else \
 			echo "Installing $$x" ; \
 		fi ; \
-		$(INSTALL) -m 644 "$$x" "$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`" ; \
+		$(INSTALL) -m 644 "$$x" "$(DESTDIR)$(ASTEXAMPLEDIR)/`$(BASENAME) $$x`" ; \
 	done
 
 samples: adsi
@@ -867,7 +860,7 @@ basic-pbx:
 webvmail:
 	@[ -d "$(DESTDIR)$(HTTP_DOCSDIR)/" ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
 	@[ -d "$(DESTDIR)$(HTTP_CGIDIR)" ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
-	$(INSTALL) -m 4755 contrib/scripts/vmail.cgi "$(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi"
+	$(INSTALL) contrib/scripts/vmail.cgi "$(DESTDIR)$(HTTP_CGIDIR)/vmail"
 	$(INSTALL) -d "$(DESTDIR)$(HTTP_DOCSDIR)/_asterisk"
 	for x in images/*.gif; do \
 		$(INSTALL) -m 644 $$x "$(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/"; \
@@ -917,11 +910,11 @@ endif
 endif
 
 install-logrotate:
-	if [ ! -d "$(DESTDIR)$(ASTETCDIR)/../logrotate.d" ]; then \
-		$(INSTALL) -d "$(DESTDIR)$(ASTETCDIR)/../logrotate.d" ; \
+	if [ ! -d "$(DESTDIR)$(ASTEXAMPLEDIR)/../logrotate.d" ]; then \
+		$(INSTALL) -d "$(DESTDIR)$(ASTEXAMPLEDIR)/../logrotate.d" ; \
 	fi
 	sed 's#__LOGDIR__#$(ASTLOGDIR)#g' < contrib/scripts/asterisk.logrotate | sed 's#__SBINDIR__#$(ASTSBINDIR)#g' > contrib/scripts/asterisk.logrotate.tmp
-	$(INSTALL) -m 0644 contrib/scripts/asterisk.logrotate.tmp "$(DESTDIR)$(ASTETCDIR)/../logrotate.d/asterisk"
+	$(INSTALL) -m 0644 contrib/scripts/asterisk.logrotate.tmp "$(DESTDIR)$(ASTEXAMPLEDIR)/../logrotate.d/asterisk"
 	rm -f contrib/scripts/asterisk.logrotate.tmp
 
 config:
@@ -1048,7 +1041,7 @@ uninstall-all: _uninstall uninstall-head
 	rm -rf "$(DESTDIR)$(ASTVARLIBDIR)"
 	rm -rf "$(DESTDIR)$(ASTDATADIR)"
 	rm -rf "$(DESTDIR)$(ASTSPOOLDIR)"
-	rm -rf "$(DESTDIR)$(ASTETCDIR)"
+	rm -rf "$(DESTDIR)$(ASTEXAMPLEDIR)"
 	rm -rf "$(DESTDIR)$(ASTLOGDIR)"
 	rm -rf "$(DESTDIR)$(ASTCACHEDIR)"
 
@@ -1139,6 +1132,7 @@ check-alembic: makeopts
 .PHONY: install-configs
 .PHONY: install-headers
 .PHONY: menuselect
+.PHONY: menuselect.makeopts
 .PHONY: main
 .PHONY: sounds
 .PHONY: clean

File Added: pkgsrc/comms/asterisk21/patches/patch-addons_chan__ooh323.c
$NetBSD: patch-addons_chan__ooh323.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- addons/chan_ooh323.c.orig	2018-05-01 20:12:26.000000000 +0000
+++ addons/chan_ooh323.c
@@ -4035,7 +4035,7 @@ static void *do_monitor(void *data)
 				h323->lastrtprx + h323->rtptimeout < t) {
 				if (!ast_channel_trylock(h323->owner)) {
 					ast_softhangup_nolock(h323->owner, AST_SOFTHANGUP_DEV);
-					ast_log(LOG_NOTICE, "Disconnecting call '%s' for lack of RTP activity in %ld seconds\n", ast_channel_name(h323->owner), (long) (t - h323->lastrtprx));
+					ast_log(LOG_NOTICE, "Disconnecting call '%s' for lack of RTP activity in %jd seconds\n", ast_channel_name(h323->owner), (intmax_t) (t - h323->lastrtprx));
 					ast_channel_unlock(h323->owner);
 				}
 

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__adsiprog.c
$NetBSD: patch-apps_app__adsiprog.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_adsiprog.c.orig	2018-05-07 17:17:45.731153122 +0000
+++ apps/app_adsiprog.c
@@ -215,7 +215,7 @@ static int process_token(void *out, char
 			/* Convert */
 			*((unsigned int *)out) = htonl(*((unsigned int *)out));
 		}
-	} else if ((strlen(src) > 2) && (src[0] == '0') && (tolower(src[1]) == 'x')) {
+	} else if ((strlen(src) > 2) && (src[0] == '0') && (tolower((unsigned char)src[1]) == 'x')) {
 		if (!(argtype & ARG_NUMBER))
 			return -1;
 		/* Hex value */
@@ -225,7 +225,7 @@ static int process_token(void *out, char
 			/* Convert */
 			*((unsigned int *)out) = htonl(*((unsigned int *)out));
 		}
-	} else if ((!ast_strlen_zero(src) && isdigit(src[0]))) {
+	} else if ((!ast_strlen_zero(src) && isdigit((unsigned char)src[0]))) {
 		if (!(argtype & ARG_NUMBER))
 			return -1;
 		/* Hex value */

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__chanspy.c
$NetBSD: patch-apps_app__chanspy.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_chanspy.c.orig	2018-05-07 17:20:13.916423247 +0000
+++ apps/app_chanspy.c
@@ -1105,7 +1105,7 @@ static int common_exec(struct ast_channe
 				if ((ptr = strchr(peer_name, '/'))) {
 					*ptr++ = '\0';
 					for (s = peer_name; s < ptr; s++) {
-						*s = tolower(*s);
+						*s = tolower((unsigned char)*s);
 					}
 					if ((s = strchr(ptr, '-'))) {
 						*s = '\0';

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__directory.c
$NetBSD: patch-apps_app__directory.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_directory.c.orig	2018-05-07 17:19:54.317128994 +0000
+++ apps/app_directory.c
@@ -194,7 +194,7 @@ static int compare(const char *text, con
 	}
 
 	while (*template) {
-		digit = toupper(*text++);
+		digit = toupper((unsigned char)*text++);
 		switch (digit) {
 		case 0:
 			return -1;

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__dumpchan.c
$NetBSD: patch-apps_app__dumpchan.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_dumpchan.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ apps/app_dumpchan.c
@@ -117,7 +117,7 @@ static int serialize_showchan(struct ast
 		"1stFileDescriptor=  %d\n"
 		"Framesin=           %u %s\n"
 		"Framesout=          %u %s\n"
-		"TimetoHangup=       %ld\n"
+		"TimetoHangup=       %jd\n"
 		"ElapsedTime=        %dh%dm%ds\n"
 		"BridgeID=           %s\n"
 		"Context=            %s\n"
@@ -155,7 +155,7 @@ static int serialize_showchan(struct ast
 		ast_channel_fd(c, 0),
 		ast_channel_fin(c) & ~DEBUGCHAN_FLAG, (ast_channel_fin(c) & DEBUGCHAN_FLAG) ? " (DEBUGGED)" : "",
 		ast_channel_fout(c) & ~DEBUGCHAN_FLAG, (ast_channel_fout(c) & DEBUGCHAN_FLAG) ? " (DEBUGGED)" : "",
-		(long)ast_channel_whentohangup(c)->tv_sec,
+		(intmax_t)ast_channel_whentohangup(c)->tv_sec,
 		hour,
 		min,
 		sec,

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__followme.c
$NetBSD: patch-apps_app__followme.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_followme.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ apps/app_followme.c
@@ -380,7 +380,7 @@ static struct number *create_followme_nu
 		*tmp = '\0';
 	ast_copy_string(cur->number, buf, sizeof(cur->number));
 	cur->order = numorder;
-	ast_debug(1, "Created a number, %s, order of , %d, with a timeout of %ld.\n", cur->number, cur->order, cur->timeout);
+	ast_debug(1, "Created a number, %s, order of , %d, with a timeout of %jd.\n", cur->number, cur->order, (intmax_t)cur->timeout);
 
 	return cur;
 }
@@ -1010,7 +1010,7 @@ static struct ast_channel *findmeexec(st
 			break;
 		}
 
-		ast_debug(2, "Number(s) %s timeout %ld\n", nm->number, nm->timeout);
+		ast_debug(2, "Number(s) %s timeout %jd\n", nm->number, (intmax_t)nm->timeout);
 
 		/*
 		 * Put all active outgoing channels into autoservice.

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__minivm.c
$NetBSD: patch-apps_app__minivm.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_minivm.c.orig	2018-05-07 17:45:03.072823223 +0000
+++ apps/app_minivm.c
@@ -1593,7 +1593,7 @@ static int invent_message(struct ast_cha
 
 		while (*i)  {
 			ast_debug(2, "Numeric? Checking %c\n", *i);
-			if (!isdigit(*i)) {
+			if (!isdigit((unsigned char)*i)) {
 				numericusername = FALSE;
 				break;
 			}

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__queue.c
$NetBSD: patch-apps_app__queue.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_queue.c.orig	2021-03-25 17:34:21.000000000 +0000
+++ apps/app_queue.c
@@ -5909,8 +5909,8 @@ static void queue_agent_cb(void *userdat
 	} else if (ast_channel_agent_logoff_type() == stasis_message_type(msg)) {
 		ast_queue_log("NONE", agent_blob->snapshot->base->uniqueid,
 			ast_json_string_get(ast_json_object_get(agent_blob->blob, "agent")),
-			"AGENTLOGOFF", "%s|%ld", agent_blob->snapshot->base->name,
-			(long) ast_json_integer_get(ast_json_object_get(agent_blob->blob, "logintime")));
+			"AGENTLOGOFF", "%s|%jd", agent_blob->snapshot->base->name,
+			(intmax_t) ast_json_integer_get(ast_json_object_get(agent_blob->blob, "logintime")));
 	}
 }
 
@@ -7043,8 +7043,8 @@ static int try_calling(struct queue_ent 
 		/* if setinterfacevar is defined, make member variables available to the channel */
 		/* use  pbx_builtin_setvar to set a load of variables with one call */
 		if (qe->parent->setinterfacevar && interfacevar) {
-			ast_str_set(&interfacevar, 0, "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%ld,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d",
-				member->interface, member->membername, member->calls, (long)member->lastcall, member->penalty, member->dynamic, member->realtime);
+			ast_str_set(&interfacevar, 0, "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%jd,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d",
+				member->interface, member->membername, member->calls, (intmax_t)member->lastcall, member->penalty, member->dynamic, member->realtime);
 			pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar));
 			pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar));
 		}
@@ -7052,8 +7052,8 @@ static int try_calling(struct queue_ent 
 		/* if setqueueentryvar is defined, make queue entry (i.e. the caller) variables available to the channel */
 		/* use  pbx_builtin_setvar to set a load of variables with one call */
 		if (qe->parent->setqueueentryvar && interfacevar) {
-			ast_str_set(&interfacevar, 0, "QEHOLDTIME=%ld,QEORIGINALPOS=%d",
-				(long) (time(NULL) - qe->start), qe->opos);
+			ast_str_set(&interfacevar, 0, "QEHOLDTIME=%jd,QEORIGINALPOS=%d",
+				(intmax_t) (time(NULL) - qe->start), qe->opos);
 			pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar));
 			pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar));
 		}
@@ -8335,8 +8335,8 @@ static int queue_exec(struct ast_channel
 		}
 	}
 
-	ast_debug(1, "queue: %s, expires: %ld, priority: %d\n",
-		args.queuename, (long)qe.expire, prio);
+	ast_debug(1, "queue: %s, expires: %jd, priority: %d\n",
+		args.queuename, (intmax_t)qe.expire, prio);
 
 	qe.chan = chan;
 	qe.prio = prio;
@@ -8402,8 +8402,8 @@ check_turns:
 			record_abandoned(&qe);
 			reason = QUEUE_TIMEOUT;
 			res = 0;
-			ast_queue_log(args.queuename, ast_channel_uniqueid(chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld",
-				qe.pos, qe.opos, (long) (time(NULL) - qe.start));
+			ast_queue_log(args.queuename, ast_channel_uniqueid(chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%jd",
+				qe.pos, qe.opos, (intmax_t) (time(NULL) - qe.start));
 			break;
 		}
 
@@ -8473,7 +8473,7 @@ check_turns:
 			record_abandoned(&qe);
 			reason = QUEUE_TIMEOUT;
 			res = 0;
-			ast_queue_log(qe.parent->name, ast_channel_uniqueid(qe.chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld", qe.pos, qe.opos, (long) (time(NULL) - qe.start));
+			ast_queue_log(qe.parent->name, ast_channel_uniqueid(qe.chan),"NONE", "EXITWITHTIMEOUT", "%d|%d|%jd", qe.pos, qe.opos, (intmax_t) (time(NULL) - qe.start));
 			break;
 		}
 
@@ -8514,7 +8514,7 @@ stop:
 			}
 		} else if (qe.valid_digits) {
 			ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "EXITWITHKEY",
-				"%s|%d|%d|%ld", qe.digits, qe.pos, qe.opos, (long) (time(NULL) - qe.start));
+				"%s|%d|%d|%jd", qe.digits, qe.pos, qe.opos, (intmax_t) (time(NULL) - qe.start));
 		}
 	}
 
@@ -9871,7 +9871,7 @@ static int word_in_list(const char *list
 	const char *find, *end_find, *end_list;
 
 	/* strip whitespace from front */
-	while(isspace(*list)) {
+	while(isspace((unsigned char)*list)) {
 		list++;
 	}
 
@@ -9880,11 +9880,11 @@ static int word_in_list(const char *list
 		if (find != list && *(find - 1) != ' ') {
 			list = find;
 			/* strip word from front */
-			while(!isspace(*list) && *list != '\0') {
+			while(!isspace((unsigned char)*list) && *list != '\0') {
 				list++;
 			}
 			/* strip whitespace from front */
-			while(isspace(*list)) {
+			while(isspace((unsigned char)*list)) {
 				list++;
 			}
 			continue;
@@ -9897,11 +9897,11 @@ static int word_in_list(const char *list
 		if (end_find == end_list || *end_find != ' ') {
 			list = find;
 			/* strip word from front */
-			while(!isspace(*list) && *list != '\0') {
+			while(!isspace((unsigned char)*list) && *list != '\0') {
 				list++;
 			}
 			/* strip whitespace from front */
-			while(isspace(*list)) {
+			while(isspace((unsigned char)*list)) {
 				list++;
 			}
 			continue;
@@ -10194,7 +10194,7 @@ static int manager_queues_status(struct 
 					"CallerIDName: %s\r\n"
 					"ConnectedLineNum: %s\r\n"
 					"ConnectedLineName: %s\r\n"
-					"Wait: %ld\r\n"
+					"Wait: %jd\r\n"
 					"Priority: %d\r\n"
 					"%s"
 					"\r\n",
@@ -10203,7 +10203,7 @@ static int manager_queues_status(struct 
 					S_COR(ast_channel_caller(qe->chan)->id.name.valid, ast_channel_caller(qe->chan)->id.name.str, "unknown"),
 					S_COR(ast_channel_connected(qe->chan)->id.number.valid, ast_channel_connected(qe->chan)->id.number.str, "unknown"),
 					S_COR(ast_channel_connected(qe->chan)->id.name.valid, ast_channel_connected(qe->chan)->id.name.str, "unknown"),
-					(long) (now - qe->start), qe->prio, idText);
+					(intmax_t) (now - qe->start), qe->prio, idText);
 				++q_items;
 			}
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__sms.c
$NetBSD: patch-apps_app__sms.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_sms.c.orig	2018-05-01 20:12:26.000000000 +0000
+++ apps/app_sms.c
@@ -291,7 +291,7 @@ static void numcpy(char *d, char *s)
 		*d++ = *s++;
 	}
 	while (*s) {
-  		if (isdigit(*s)) {
+  		if (isdigit((unsigned char)*s)) {
 			*d++ = *s;
 		}
 		s++;
@@ -557,7 +557,7 @@ static void packdate(unsigned char *o, t
 	int z;
 
 	ast_localtime(&topack, &t, NULL);
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__) || defined(__CYGWIN__)
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__) || defined(__CYGWIN__) || defined(__DragonFly__)
 	z = -t.tm_gmtoff / 60 / 15;
 #else
 	z = timezone / 60 / 15;
@@ -754,7 +754,7 @@ static unsigned char packaddress(unsigne
 		o[1] = 0x81;
 	}
 	for ( ; *i ; i++) {
-		if (!isdigit(*i)) {                 /* ignore non-digits */
+		if (!isdigit((unsigned char)*i)) {                 /* ignore non-digits */
 			continue;
 		}
 		if (o[0] & 1) {
@@ -849,11 +849,11 @@ static void sms_readfile(sms_t * h, char
 			if (!*p || *p == ';') {
 				continue;                   /* blank line or comment, ignore */
 			}
-			while (isalnum(*p)) {
-				*p = tolower (*p);
+			while (isalnum((unsigned char)*p)) {
+				*p = tolower ((unsigned char)*p);
 				p++;
 			}
-			while (isspace (*p)) {
+			while (isspace ((unsigned char)*p)) {
 				*p++ = 0;
 			}
 			if (*p == '=') {
@@ -869,7 +869,7 @@ static void sms_readfile(sms_t * h, char
 						ast_log(LOG_WARNING, "UD too long in %s\n", fn);
 					}
 				} else {
-					while (isspace (*p)) {
+					while (isspace ((unsigned char)*p)) {
 						p++;
 					}
 					if (!strcmp(line, "oa") && strlen(p) < sizeof(h->oa)) {
@@ -917,11 +917,11 @@ static void sms_readfile(sms_t * h, char
 					if (!strcmp(line, "ud")) {        /* user data */
 						int o = 0;
 						while (*p && o < SMSLEN) {
-							if (isxdigit(*p) && isxdigit(p[1]) && isxdigit(p[2]) && isxdigit(p[3])) {
+							if (isxdigit((unsigned char)*p) && isxdigit((unsigned char)p[1]) && isxdigit((unsigned char)p[2]) && isxdigit((unsigned char)p[3])) {
 								h->ud[o++] =
-									(((isalpha(*p) ? 9 : 0) + (*p & 0xF)) << 12) +
-									(((isalpha(p[1]) ? 9 : 0) + (p[1] & 0xF)) << 8) +
-									(((isalpha(p[2]) ? 9 : 0) + (p[2] & 0xF)) << 4) + ((isalpha(p[3]) ? 9 : 0) + (p[3] & 0xF));
+									(((isalpha((unsigned char)*p) ? 9 : 0) + (*p & 0xF)) << 12) +
+									(((isalpha((unsigned char)p[1]) ? 9 : 0) + (p[1] & 0xF)) << 8) +
+									(((isalpha((unsigned char)p[2]) ? 9 : 0) + (p[2] & 0xF)) << 4) + ((isalpha((unsigned char)p[3]) ? 9 : 0) + (p[3] & 0xF));
 								p += 4;
 							} else
 								break;
@@ -934,8 +934,8 @@ static void sms_readfile(sms_t * h, char
 				} else if (!strcmp(line, "ud")) {       /* user data */
 					int o = 0;
 					while (*p && o < SMSLEN) {
-						if (isxdigit(*p) && isxdigit(p[1])) {
-							h->ud[o++] = (((isalpha(*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha(p[1]) ? 9 : 0) + (p[1] & 0xF));
+						if (isxdigit((unsigned char)*p) && isxdigit((unsigned char)p[1])) {
+							h->ud[o++] = (((isalpha((unsigned char)*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha((unsigned char)p[1]) ? 9 : 0) + (p[1] & 0xF));
 							p += 2;
 						} else {
 							break;
@@ -949,8 +949,8 @@ static void sms_readfile(sms_t * h, char
 					unsigned char o = 0;
 					h->udhi = 1;
 					while (*p && o < SMSLEN) {
-						if (isxdigit(*p) && isxdigit(p[1])) {
-							h->udh[o] = (((isalpha(*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha(p[1]) ? 9 : 0) + (p[1] & 0xF));
+						if (isxdigit((unsigned char)*p) && isxdigit((unsigned char)p[1])) {
+							h->udh[o] = (((isalpha((unsigned char)*p) ? 9 : 0) + (*p & 0xF)) << 4) + ((isalpha((unsigned char)p[1]) ? 9 : 0) + (p[1] & 0xF));
 							o++;
 							p += 2;
 						} else {
@@ -1928,7 +1928,7 @@ static int sms_exec(struct ast_channel *
 	ast_copy_string(h.queue, sms_args.queue, sizeof(h.queue));
 
 	for (p = h.queue; *p; p++) {
-		if (!isalnum(*p)) {
+		if (!isalnum((unsigned char)*p)) {
 			*p = '-';                       /* make very safe for filenames */
 		}
 	}

File Added: pkgsrc/comms/asterisk21/patches/patch-apps_app__voicemail.c
$NetBSD: patch-apps_app__voicemail.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- apps/app_voicemail.c.orig	2018-05-01 20:12:26.000000000 +0000
+++ apps/app_voicemail.c
@@ -5251,7 +5251,7 @@ static void make_email_file(FILE *p,
 		}
 		fprintf(p, "X-Asterisk-VM-Message-Type: %s" ENDL, msgnum > -1 ? "Message" : greeting_attachment);
 		fprintf(p, "X-Asterisk-VM-Orig-date: %s" ENDL, date);
-		fprintf(p, "X-Asterisk-VM-Orig-time: %ld" ENDL, (long) time(NULL));
+		fprintf(p, "X-Asterisk-VM-Orig-time: %jd" ENDL, (intmax_t) time(NULL));
 		fprintf(p, "X-Asterisk-VM-Message-ID: %s" ENDL, msg_id);
 	}
 	if (!ast_strlen_zero(cidnum)) {
@@ -6202,7 +6202,7 @@ static void generate_msg_id(char *dst)
 	 * but only in single system solutions.
 	 */
 	unsigned int unique_counter = ast_atomic_fetchadd_int(&msg_id_incrementor, +1);
-	snprintf(dst, MSG_ID_LEN, "%ld-%08x", (long) time(NULL), unique_counter);
+	snprintf(dst, MSG_ID_LEN, "%jd-%08x", (intmax_t) time(NULL), unique_counter);
 }
 
 /*!
@@ -6324,7 +6324,7 @@ static int msg_create_from_file(struct a
 			"callerchan=%s\n"
 			"callerid=%s\n"
 			"origdate=%s\n"
-			"origtime=%ld\n"
+			"origtime=%jd\n"
 			"category=%s\n"
 			"msg_id=%s\n"
 			"flag=\n" /* flags not supported in copy from file yet */
@@ -6337,7 +6337,7 @@ static int msg_create_from_file(struct a
 			recdata->call_priority,
 			S_OR(recdata->call_callerchan, "Unknown"),
 			S_OR(recdata->call_callerid, "Unknown"),
-			date, (long) time(NULL),
+			date, (intmax_t) time(NULL),
 			S_OR(category, ""),
 			msg_id,
 			duration);
@@ -6859,7 +6859,7 @@ static int leave_voicemail(struct ast_ch
 		/* Store information in real-time storage */
 		if (ast_check_realtime("voicemail_data")) {
 			snprintf(priority, sizeof(priority), "%d", ast_channel_priority(chan));
-			snprintf(origtime, sizeof(origtime), "%ld", (long) time(NULL));
+			snprintf(origtime, sizeof(origtime), "%jd", (intmax_t) time(NULL));
 			get_date(date, sizeof(date));
 			ast_callerid_merge(callerid, sizeof(callerid),
 				S_COR(ast_channel_caller(chan)->id.name.valid, ast_channel_caller(chan)->id.name.str, NULL),
@@ -6903,7 +6903,7 @@ static int leave_voicemail(struct ast_ch
 				"callerchan=%s\n"
 				"callerid=%s\n"
 				"origdate=%s\n"
-				"origtime=%ld\n"
+				"origtime=%jd\n"
 				"category=%s\n"
 				"msg_id=%s\n",
 				ext,
@@ -6915,7 +6915,7 @@ static int leave_voicemail(struct ast_ch
 				ast_channel_priority(chan),
 				ast_channel_name(chan),
 				callerid,
-				date, (long) time(NULL),
+				date, (intmax_t) time(NULL),
 				category ? category : "",
 				msg_id);
 		} else {
@@ -11456,7 +11456,7 @@ static int vm_execmain(struct ast_channe
 				play_auto = 1;
 				if (!ast_strlen_zero(opts[OPT_ARG_PLAYFOLDER])) {
 					/* See if it is a folder name first */
-					if (isdigit(opts[OPT_ARG_PLAYFOLDER][0])) {
+					if (isdigit((unsigned char)opts[OPT_ARG_PLAYFOLDER][0])) {
 						if (sscanf(opts[OPT_ARG_PLAYFOLDER], "%30d", &play_folder) != 1) {
 							play_folder = -1;
 						}

File Added: pkgsrc/comms/asterisk21/patches/patch-build__tools_make__xml__documentation
$NetBSD: patch-build__tools_make__xml__documentation,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- build_tools/make_xml_documentation.orig	2022-04-14 22:16:42.000000000 +0000
+++ build_tools/make_xml_documentation
@@ -214,7 +214,7 @@ for subdir in ${mod_subdirs} ; do
 					${XMLSTARLET} val -e -d "${source_tree}/doc/appdocsxml.dtd" "${i}" || { echo "" ; exit 1 ; }
 			fi
 		fi
-		${SED} -r "/^\s*(<[?]xml|<.DOCTYPE|<.?docs)/d" "${i}" >> "${output_file}"
+		${SED} -r "/^\[[:space:]](<[?]xml|<.DOCTYPE|<.?docs)/d" "${i}" >> "${output_file}"
 	done
 done
 echo "</docs>" >> "${output_file}"

File Added: pkgsrc/comms/asterisk21/patches/patch-build__tools_mkpkgconfig
$NetBSD: patch-build__tools_mkpkgconfig,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- build_tools/mkpkgconfig.orig	2015-10-09 21:48:48.000000000 +0000
+++ build_tools/mkpkgconfig
@@ -22,11 +22,14 @@ else
 fi
 
 ## Clean out CFLAGS for the spec file.
+## pkgsrc -- the regex below isn't sed compatible, so always use perl
+EXTREGEX="perl -pe"
 LOCAL_CFLAGS=`echo $CFLAGS | ${EXTREGEX} 's/-pipe\s*//g' | ${EXTREGEX} 's/-[Wmp]\S*\s*//g' | \
   ${EXTREGEX} 's/\s+-I(include|\.\.\/include)\s+/ /g' | \
   ${EXTREGEX} 's/-DINSTALL_PREFIX=\S* //g' | \
   ${EXTREGEX} 's/-DASTERISK_VERSION=\S* //g' | \
   ${EXTREGEX} 's/-DAST(ETCDIR|LIBDIR|VARLIBDIR|VARRUNDIR|SPOOLDIR|LOGDIR|CONFPATH|MODDIR|AGIDIR)=\S* //g' | \
+  ${EXTREGEX} "s;${WRKSRC};${PREFIX};g" | \
   ${EXTREGEX} 's/^\s|\s$//g'`
 
 cat <<EOF > "$PPATH/asterisk.pc"

File Added: pkgsrc/comms/asterisk21/patches/patch-cdr_cdr__pgsql.c
$NetBSD: patch-cdr_cdr__pgsql.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- cdr/cdr_pgsql.c.orig	2016-09-30 20:36:17.000000000 +0000
+++ cdr/cdr_pgsql.c
@@ -270,7 +270,7 @@ static int pgsql_log(struct ast_cdr *cdr
 			if (strcmp(cur->name, "start") == 0 || strcmp(cur->name, "calldate") == 0) {
 				if (strncmp(cur->type, "int", 3) == 0) {
 					LENGTHEN_BUF2(13);
-					ast_str_append(&sql2, 0, "%s%ld", separator, (long) cdr->start.tv_sec);
+					ast_str_append(&sql2, 0, "%s%jd", separator, (intmax_t) cdr->start.tv_sec);
 				} else if (strncmp(cur->type, "float", 5) == 0) {
 					LENGTHEN_BUF2(31);
 					ast_str_append(&sql2, 0, "%s%f", separator, (double)cdr->start.tv_sec + (double)cdr->start.tv_usec / 1000000.0);
@@ -284,7 +284,7 @@ static int pgsql_log(struct ast_cdr *cdr
 			} else if (strcmp(cur->name, "answer") == 0) {
 				if (strncmp(cur->type, "int", 3) == 0) {
 					LENGTHEN_BUF2(13);
-					ast_str_append(&sql2, 0, "%s%ld", separator, (long) cdr->answer.tv_sec);
+					ast_str_append(&sql2, 0, "%s%jd", separator, (intmax_t) cdr->answer.tv_sec);
 				} else if (strncmp(cur->type, "float", 5) == 0) {
 					LENGTHEN_BUF2(31);
 					ast_str_append(&sql2, 0, "%s%f", separator, (double)cdr->answer.tv_sec + (double)cdr->answer.tv_usec / 1000000.0);
@@ -298,7 +298,7 @@ static int pgsql_log(struct ast_cdr *cdr
 			} else if (strcmp(cur->name, "end") == 0) {
 				if (strncmp(cur->type, "int", 3) == 0) {
 					LENGTHEN_BUF2(13);
-					ast_str_append(&sql2, 0, "%s%ld", separator, (long) cdr->end.tv_sec);
+					ast_str_append(&sql2, 0, "%s%jd", separator, (intmax_t) cdr->end.tv_sec);
 				} else if (strncmp(cur->type, "float", 5) == 0) {
 					LENGTHEN_BUF2(31);
 					ast_str_append(&sql2, 0, "%s%f", separator, (double)cdr->end.tv_sec + (double)cdr->end.tv_usec / 1000000.0);

File Added: pkgsrc/comms/asterisk21/patches/patch-cel_cel__pgsql.c
$NetBSD: patch-cel_cel__pgsql.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- cel/cel_pgsql.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ cel/cel_pgsql.c
@@ -205,7 +205,7 @@ static void pgsql_log(struct ast_event *
 			if (strcmp(cur->name, "eventtime") == 0) {
 				if (strncmp(cur->type, "int", 3) == 0) {
 					LENGTHEN_BUF2(13);
-					ast_str_append(&sql2, 0, "%s%ld", SEP, (long) record.event_time.tv_sec);
+					ast_str_append(&sql2, 0, "%s%jd", SEP, (intmax_t) record.event_time.tv_sec);
 				} else if (strncmp(cur->type, "float", 5) == 0) {
 					LENGTHEN_BUF2(31);
 					ast_str_append(&sql2, 0, "%s%f",

File Added: pkgsrc/comms/asterisk21/patches/patch-channels_chan__pjsip.c
$NetBSD: patch-channels_chan__pjsip.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- channels/chan_pjsip.c.orig	2019-09-05 13:09:20.000000000 +0000
+++ channels/chan_pjsip.c
@@ -34,10 +34,6 @@
 
 #include "asterisk.h"
 
-#include <pjsip.h>
-#include <pjsip_ua.h>
-#include <pjlib.h>
-
 #include "asterisk/lock.h"
 #include "asterisk/channel.h"
 #include "asterisk/module.h"
@@ -63,10 +59,14 @@
 #include "asterisk/test.h"
 #include "asterisk/message.h"
 
-#include "asterisk/res_pjsip.h"
-#include "asterisk/res_pjsip_session.h"
 #include "asterisk/stream.h"
 
+#include <pjsip.h>
+#include <pjsip_ua.h>
+#include <pjlib.h>
+
+#include "asterisk/res_pjsip.h"
+#include "asterisk/res_pjsip_session.h"
 #include "pjsip/include/chan_pjsip.h"
 #include "pjsip/include/dialplan_functions.h"
 #include "pjsip/include/cli_functions.h"

File Added: pkgsrc/comms/asterisk21/patches/patch-channels_pjsip_cli__commands.c
$NetBSD: patch-channels_pjsip_cli__commands.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- channels/pjsip/cli_commands.c.orig	2018-06-20 14:37:54.485779459 +0000
+++ channels/pjsip/cli_commands.c
@@ -26,20 +26,21 @@
 
 #include "asterisk.h"
 
+#include "asterisk/astobj2.h"
+#include "asterisk/channel.h"
+#include "asterisk/format.h"
+#include "asterisk/stasis.h"
+#include "asterisk/time.h"
+#include "include/cli_functions.h"
+
 #include <pjsip.h>
 #include <pjlib.h>
 #include <pjsip_ua.h>
 
-#include "asterisk/astobj2.h"
-#include "asterisk/channel.h"
-#include "asterisk/format.h"
+#include "include/chan_pjsip.h"
 #include "asterisk/res_pjsip.h"
 #include "asterisk/res_pjsip_session.h"
 #include "asterisk/res_pjsip_cli.h"
-#include "asterisk/stasis.h"
-#include "asterisk/time.h"
-#include "include/chan_pjsip.h"
-#include "include/cli_functions.h"
 
 
 static int cli_channel_iterate(void *endpoint, ao2_callback_fn callback, void *arg)

File Added: pkgsrc/comms/asterisk21/patches/patch-channels_pjsip_dialplan__functions.c
$NetBSD: patch-channels_pjsip_dialplan__functions.c,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- channels/pjsip/dialplan_functions.c.orig	2018-06-20 14:39:31.934736437 +0000
+++ channels/pjsip/dialplan_functions.c
@@ -450,10 +450,6 @@
 
 #include "asterisk.h"
 
-#include <pjsip.h>
-#include <pjlib.h>
-#include <pjsip_ua.h>
-
 #include "asterisk/astobj2.h"
 #include "asterisk/module.h"
 #include "asterisk/acl.h"
@@ -463,10 +459,15 @@
 #include "asterisk/format.h"
 #include "asterisk/dsp.h"
 #include "asterisk/pbx.h"
+#include "include/dialplan_functions.h"
+
+#include <pjsip.h>
+#include <pjlib.h>
+#include <pjsip_ua.h>
+
 #include "asterisk/res_pjsip.h"
 #include "asterisk/res_pjsip_session.h"
 #include "include/chan_pjsip.h"
-#include "include/dialplan_functions.h"
 
 /*!
  * \brief String representations of the T.38 state enum

File Added: pkgsrc/comms/asterisk21/patches/patch-configure
$NetBSD: patch-configure,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- configure.orig	2024-03-18 13:25:20.000000000 +0000
+++ configure
@@ -10124,12 +10124,12 @@ else $as_nop
 
 			{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clang -fblocks" >&5
 printf %s "checking for clang -fblocks... " >&6; }
-			if test "`echo 'int main(){return ^{return 42;}();}' | ${CC} -o /dev/null -fblocks -x c - 2>&1`" = ""; then
+			if test "`echo 'int main(){return ^{return 42;}();}' | ${CC} ${LDFLAGS} -o /dev/null -fblocks -x c - 2>&1`" = ""; then
 				AST_CLANG_BLOCKS_LIBS=""
 				AST_CLANG_BLOCKS="-Wno-unknown-warning-option -fblocks"
 				{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-			elif test "`echo 'int main(){return ^{return 42;}();}' | ${CC} -o /dev/null -fblocks -x c -lBlocksRuntime - 2>&1`" = ""; then
+			elif test "`echo 'int main(){return ^{return 42;}();}' | ${CC} ${LDFLAGS} -o /dev/null -fblocks -x c -lBlocksRuntime - 2>&1`" = ""; then
 				AST_CLANG_BLOCKS_LIBS="-lBlocksRuntime"
 				AST_CLANG_BLOCKS="-fblocks"
 				{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -21892,6 +21892,148 @@ rm -f core conftest.err conftest.$ac_obj
 
 
 
+if test "${ac_cv_header_sys_atomic_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for sys/atomic.h" >&5
+$as_echo_n "checking for sys/atomic.h... " >&6; }
+if test "${ac_cv_header_sys_atomic_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_atomic_h" >&5
+$as_echo "$ac_cv_header_sys_atomic_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking sys/atomic.h usability" >&5
+$as_echo_n "checking sys/atomic.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <sys/atomic.h>
+_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
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking sys/atomic.h presence" >&5
+$as_echo_n "checking sys/atomic.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/atomic.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+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_cpp conftest.$ac_ext") 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); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/atomic.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: sys/atomic.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to https://issues.asterisk.org ##
+## ------------------------------------------ ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for sys/atomic.h" >&5
+$as_echo_n "checking for sys/atomic.h... " >&6; }
+if test "${ac_cv_header_sys_atomic_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_sys_atomic_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_atomic_h" >&5
+$as_echo "$ac_cv_header_sys_atomic_h" >&6; }
+
+fi
+if test "x$ac_cv_header_sys_atomic_h" = x""yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_ATOMIC_H 1
+_ACEOF
+
+fi
+
+
+
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.

File Added: pkgsrc/comms/asterisk21/patches/patch-configure.ac
$NetBSD: patch-configure.ac,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- configure.ac.orig	2021-03-04 16:46:08.000000000 +0000
+++ configure.ac
@@ -751,7 +751,7 @@ AC_CHECK_HEADERS([xlocale.h])
 
 AC_CHECK_HEADERS([winsock.h winsock2.h])
 
-AC_CHECK_HEADER([sys/poll.h],
+AC_CHECK_HEADER([poll.h],
 	 [],
      AC_DEFINE([AST_POLL_COMPAT], 1, [Define to 1 if internal poll should be used.]))
 
@@ -803,7 +803,7 @@ AC_FUNC_STRNLEN
 AC_FUNC_STRTOD
 AC_FUNC_UTIME_NULL
 AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([asprintf atexit closefrom dup2 eaccess endpwent euidaccess ffsll ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday glob ioperm inet_ntoa isascii memchr memmove memset mkdir mkdtemp munmap newlocale pipe2 ppoll putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strlcat strlcpy strncasecmp strndup strnlen strrchr strsep strspn strstr strtod strtol strtold strtoq unsetenv uselocale utime vasprintf getpeereid sysctl swapctl malloc_trim])
+AC_CHECK_FUNCS([asprintf atexit closefrom dup2 eaccess endpwent euidaccess ffsll ftruncate getcwd gethostbyname gethostname getloadavg gettimeofday glob ioperm inet_ntoa isascii memchr memmove memset mkdir mkdtemp munmap newlocale pipe2 ppoll putenv re_comp regcomp select setenv socket strcasecmp strcasestr strchr strcspn strdup strerror strftime_l strlcat strlcpy strncasecmp strndup strnlen strptime_l strrchr strsep strspn strstr strtod strtol strtold strtoq unsetenv uselocale utime vasprintf getpeereid sysctl swapctl malloc_trim])
 
 AC_MSG_CHECKING(for htonll)
 AC_LINK_IFELSE(
@@ -872,9 +872,9 @@ AC_SUBST(PBX_DYNAMIC_LIST)
 LDFLAGS=${old_LDFLAGS}
 rm -f conftest.dynamics
 
-AC_CHECK_HEADER([sys/poll.h],
+AC_CHECK_HEADER([poll.h],
    [HAS_POLL=1]
-   AC_DEFINE([HAVE_SYS_POLL_H], 1, [Define to 1 if your system has working sys/poll.h]),
+   AC_DEFINE([HAVE_SYS_POLL_H], 1, [Define to 1 if your system has working poll.h]),
    )
 
 AC_ARG_ENABLE([internal-poll],

File Added: pkgsrc/comms/asterisk21/patches/patch-contrib_scripts_vmail.cgi
$NetBSD: patch-contrib_scripts_vmail.cgi,v 1.1 2024/04/08 03:20:07 jnemeth Exp $

--- contrib/scripts/vmail.cgi.orig	2015-10-09 21:48:48.000000000 +0000
+++ contrib/scripts/vmail.cgi
@@ -145,7 +145,7 @@ sub check_login($$)
 		$context = "default";
 	}
 	if (!$filename) {
-		$filename = "/etc/asterisk/voicemail.conf";
+		$filename = "@ASTETCDIR@/voicemail.conf";
 	}
 #	print header;
 #	print "Including <h2>$filename</h2> while in <h2>$category</h2>...\n";
@@ -153,7 +153,7 @@ sub check_login($$)
 	while(<VMAIL>) {
 		chomp;
 		if (/include\s\"([^\"]+)\"$/) {
-			($tmp, $category) = &check_login("/etc/asterisk/$1", $category);
+			($tmp, $category) = &check_login("@ASTETCDIR@/$1", $category);
 			if (length($tmp)) {
 #				print "Got '$tmp'\n";
 				return ($tmp, $category);
@@ -200,7 +200,7 @@ sub check_login_users {
 	my ($mbox, $context) = split(/\@/, param('mailbox'));
 	my $pass = param('password');
 	my ($found, $fullname) = (0, "");
-	open VMAIL, "</etc/asterisk/users.conf";
+	open VMAIL, "<@ASTETCDIR@/users.conf";
 	while (<VMAIL>) {
 		chomp;
 		if (m/\[(.*)\]/) {
@@ -242,7 +242,7 @@ sub validmailbox($$$$)
 		$context = "default";
 	}
 	if (!$filename) {
-		$filename = "/etc/asterisk/voicemail.conf";
+		$filename = "@ASTETCDIR@/voicemail.conf";
 	}
 	if (!$category) {
 		$category = "general";
@@ -251,7 +251,7 @@ sub validmailbox($$$$)
 	while (<VMAIL>) {
 		chomp;
 		if (/include\s\"([^\"]+)\"$/) {
-			($tmp, $category) = &validmailbox($mbox, $context, "/etc/asterisk/$1");
+			($tmp, $category) = &validmailbox($mbox, $context, "@ASTETCDIR@/$1");
 			if ($tmp) {
 				return ($tmp, $category);
 			}
@@ -298,7 +298,7 @@ sub mailbox_options()
 	local $tmp2;
 	local $tmp;
 	if (!$filename) {
-		$filename = "/etc/asterisk/voicemail.conf";
+		$filename = "@ASTETCDIR@/voicemail.conf";
 	}
 	if (!$category) {
 		$category = "general";
@@ -386,7 +386,7 @@ sub mailbox_list()
 sub msgcount() 
 {
 	my ($context, $mailbox, $folder) = @_;
-	my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$mailbox/$folder";
 	if (opendir(DIR, $path)) {
 		my @msgs = grep(/^msg....\.txt$/, readdir(DIR));
 		closedir(DIR);
@@ -410,7 +410,7 @@ sub msgcountstr()
 sub messages()
 {
 	my ($context, $mailbox, $folder) = @_;
-	my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$mailbox/$folder";
 	if (opendir(DIR, $path)) {
 		my @msgs = sort grep(/^msg....\.txt$/, readdir(DIR));
 		closedir(DIR);
@@ -435,7 +435,7 @@ sub getfields()
 {
 	my ($context, $mailbox, $folder, $msg) = @_;
 	my $fields;
-	if (open(MSG, "</var/spool/asterisk/voicemail/$context/$mailbox/$folder/msg${msg}.txt")) {
+	if (open(MSG, "<@ASTSPOOLDIR@/voicemail/$context/$mailbox/$folder/msg${msg}.txt")) {
 		while(<MSG>) {
 			s/\#.*$//g;
 			if (/^(\w+)\s*\=\s*(.*)$/) {
@@ -560,7 +560,7 @@ _EOH
 	<input name="action" type=submit value="download">
 </td></tr>
 <tr><td colspan=2 align=center>
-<embed width=400 height=40 src="vmail.cgi?action=audio&folder=$folder&mailbox=$mbox&context=$context&password=$passwd&msgid=$msgid&format=$format&dontcasheme=$$.$format" autostart=yes loop=false></embed>
+<embed width=400 height=40 src="vmail?action=audio&folder=$folder&mailbox=$mbox&context=$context&password=$passwd&msgid=$msgid&format=$format&dontcasheme=$$.$format" autostart=yes loop=false></embed>
 </td></tr></table>
 </td></tr>
 </table>
@@ -588,7 +588,7 @@ sub message_audio()
 	}
 	&untaint($format);
 
-	my $path = "/var/spool/asterisk/voicemail/$context/$mailbox/$folder/msg${msgid}.$format";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$mailbox/$folder/msg${msgid}.$format";
 
 	$msgid =~ /^\d\d\d\d$/ || die("Msgid Liar ($msgid)!");
 	grep(/^${format}$/, keys %formats) || die("Format Liar ($format)!");
@@ -809,11 +809,11 @@ sub message_rename()
 		die("Invalid old Message<BR>\n");
 	}
 	
-	my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$newfolder";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$mbox/$newfolder";
 	$path =~ /^(.*)$/;
 	$path = $1;
 	mkdir $path, 0770;
-	$path = "/var/spool/asterisk/voicemail/$context/$mbox/$oldfolder";
+	$path = "@ASTSPOOLDIR@/voicemail/$context/$mbox/$oldfolder";
 	opendir(DIR, $path) || die("Unable to open directory\n");
 	my @files = grep /^msg${old}\.\w+$/, readdir(DIR);
 	closedir(DIR);
@@ -823,7 +823,7 @@ sub message_rename()
 			$tmp = $1;
 			$oldfile = $path . "/$tmp";
 			$tmp =~ s/msg${old}/msg${new}/;
-			$newfile = "/var/spool/asterisk/voicemail/$context/$mbox/$newfolder/$tmp";
+			$newfile = "@ASTSPOOLDIR@/voicemail/$context/$mbox/$newfolder/$tmp";
 #			print "Renaming $oldfile to $newfile<BR>\n";
 			rename($oldfile, $newfile);
 		}
@@ -884,15 +884,15 @@ sub message_copy()
 		die("Invalid old Message<BR>\n");
 	}
 	
-	my $path = "/var/spool/asterisk/voicemail/$context/$newmbox";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$newmbox";
 	$path =~ /^(.*)$/;
 	$path = $1;
 	mkdir $path, 0770;
-	$path = "/var/spool/asterisk/voicemail/$context/$newmbox/INBOX";
+	$path = "@ASTSPOOLDIR@/voicemail/$context/$newmbox/INBOX";
 	$path =~ /^(.*)$/;
 	$path = $1;
 	mkdir $path, 0770;
-	$path = "/var/spool/asterisk/voicemail/$context/$mbox/$oldfolder";
+	$path = "@ASTSPOOLDIR@/voicemail/$context/$mbox/$oldfolder";
 	opendir(DIR, $path) || die("Unable to open directory\n");
 	my @files = grep /^msg${old}\.\w+$/, readdir(DIR);
 	closedir(DIR);
@@ -902,7 +902,7 @@ sub message_copy()
 			$tmp = $1;
 			$oldfile = $path . "/$tmp";
 			$tmp =~ s/msg${old}/msg${new}/;
-			$newfile = "/var/spool/asterisk/voicemail/$context/$newmbox/INBOX/$tmp";
+			$newfile = "@ASTSPOOLDIR@/voicemail/$context/$newmbox/INBOX/$tmp";
 #			print "Copying $oldfile to $newfile<BR>\n";
 			&file_copy($oldfile, $newfile);
 		}
@@ -932,7 +932,7 @@ sub message_delete()
 	} else {
 		die("Invalid Message<BR>\n");
 	}
-	my $path = "/var/spool/asterisk/voicemail/$context/$mbox/$folder";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$mbox/$folder";
 	opendir(DIR, $path) || die("Unable to open directory\n");
 	my @files = grep /^msg${msg}\.\w+$/, readdir(DIR);
 	closedir(DIR);
@@ -968,7 +968,7 @@ sub message_forward()
 	my $txt;
 	$context = &untaint($context);
 	$newmbox = &untaint($newmbox);
-	my $path = "/var/spool/asterisk/voicemail/$context/$newmbox/INBOX";
+	my $path = "@ASTSPOOLDIR@/voicemail/$context/$newmbox/INBOX";
 	if ($msgs[0]) {
 		if (&lock_path($path) == 0) {
 			$msgcount = &msgcount($context, $newmbox, "INBOX");
@@ -1018,7 +1018,7 @@ sub message_delete_or_move()
 	$context = &untaint($context);
 	$mbox = &untaint($mbox);
 	$folder = &untaint($folder);
-	$path = "/var/spool/asterisk/voicemail/$context/$mbox/$folder";
+	$path = "@ASTSPOOLDIR@/voicemail/$context/$mbox/$folder";
 	if ($msgs[0]) {
 		if (&lock_path($path) == 0) {
 			my $msgcount = &msgcount($context, $mbox, $folder);

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__cdr.c
$NetBSD: patch-funcs_func__cdr.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_cdr.c.orig	2018-05-07 17:23:06.705808560 +0000
+++ funcs/func_cdr.c
@@ -547,7 +547,7 @@ static int cdr_write(struct ast_channel 
 
 		ast_log(LOG_WARNING, "Using the %s function to set 'amaflags' is deprecated. Please use the CHANNEL function instead.\n",
 			cmd);
-		if (isdigit(*value)) {
+		if (isdigit((unsigned char)*value)) {
 			if (sscanf(value, "%30d", &amaflags) != 1) {
 				amaflags = AST_AMA_NONE;
 			}

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__channel.c
$NetBSD: patch-funcs_func__channel.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_channel.c.orig	2018-05-07 17:22:10.785599288 +0000
+++ funcs/func_channel.c
@@ -492,7 +492,7 @@ static int func_channel_write_real(struc
 	} else if (!strcasecmp(data, "amaflags")) {
 		int amaflags;
 
-		if (isdigit(*value)) {
+		if (isdigit((unsigned char)*value)) {
 			if (sscanf(value, "%30d", &amaflags) != 1) {
 				amaflags = AST_AMA_NONE;
 			}

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__env.c
$NetBSD: patch-funcs_func__env.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_env.c.orig	2019-09-05 13:09:20.000000000 +0000
+++ funcs/func_env.c
@@ -408,11 +408,11 @@ static int file_count_line(struct ast_ch
 
 	AST_STANDARD_APP_ARGS(args, data);
 	if (args.argc > 1) {
-		if (tolower(args.format[0]) == 'd') {
+		if (tolower((unsigned char)args.format[0]) == 'd') {
 			newline_format = FF_DOS;
-		} else if (tolower(args.format[0]) == 'm') {
+		} else if (tolower((unsigned char)args.format[0]) == 'm') {
 			newline_format = FF_MAC;
-		} else if (tolower(args.format[0]) == 'u') {
+		} else if (tolower((unsigned char)args.format[0]) == 'u') {
 			newline_format = FF_UNIX;
 		}
 	}
@@ -570,11 +570,11 @@ static int file_read(struct ast_channel 
 
 	/* Line-based read */
 	if (args.argc == 5) {
-		if (tolower(args.fileformat[0]) == 'd') {
+		if (tolower((unsigned char)args.fileformat[0]) == 'd') {
 			format = FF_DOS;
-		} else if (tolower(args.fileformat[0]) == 'm') {
+		} else if (tolower((unsigned char)args.fileformat[0]) == 'm') {
 			format = FF_MAC;
-		} else if (tolower(args.fileformat[0]) == 'u') {
+		} else if (tolower((unsigned char)args.fileformat[0]) == 'u') {
 			format = FF_UNIX;
 		}
 	}
@@ -935,11 +935,11 @@ static int file_write(struct ast_channel
 
 		/* Line mode */
 		if (args.argc == 5) {
-			if (tolower(args.format[0]) == 'u') {
+			if (tolower((unsigned char)args.format[0]) == 'u') {
 				newline_format = FF_UNIX;
-			} else if (tolower(args.format[0]) == 'm') {
+			} else if (tolower((unsigned char)args.format[0]) == 'm') {
 				newline_format = FF_MAC;
-			} else if (tolower(args.format[0]) == 'd') {
+			} else if (tolower((unsigned char)args.format[0]) == 'd') {
 				newline_format = FF_DOS;
 			}
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__pjsip__aor.c
$NetBSD: patch-funcs_func__pjsip__aor.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_pjsip_aor.c.orig	2018-06-20 14:41:48.304859278 +0000
+++ funcs/func_pjsip_aor.c
@@ -34,13 +34,14 @@
 
 #include "asterisk.h"
 
-#include <pjsip.h>
-#include <pjlib.h>
-
 #include "asterisk/app.h"
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/sorcery.h"
+
+#include <pjsip.h>
+#include <pjlib.h>
+
 #include "asterisk/res_pjsip.h"
 
 /*** DOCUMENTATION

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__pjsip__contact.c
$NetBSD: patch-funcs_func__pjsip__contact.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_pjsip_contact.c.orig	2018-06-20 14:41:26.963425573 +0000
+++ funcs/func_pjsip_contact.c
@@ -34,13 +34,14 @@
 
 #include "asterisk.h"
 
-#include <pjsip.h>
-#include <pjlib.h>
-
 #include "asterisk/app.h"
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/sorcery.h"
+
+#include <pjsip.h>
+#include <pjlib.h>
+
 #include "asterisk/res_pjsip.h"
 
 /*** DOCUMENTATION

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__pjsip__endpoint.c
$NetBSD: patch-funcs_func__pjsip__endpoint.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_pjsip_endpoint.c.orig	2018-06-20 14:41:38.307201390 +0000
+++ funcs/func_pjsip_endpoint.c
@@ -34,14 +34,15 @@
 
 #include "asterisk.h"
 
-#include <pjsip.h>
-#include <pjlib.h>
-
 #include "asterisk/app.h"
 #include "asterisk/pbx.h"
 #include "asterisk/module.h"
 #include "asterisk/channel.h"
 #include "asterisk/sorcery.h"
+
+#include <pjsip.h>
+#include <pjlib.h>
+
 #include "asterisk/res_pjsip.h"
 
 /*** DOCUMENTATION

File Added: pkgsrc/comms/asterisk21/patches/patch-funcs_func__strings.c
$NetBSD: patch-funcs_func__strings.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- funcs/func_strings.c.orig	2018-05-07 17:21:13.413282206 +0000
+++ funcs/func_strings.c
@@ -1483,7 +1483,7 @@ static int string_toupper(struct ast_cha
 {
 	char *bufptr = buf, *dataptr = data;
 
-	while ((bufptr < buf + buflen - 1) && (*bufptr++ = toupper(*dataptr++)));
+	while ((bufptr < buf + buflen - 1) && (*bufptr++ = toupper((unsigned char)*dataptr++)));
 
 	return 0;
 }
@@ -1496,7 +1496,7 @@ static int string_toupper2(struct ast_ch
 		ast_str_make_space(buf, buflen > 0 ? buflen : strlen(data) + 1);
 	}
 	bufptr = ast_str_buffer(*buf);
-	while ((bufptr < ast_str_buffer(*buf) + ast_str_size(*buf) - 1) && (*bufptr++ = toupper(*dataptr++)));
+	while ((bufptr < ast_str_buffer(*buf) + ast_str_size(*buf) - 1) && (*bufptr++ = toupper((unsigned char)*dataptr++)));
 	ast_str_update(*buf);
 
 	return 0;
@@ -1512,7 +1512,7 @@ static int string_tolower(struct ast_cha
 {
 	char *bufptr = buf, *dataptr = data;
 
-	while ((bufptr < buf + buflen - 1) && (*bufptr++ = tolower(*dataptr++)));
+	while ((bufptr < buf + buflen - 1) && (*bufptr++ = tolower((unsigned char)*dataptr++)));
 
 	return 0;
 }
@@ -1525,7 +1525,7 @@ static int string_tolower2(struct ast_ch
 		ast_str_make_space(buf, buflen > 0 ? buflen : strlen(data) + 1);
 	}
 	bufptr = ast_str_buffer(*buf);
-	while ((bufptr < ast_str_buffer(*buf) + ast_str_size(*buf) - 1) && (*bufptr++ = tolower(*dataptr++)));
+	while ((bufptr < ast_str_buffer(*buf) + ast_str_size(*buf) - 1) && (*bufptr++ = tolower((unsigned char)*dataptr++)));
 	ast_str_update(*buf);
 
 	return 0;

File Added: pkgsrc/comms/asterisk21/patches/patch-include_asterisk_autoconfig.h.in
$NetBSD: patch-include_asterisk_autoconfig.h.in,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- include/asterisk/autoconfig.h.in.orig	2016-10-25 19:27:49.000000000 +0000
+++ include/asterisk/autoconfig.h.in
@@ -945,6 +945,12 @@
 /* Define to 1 if you have the `strstr' function. */
 #undef HAVE_STRSTR
 
+/* Define to 1 if you have the `strftime_l' function. */
+#undef HAVE_STRFTIME_L
+
+/* Define to 1 if you have the `strptime_l' function. */
+#undef HAVE_STRPTIME_L
+
 /* Define to 1 if you have the `strtod' function. */
 #undef HAVE_STRTOD
 
@@ -1032,6 +1038,9 @@
 /* Define if your system has the SYSTEMD libraries. */
 #undef HAVE_SYSTEMD
 
+/* Define to 1 if sys/atomic.h atomic operations are supported. */
+#undef HAVE_SYS_ATOMIC_H
+
 /* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
    */
 #undef HAVE_SYS_DIR_H

File Added: pkgsrc/comms/asterisk21/patches/patch-include_asterisk_lock.h
$NetBSD: patch-include_asterisk_lock.h,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- include/asterisk/lock.h.orig	2021-03-04 16:46:08.000000000 +0000
+++ include/asterisk/lock.h
@@ -616,6 +616,17 @@ static void  __attribute__((destructor))
  */
 #define SCOPED_CHANNELLOCK(varname, chan) SCOPED_LOCK(varname, (chan), ast_channel_lock, ast_channel_unlock)
 
+#undef pthread_mutex_lock
+#undef pthread_mutex_unlock
+#undef pthread_mutex_trylock
+#undef pthread_mutex_init
+#undef pthread_mutex_destroy
+#undef pthread_cond_init
+#undef pthread_cond_destroy
+#undef pthread_cond_signal
+#undef pthread_cond_broadcast
+#undef pthread_cond_wait
+#undef pthread_cond_timedwait
 #ifndef __CYGWIN__	/* temporary disabled for cygwin */
 #define pthread_mutex_t		use_ast_mutex_t_instead_of_pthread_mutex_t
 #define pthread_cond_t		use_ast_cond_t_instead_of_pthread_cond_t
@@ -636,7 +647,7 @@ static void  __attribute__((destructor))
 
 #define gethostbyname __gethostbyname__is__not__reentrant__use__ast_gethostbyname__instead__
 
-#ifndef __linux__
+#if !defined(__linux__) && !defined(__DragonFly__)
 #define pthread_create __use_ast_pthread_create_instead__
 #endif
 

File Added: pkgsrc/comms/asterisk21/patches/patch-include_asterisk_strings.h
$NetBSD: patch-include_asterisk_strings.h,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- include/asterisk/strings.h.orig	2018-05-01 20:12:26.000000000 +0000
+++ include/asterisk/strings.h
@@ -1168,7 +1168,7 @@ char *ast_tech_to_upper(char *dev_str),
 	}
 
 	for (pos = dev_str; *pos && *pos != '/'; pos++) {
-		*pos = toupper(*pos);
+		*pos = toupper((unsigned char)*pos);
 	}
 	return dev_str;
 }
@@ -1244,7 +1244,7 @@ static force_inline int attribute_pure a
 	unsigned int hash = 5381;
 
 	while (*str) {
-		hash = hash * 33 ^ (unsigned char) tolower(*str++);
+		hash = hash * 33 ^ tolower((unsigned char)*str++);
 	}
 
 	return ast_str_hash_restrict(hash);
@@ -1265,7 +1265,7 @@ static force_inline char *attribute_pure
 	}
 
 	for (; *str; ++str) {
-		*str = tolower(*str);
+		*str = tolower((unsigned char)*str);
 	}
 
 	return str_orig;
@@ -1286,7 +1286,7 @@ static force_inline char *attribute_pure
 	}
 
 	for (; *str; ++str) {
-		*str = toupper(*str);
+		*str = toupper((unsigned char)*str);
 	}
 
 	return str_orig;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_Makefile
$NetBSD: patch-main_Makefile,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/Makefile.orig	2021-03-04 16:46:08.000000000 +0000
+++ main/Makefile
@@ -97,6 +97,10 @@ ifeq ($(OSARCH),OpenBSD)
   AST_LIBS+=-lcrypto -lpthread -lm
 endif
 
+ifeq ($(OSARCH),dragonfly)
+  AST_LIBS+=-lpthread
+endif
+
 ifeq ($(OSARCH),SunOS)
   AST_LIBS+=-lpthread -ldl -lrt -lnsl -lsocket -lresolv
   ASTSSL_LIBS+=-L/opt/ssl/lib -L/usr/local/ssl/lib
@@ -243,7 +247,7 @@ libasteriskpj.o: _ASTCFLAGS+=$(PJPROJECT
 ifeq ($(PJPROJECT_BUNDLED),yes)
 
 ASTPJ_SO_VERSION=2
-ASTPJ_LDLIBS=-L. -lasteriskpj
+ASTPJ_LDLIBS=${COMPILER_RPATH_FLAG}${PREFIX}/lib/asterisk -L. -lasteriskpj
 
 PJDIR=$(ASTTOPDIR)/$(PJPROJECT_DIR)/source
 -include $(ASTTOPDIR)/$(PJPROJECT_DIR)/build.mak
@@ -330,10 +334,10 @@ bininstall:
 	$(INSTALL) -m 755 $(MAIN_TGT) "$(DESTDIR)$(ASTSBINDIR)/"
 ifeq ($(AST_ASTERISKSSL),yes)
 ifeq ($(findstring darwin,$(OSARCH)),) # not Darwin
-	$(INSTALL) -m 755 $(ASTSSL_LIB).$(ASTSSL_SO_VERSION) "$(DESTDIR)$(ASTLIBDIR)/"
-	$(LN) -sf $(ASTSSL_LIB).$(ASTSSL_SO_VERSION) "$(DESTDIR)$(ASTLIBDIR)/$(ASTSSL_LIB)"
+	$(INSTALL) -m 755 $(ASTSSL_LIB).$(ASTSSL_SO_VERSION) "$(DESTDIR)$(PREFIX)/lib/"
+	$(LN) -sf $(ASTSSL_LIB).$(ASTSSL_SO_VERSION) "$(DESTDIR)$(PREFIX)/lib/$(ASTSSL_LIB)"
 else # Darwin
-	$(INSTALL) -m 755 $(ASTSSL_LIB) "$(DESTDIR)$(ASTLIBDIR)/"
+	$(INSTALL) -m 755 $(ASTSSL_LIB) "$(DESTDIR)$(PREFIX)/lib/"
 endif
 endif
 ifeq ($(PJPROJECT_BUNDLED),yes)

File Added: pkgsrc/comms/asterisk21/patches/patch-main_acl.c
$NetBSD: patch-main_acl.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/acl.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/acl.c
@@ -127,7 +127,7 @@ static int get_local_address(struct ast_
 	char *buf = NULL;
 	int bufsz, x;
 #endif /* SOLARIS */
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__GLIBC__)
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__DragonFly__) || defined(__GLIBC__)
 	struct ifaddrs *ifap, *ifaphead;
 	int rtnerr;
 	const struct sockaddr_in *sin;
@@ -136,7 +136,7 @@ static int get_local_address(struct ast_
 	int best_score = -100;
 	memset(&best_addr, 0, sizeof(best_addr));
 
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__GLIBC__)
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__DragonFly__) || defined(__GLIBC__)
 	rtnerr = getifaddrs(&ifaphead);
 	if (rtnerr) {
 		perror(NULL);
@@ -147,7 +147,7 @@ static int get_local_address(struct ast_
 	s = socket(AF_INET, SOCK_STREAM, 0);
 
 	if (s > 0) {
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__GLIBC__)
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__DragonFly__) || defined(__GLIBC__)
 		for (ifap = ifaphead; ifap; ifap = ifap->ifa_next) {
 
 			if (ifap->ifa_addr && ifap->ifa_addr->sa_family == AF_INET) {
@@ -206,7 +206,7 @@ static int get_local_address(struct ast_
 
 		close(s);
 	}
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__)
+#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__linux__) || defined(__Darwin__) || defined(__DragonFly__)
 	freeifaddrs(ifaphead);
 #endif /* BSD_OR_LINUX */
 

File Added: pkgsrc/comms/asterisk21/patches/patch-main_app.c
$NetBSD: patch-main_app.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/app.c.orig	2018-05-07 17:23:29.870389813 +0000
+++ main/app.c
@@ -3085,7 +3085,7 @@ int ast_app_parse_timelen(const char *ti
 			break;
 		case 'm':
 		case 'M':
-			if (toupper(u[1]) == 'S') {
+			if (toupper((unsigned char)u[1]) == 'S') {
 				unit = TIMELEN_MILLISECONDS;
 				if (u[2] != '\0') {
 					return -1;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_ast__expr2.c
$NetBSD: patch-main_ast__expr2.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/ast_expr2.c.orig	2018-05-07 17:49:06.171631311 +0000
+++ main/ast_expr2.c
@@ -2545,9 +2545,9 @@ make_str (const char *s)
 		return(NULL);
 	}
 
-	for (i = 0, isint = (isdigit(s[0]) || s[0] == '-' || s[0]=='.'); isint && i < strlen(s); i++)
+	for (i = 0, isint = (isdigit((unsigned char)s[0]) || s[0] == '-' || s[0]=='.'); isint && i < strlen(s); i++)
 	{
-		if (!isdigit(s[i]) && s[i] != '.') {
+		if (!isdigit((unsigned char)s[i]) && s[i] != '.') {
 			isint = 0;
 			break;
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_ast__expr2.y
$NetBSD: patch-main_ast__expr2.y,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/ast_expr2.y.orig	2018-05-07 17:23:43.934750158 +0000
+++ main/ast_expr2.y
@@ -538,9 +538,9 @@ make_str (const char *s)
 		return(NULL);
 	}
 
-	for (i = 0, isint = (isdigit(s[0]) || s[0] == '-' || s[0]=='.'); isint && i < strlen(s); i++)
+	for (i = 0, isint = (isdigit((unsigned char)s[0]) || s[0] == '-' || s[0]=='.'); isint && i < strlen(s); i++)
 	{
-		if (!isdigit(s[i]) && s[i] != '.') {
+		if (!isdigit((unsigned char)s[i]) && s[i] != '.') {
 			isint = 0;
 			break;
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_asterisk.c
$NetBSD: patch-main_asterisk.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/asterisk.c.orig	2019-09-05 13:09:20.000000000 +0000
+++ main/asterisk.c
@@ -852,7 +852,7 @@ int64_t ast_mark(int i, int startstop)
 #define DEFINE_PROFILE_MIN_MAX_VALUES min = 0; \
 	max = prof_data->entries;\
 	if  (a->argc > 3) { /* specific entries */ \
-		if (isdigit(a->argv[3][0])) { \
+		if (isdigit((unsigned char)a->argv[3][0])) { \
 			min = atoi(a->argv[3]); \
 			if (a->argc == 5 && strcmp(a->argv[4], "-")) \
 				max = atoi(a->argv[4]); \
@@ -2274,7 +2274,7 @@ static int remoteconsolehandler(const ch
 	if (!ast_all_zeros(s))
 		ast_el_add_history(s);
 
-	while (isspace(*s)) {
+	while (isspace((unsigned char)*s)) {
 		s++;
 	}
 
@@ -2286,7 +2286,7 @@ static int remoteconsolehandler(const ch
 			ast_safe_system(getenv("SHELL") ? getenv("SHELL") : "/bin/sh");
 		ret = 1;
 	} else if ((strncasecmp(s, "quit", 4) == 0 || strncasecmp(s, "exit", 4) == 0) &&
-	    (s[4] == '\0' || isspace(s[4]))) {
+	    (s[4] == '\0' || isspace((unsigned char)s[4]))) {
 		quit_handler(0, SHUTDOWN_FAST, 0);
 		ret = 1;
 	}
@@ -2949,7 +2949,7 @@ static char *cli_complete(EditLine *edit
 	ptr = (char *)lf->cursor;
 	if (ptr) {
 		while (ptr > lf->buffer) {
-			if (isspace(*ptr)) {
+			if (isspace((unsigned char)*ptr)) {
 				ptr++;
 				break;
 			}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_astmm.c
$NetBSD: patch-main_astmm.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/astmm.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/astmm.c
@@ -1487,7 +1487,7 @@ void __ast_mm_init_phase_2(void)
 
 	mmlog = fopen(filename, "a+");
 	if (mmlog) {
-		fprintf(mmlog, "%ld - New session\n", (long) time(NULL));
+		fprintf(mmlog, "%jd - New session\n", (intmax_t) time(NULL));
 		fflush(mmlog);
 	} else {
 		ast_log(LOG_ERROR, "Could not open malloc debug log file: %s\n", filename);

File Added: pkgsrc/comms/asterisk21/patches/patch-main_bridge__basic.c
$NetBSD: patch-main_bridge__basic.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/bridge_basic.c.orig	2018-05-07 17:25:08.340535041 +0000
+++ main/bridge_basic.c
@@ -167,7 +167,7 @@ static int build_dtmf_features(struct as
 	size_t number_of_missing_features = 0;
 
 	for (feature = features; *feature; feature++) {
-		if (!isupper(*feature)) {
+		if (!isupper((unsigned char)*feature)) {
 			ast_log(LOG_ERROR, "Features string '%s' rejected because it contains non-uppercase feature.\n", features);
 			return -1;
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_bridge__channel.c
$NetBSD: patch-main_bridge__channel.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

* Fix segfault under NetBSD/aarch64 9.99.80.

--- main/bridge_channel.c.orig	2021-12-09 16:52:10.000000000 +0000
+++ main/bridge_channel.c
@@ -59,6 +59,13 @@
 #include "asterisk/message.h"
 #include "asterisk/core_local.h"
 
+/* XXX, pthread_equal() is misused to compare non-valid thread pointers */
+static int
+pt_pthread_equal(pthread_t t1, pthread_t t2)
+{
+	return t1 == t2;
+}
+
 /*!
  * \brief Used to queue an action frame onto a bridge channel and write an action frame into a bridge.
  * \since 12.0.0
@@ -259,7 +266,7 @@ int ast_bridge_channel_notify_talking(st
  */
 static void bridge_channel_poke(struct ast_bridge_channel *bridge_channel)
 {
-	if (!pthread_equal(pthread_self(), bridge_channel->thread)) {
+	if (!pt_pthread_equal(pthread_self(), bridge_channel->thread)) {
 		/* Wake up the bridge channel thread. */
 		ast_queue_frame(bridge_channel->chan, &ast_null_frame);
 	}
@@ -952,7 +959,7 @@ static int bridge_channel_queue_action_d
 	};
 
 	/* Make sure we don't end up trying to wait on ourself to deliver the frame */
-	ast_assert(!pthread_equal(pthread_self(), bridge_channel->thread));
+	ast_assert(!pt_pthread_equal(pthread_self(), bridge_channel->thread));
 
 	sync_payload = ast_alloca(sync_payload_len);
 	sync_payload->id = ast_atomic_fetchadd_int(&sync_ids, +1);

File Added: pkgsrc/comms/asterisk21/patches/patch-main_callerid.c
$NetBSD: patch-main_callerid.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/callerid.c.orig	2018-05-07 17:25:23.439816235 +0000
+++ main/callerid.c
@@ -233,20 +233,20 @@ void callerid_get_dtmf(char *cidstring, 
 		for (i = 1; i < strlen(cidstring); i++) {
 			if (cidstring[i] == 'C' || cidstring[i] == '#')
 				break;
-			if (isdigit(cidstring[i]))
+			if (isdigit((unsigned char)cidstring[i]))
 				number[i-1] = cidstring[i];
 			else
 				ast_debug(1, "Unknown CID digit '%c'\n",
 					cidstring[i]);
 		}
 		number[i-1] = 0;
-	} else if (isdigit(cidstring[0])) {
+	} else if (isdigit((unsigned char)cidstring[0])) {
 		/* It begins with a digit, so we parse it as a number and hope
 		 * for the best */
 		ast_log(LOG_WARNING, "Couldn't detect start-character. CID "
 			"parsing might be unreliable\n");
 		for (i = 0; i < strlen(cidstring); i++) {
-			if (isdigit(cidstring[i]))
+			if (isdigit((unsigned char)cidstring[i]))
 				number[i] = cidstring[i];
 			else
 				break;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_cdr.c
$NetBSD: patch-main_cdr.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/cdr.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/cdr.c
@@ -2787,7 +2787,7 @@ static const char *cdr_format_var_intern
 static void cdr_get_tv(struct timeval when, const char *fmt, char *buf, int bufsize)
 {
 	if (fmt == NULL) {	/* raw mode */
-		snprintf(buf, bufsize, "%ld.%06ld", (long)when.tv_sec, (long)when.tv_usec);
+		snprintf(buf, bufsize, "%jd.%06ld", (intmax_t)when.tv_sec, (long)when.tv_usec);
 	} else {
 		buf[0] = '\0';/* Ensure the buffer is initialized. */
 		if (when.tv_sec) {
@@ -2833,9 +2833,9 @@ void ast_cdr_format_var(struct ast_cdr *
 	} else if (!strcasecmp(name, "end")) {
 		cdr_get_tv(cdr->end, raw ? NULL : fmt, workspace, workspacelen);
 	} else if (!strcasecmp(name, "duration")) {
-		snprintf(workspace, workspacelen, "%ld", cdr->end.tv_sec != 0 ? cdr->duration : (long)ast_tvdiff_ms(ast_tvnow(), cdr->start) / 1000);
+		snprintf(workspace, workspacelen, "%jd", cdr->end.tv_sec != 0 ? cdr->duration : (intmax_t)ast_tvdiff_ms(ast_tvnow(), cdr->start) / 1000);
 	} else if (!strcasecmp(name, "billsec")) {
-		snprintf(workspace, workspacelen, "%ld", (cdr->billsec || !ast_tvzero(cdr->end) || ast_tvzero(cdr->answer)) ? cdr->billsec : (long)ast_tvdiff_ms(ast_tvnow(), cdr->answer) / 1000);
+		snprintf(workspace, workspacelen, "%jd", (cdr->billsec || !ast_tvzero(cdr->end) || ast_tvzero(cdr->answer)) ? cdr->billsec : (intmax_t)ast_tvdiff_ms(ast_tvnow(), cdr->answer) / 1000);
 	} else if (!strcasecmp(name, "disposition")) {
 		if (raw) {
 			snprintf(workspace, workspacelen, "%ld", cdr->disposition);

File Added: pkgsrc/comms/asterisk21/patches/patch-main_cel.c
$NetBSD: patch-main_cel.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/cel.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/cel.c
@@ -790,7 +790,7 @@ struct ast_channel *ast_cel_fabricate_ch
 	}
 
 	if (ast_strlen_zero(cfg->general->date_format)) {
-		snprintf(timebuf, sizeof(timebuf), "%ld.%06ld", (long) record.event_time.tv_sec,
+		snprintf(timebuf, sizeof(timebuf), "%jd.%06ld", (intmax_t) record.event_time.tv_sec,
 				(long) record.event_time.tv_usec);
 	} else {
 		struct ast_tm tm;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_cli.c
$NetBSD: patch-main_cli.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/cli.c.orig	2018-05-07 17:26:06.732494913 +0000
+++ main/cli.c
@@ -2440,7 +2440,7 @@ static char *parse_args(const char *s, i
 	cur = duplicate;
 
 	/* Remove leading spaces from the command */
-	while (isspace(*s)) {
+	while (isspace((unsigned char)*s)) {
 		cur++;
 		s++;
 	}
@@ -2627,7 +2627,7 @@ struct ast_vector_string *ast_cli_comple
 			continue;
 		}
 
-		while (i < max_equal && toupper(prevstr[i]) == toupper(retstr[i])) {
+		while (i < max_equal && toupper((unsigned char)prevstr[i]) == toupper((unsigned char)retstr[i])) {
 			i++;
 		}
 

File Added: pkgsrc/comms/asterisk21/patches/patch-main_config.c
$NetBSD: patch-main_config.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/config.c.orig	2024-03-25 05:41:31.131220754 +0000
+++ main/config.c
@@ -44,6 +44,7 @@
 #include <libgen.h>
 #include <time.h>
 #include <sys/stat.h>
+#include <sys/wait.h>
 
 #include <math.h>	/* HUGE_VAL */
 #include <regex.h>

File Added: pkgsrc/comms/asterisk21/patches/patch-main_conversions.c
$NetBSD: patch-main_conversions.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/conversions.c.orig	2021-03-04 16:46:08.000000000 +0000
+++ main/conversions.c
@@ -37,7 +37,7 @@ static int str_is_negative(const char **
 	 * Ignore any preceding white space. It's okay to move the pointer here
 	 * since the converting function would do the same, i.e. skip white space.
 	 */
-	while (isspace(**str)) ++*str;
+	while (isspace((unsigned char)**str)) ++*str;
 	return **str == '-';
 }
 

File Added: pkgsrc/comms/asterisk21/patches/patch-main_dns__naptr.c
$NetBSD: patch-main_dns__naptr.c,v 1.1 2024/04/08 03:20:08 jnemeth Exp $

--- main/dns_naptr.c.orig	2018-05-07 17:26:59.602834230 +0000
+++ main/dns_naptr.c
@@ -78,7 +78,7 @@ static enum flags_result interpret_flags
 				*flags == 'a' || *flags == 'A' ||
 				*flags == 'u' || *flags == 'U') {
 			return FLAGS_TERMINAL;
-		} else if (!isalnum(*flags)) {
+		} else if (!isalnum((unsigned char)*flags)) {
 			return FLAGS_INVALID;
 		} else {
 			return FLAGS_UNKNOWN;
@@ -90,7 +90,7 @@ static enum flags_result interpret_flags
 	 * S, A, U, and P flags together.
 	 */
 	for (i = 0; i < flags_size; ++i) {
-		if (!isalnum(flags[i])) {
+		if (!isalnum((unsigned char)flags[i])) {
 			return FLAGS_INVALID;
 		} else if (flags[i] == 's' || flags[i] == 'S') {
 			if (known_flag_found && known_flag_found != 's') {
@@ -146,7 +146,7 @@ static int services_invalid(const char *
 		uint8_t current_size = plus_pos ? plus_pos - current_pos : end_of_services - current_pos;
 		int i;
 
-		if (!isalpha(current_pos[0])) {
+		if (!isalpha((unsigned char)current_pos[0])) {
 			return -1;
 		}
 
@@ -155,7 +155,7 @@ static int services_invalid(const char *
 		}
 
 		for (i = 1; i < current_size; ++i) {
-			if (!isalnum(current_pos[i])) {
+			if (!isalnum((unsigned char)current_pos[i])) {
 				return -1;
 			}
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_enum.c
$NetBSD: patch-main_enum.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/enum.c.orig	2021-03-04 16:46:08.000000000 +0000
+++ main/enum.c
@@ -219,7 +219,7 @@ static int blr_txt(const char *cc, const
 	ast_mutex_unlock(&enumlock);
 
 	for (p2 = (char *) cc + strlen(cc) - 1; p2 >= cc; p2--) {
-		if (isdigit(*p2)) {
+		if (isdigit((unsigned char)*p2)) {
 			*p1++ = *p2;
 			*p1++ = '.';
 		}
@@ -348,7 +348,7 @@ static int blr_ebl(const char *cc, const
 	ast_mutex_unlock(&enumlock);
 
 	for (p2 = (char *) cc + strlen(cc) - 1; p2 >= cc; p2--) {
-		if (isdigit(*p2)) {
+		if (isdigit((unsigned char)*p2)) {
 			*p1++ = *p2;
 			*p1++ = '.';
 		}
@@ -458,7 +458,7 @@ static int parse_naptr(unsigned char *ds
 		naptrinput, flags, services, regexp, repl);
 
 
-	if (tolower(flags[0]) != 'u') {
+	if (tolower((unsigned char)flags[0]) != 'u') {
 		ast_log(LOG_WARNING, "NAPTR Flag must be 'U' or 'u'.\n");
 		return -1;
 	}
@@ -551,7 +551,7 @@ static int parse_naptr(unsigned char *ds
 	 * beginning and ending indexes of the substring to insert as the backreference.
 	 * if no backreference is found, continue copying the subst into tempdst */
 	while (*subst && (d_len > 0)) {
-		if ((subst[0] == '\\') && isdigit(subst[1])) { /* is this character the beginning of a backreference */
+		if ((subst[0] == '\\') && isdigit((unsigned char)subst[1])) { /* is this character the beginning of a backreference */
 			matchindex = (int) (subst[1] - '0');
 			if (matchindex >= ARRAY_LEN(pmatch)) {
 				ast_log(LOG_WARNING, "Error during regex substitution. Invalid pmatch index.\n");
@@ -573,7 +573,7 @@ static int parse_naptr(unsigned char *ds
 				ast_log(LOG_WARNING, "Error during regex substitution. Invalid backreference index.\n");
 				return -1;
 			}
-		} else if (isprint(*subst)) {
+		} else if (isprint((unsigned char)*subst)) {
 			*d++ = *subst++;
 			d_len--;
 		} else {
@@ -830,7 +830,7 @@ int ast_get_enum(struct ast_channel *cha
 
 		p1 = middle + strlen(middle);
 		for (p2 = (char *) number + sdl - 1; p2 >= number; p2--) {
-			if (isdigit(*p2)) {
+			if (isdigit((unsigned char)*p2)) {
 				*p1++ = *p2;
 				*p1++ = '.';
 			}
@@ -849,7 +849,7 @@ int ast_get_enum(struct ast_channel *cha
 	/* flip left into domain */
 	p1 = domain;
 	for (p2 = left + strlen(left); p2 >= left; p2--) {
-		if (isdigit(*p2)) {
+		if (isdigit((unsigned char)*p2)) {
 			*p1++ = *p2;
 			*p1++ = '.';
 		}
@@ -973,7 +973,7 @@ static char *format_numeric_domain(const
 
 	if (buffer) {
 		while (src >= number) {
-			if (isdigit(*src)) {
+			if (isdigit((unsigned char)*src)) {
 				*dst++ = *src;
 				*dst++ = '.';
 			}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_features.c
$NetBSD: patch-main_features.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/features.c.orig	2018-05-07 17:28:38.342590540 +0000
+++ main/features.c
@@ -387,13 +387,13 @@ static void set_bridge_features_on_confi
 	for (feature = features; *feature; feature++) {
 		struct ast_flags *party;
 
-		if (isupper(*feature)) {
+		if (isupper((unsigned char)*feature)) {
 			party = &config->features_caller;
 		} else {
 			party = &config->features_callee;
 		}
 
-		switch (tolower(*feature)) {
+		switch (tolower((unsigned char)*feature)) {
 		case 't' :
 			ast_set_flag(party, AST_FEATURE_REDIRECT);
 			break;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_http.c
$NetBSD: patch-main_http.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/http.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/http.c
@@ -304,7 +304,7 @@ static int static_callback(struct ast_tc
 	}
 
 	/* make "Etag:" http header value */
-	snprintf(etag, sizeof(etag), "\"%ld\"", (long)st.st_mtime);
+	snprintf(etag, sizeof(etag), "\"%jd\"", (intmax_t)st.st_mtime);
 
 	/* make "Last-Modified:" http header value */
 	tv.tv_sec = st.st_mtime;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_indications.c
$NetBSD: patch-main_indications.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/indications.c.orig	2021-03-04 16:46:08.000000000 +0000
+++ main/indications.c
@@ -908,7 +908,7 @@ static void store_tone_zone_ring_cadence
 
 		ring = ast_strip(ring);
 
-		if (!isdigit(ring[0]) || (value = atoi(ring)) == -1) {
+		if (!isdigit((unsigned char)ring[0]) || (value = atoi(ring)) == -1) {
 			ast_log(LOG_WARNING, "Invalid ringcadence given '%s'.\n", ring);
 			continue;
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_logger.c
$NetBSD: patch-main_logger.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/logger.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/logger.c
@@ -674,7 +674,7 @@ void ast_queue_log(const char *queuename
 
 	if (qlog) {
 		va_start(ap, fmt);
-		qlog_len = snprintf(qlog_msg, sizeof(qlog_msg), "%ld|%s|%s|%s|%s|", (long)time(NULL), callid, queuename, agent, event);
+		qlog_len = snprintf(qlog_msg, sizeof(qlog_msg), "%jd|%s|%s|%s|%s|", (intmax_t)time(NULL), callid, queuename, agent, event);
 		vsnprintf(qlog_msg + qlog_len, sizeof(qlog_msg) - qlog_len, fmt, ap);
 		va_end(ap);
 		AST_RWLIST_RDLOCK(&logchannels);
@@ -714,7 +714,7 @@ static int rotate_file(const char *filen
 		}
 		break;
 	case TIMESTAMP:
-		snprintf(new, sizeof(new), "%s.%ld", filename, (long)time(NULL));
+		snprintf(new, sizeof(new), "%s.%jd", filename, (intmax_t)time(NULL));
 		if (rename(filename, new)) {
 			fprintf(stderr, "Unable to rename file '%s' to '%s'\n", filename, new);
 			res = -1;

File Added: pkgsrc/comms/asterisk21/patches/patch-main_manager.c
$NetBSD: patch-main_manager.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/manager.c.orig	2024-01-25 16:23:00.000000000 +0000
+++ main/manager.c
@@ -2779,7 +2779,7 @@ static char *handle_showmanconn(struct a
 	struct mansession_session *session;
 	time_t now = time(NULL);
 #define HSMCONN_FORMAT1 "  %-15.15s  %-55.55s  %-10.10s  %-10.10s  %-8.8s  %-8.8s  %-10.10s  %-10.10s\n"
-#define HSMCONN_FORMAT2 "  %-15.15s  %-55.55s  %-10d  %-10d  %-8d  %-8d  %-10.10d  %-10.10d\n"
+#define HSMCONN_FORMAT2 "  %-15.15s  %-55.55s  %-10jd  %-10jd  %-8d  %-8d  %-10.10d  %-10.10d\n"
 	int count = 0;
 	struct ao2_iterator i;
 
@@ -2805,8 +2805,8 @@ static char *handle_showmanconn(struct a
 			ao2_lock(session);
 			ast_cli(a->fd, HSMCONN_FORMAT2, session->username,
 				ast_sockaddr_stringify_addr(&session->addr),
-				(int) (session->sessionstart),
-				(int) (now - session->sessionstart),
+				(intmax_t) (session->sessionstart),
+				(intmax_t) (now - session->sessionstart),
 				session->stream ? ast_iostream_get_fd(session->stream) : -1,
 				session->inuse,
 				session->readperm,
@@ -3732,9 +3732,9 @@ static int action_ping(struct mansession
 	astman_append(
 		s,
 		"Ping: Pong\r\n"
-		"Timestamp: %ld.%06lu\r\n"
+		"Timestamp: %jd.%06lu\r\n"
 		"\r\n",
-		(long) now.tv_sec, (unsigned long) now.tv_usec);
+		(intmax_t) now.tv_sec, (unsigned long) now.tv_usec);
 	return 0;
 }
 
@@ -4936,7 +4936,7 @@ static void generate_status(struct manse
 		"DNID: %s\r\n"
 		"EffectiveConnectedLineNum: %s\r\n"
 		"EffectiveConnectedLineName: %s\r\n"
-		"TimeToHangup: %ld\r\n"
+		"TimeToHangup: %jd\r\n"
 		"BridgeID: %s\r\n"
 		"Application: %s\r\n"
 		"Data: %s\r\n"
@@ -4956,7 +4956,7 @@ static void generate_status(struct manse
 		S_OR(ast_channel_dialed(chan)->number.str, ""),
 		S_COR(effective_id.number.valid, effective_id.number.str, "<unknown>"),
 		S_COR(effective_id.name.valid, effective_id.name.str, "<unknown>"),
-		(long)ast_channel_whentohangup(chan)->tv_sec,
+		(intmax_t)ast_channel_whentohangup(chan)->tv_sec,
 		bridge ? bridge->uniqueid : "",
 		ast_channel_appl(chan),
 		ast_channel_data(chan),
@@ -7816,8 +7816,8 @@ static int __attribute__((format(printf,
 	if (timestampevents) {
 		now = ast_tvnow();
 		ast_str_append(&buf, 0,
-			"Timestamp: %ld.%06lu\r\n",
-			(long)now.tv_sec, (unsigned long) now.tv_usec);
+			"Timestamp: %jd.%06lu\r\n",
+			(intmax_t)now.tv_sec, (unsigned long) now.tv_usec);
 	}
 	if (manager_debug) {
 		static int seq;
@@ -8329,13 +8329,13 @@ static void xml_copy_escape(struct ast_s
 		}
 
 		if (mode & 2) {
-			if (save == src && isdigit(*src)) {
+			if (save == src && isdigit((unsigned char)*src)) {
 				/* The first character of an XML attribute cannot be a digit */
 				*dst++ = '_';
 				*dst++ = *src;
 				space -= 2;
 				continue;
-			} else if (!isalnum(*src)) {
+			} else if (!isalnum((unsigned char)*src)) {
 				/* Replace non-alphanumeric with an underscore */
 				*dst++ = '_';
 				space--;
@@ -8370,7 +8370,7 @@ static void xml_copy_escape(struct ast_s
 			break;
 
 		default:
-			*dst++ = mode ? tolower(*src) : *src;
+			*dst++ = mode ? tolower((unsigned char)*src) : *src;
 			space--;
 		}
 	}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_pbx.c
$NetBSD: patch-main_pbx.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/pbx.c.orig	2016-04-20 10:46:18.000000000 +0000
+++ main/pbx.c
@@ -7973,7 +7973,7 @@ static int testtime_write(struct ast_cha
 	sscanf(remainder, "%79s", timezone);
 	tv = ast_mktime(&tm, S_OR(timezone, NULL));
 
-	snprintf(result, sizeof(result), "%ld", (long) tv.tv_sec);
+	snprintf(result, sizeof(result), "%jd", (intmax_t) tv.tv_sec);
 	pbx_builtin_setvar_helper(chan, "__TESTTIME", result);
 	return 0;
 }

File Added: pkgsrc/comms/asterisk21/patches/patch-main_pbx__builtins.c
$NetBSD: patch-main_pbx__builtins.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/pbx_builtins.c.orig	2024-01-25 16:23:00.000000000 +0000
+++ main/pbx_builtins.c
@@ -898,7 +898,7 @@ static int pbx_builtin_gotoiftime(struct
 	struct ast_timing timing;
 	const char *ctime;
 	struct timeval tv = ast_tvnow();
-	long timesecs;
+	int64_t timesecs;
 
 	if (!chan) {
 		ast_log(LOG_WARNING, "GotoIfTime requires a channel on which to operate\n");
@@ -913,8 +913,8 @@ static int pbx_builtin_gotoiftime(struct
 	ts = s = ast_strdupa(data);
 
 	ast_channel_lock(chan);
-	if ((ctime = pbx_builtin_getvar_helper(chan, "TESTTIME")) && sscanf(ctime, "%ld", &timesecs) == 1) {
-		tv.tv_sec = timesecs;
+	if ((ctime = pbx_builtin_getvar_helper(chan, "TESTTIME")) && sscanf(ctime, "%" SCNd64, &timesecs) == 1) {
+		tv.tv_sec = (time_t)timesecs;
 	} else if (ctime) {
 		ast_log(LOG_WARNING, "Using current time to evaluate\n");
 		/* Reset when unparseable */

File Added: pkgsrc/comms/asterisk21/patches/patch-main_pbx__timing.c
$NetBSD: patch-main_pbx__timing.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/pbx_timing.c.orig	2018-05-07 17:30:09.949079213 +0000
+++ main/pbx_timing.c
@@ -137,7 +137,7 @@ static void get_timerange(struct ast_tim
 		}
 		*endpart++ = '\0';
 		/* why skip non digits? Mostly to skip spaces */
-		while (*endpart && !isdigit(*endpart)) {
+		while (*endpart && !isdigit((unsigned char)*endpart)) {
 			endpart++;
 		}
 		if (!*endpart) {

File Added: pkgsrc/comms/asterisk21/patches/patch-main_sched.c
$NetBSD: patch-main_sched.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/sched.c.orig	2018-05-01 20:12:26.000000000 +0000
+++ main/sched.c
@@ -498,7 +498,7 @@ static int sched_settime(struct timeval 
 		ast_assert(0);
 	}
 
-	/*ast_debug(1, "TV -> %lu,%lu\n", tv->tv_sec, tv->tv_usec);*/
+	/*ast_debug(1, "TV -> %jd,%lu\n", (intmax_t)tv->tv_sec, tv->tv_usec);*/
 	if (ast_tvzero(*t))	/* not supplied, default to now */
 		*t = now;
 	*t = ast_tvadd(*t, ast_samp2tv(when, 1000));
@@ -732,11 +732,11 @@ void ast_sched_dump(struct ast_sched_con
 		struct timeval delta;
 		q = ast_heap_peek(con->sched_heap, x);
 		delta = ast_tvsub(q->when, when);
-		ast_log(LOG_DEBUG, "|%.4d | %-15p | %-15p | %.6ld : %.6ld |\n",
+		ast_log(LOG_DEBUG, "|%.4d | %-15p | %-15p | %.6jd : %.6ld |\n",
 			q->sched_id->id,
 			q->callback,
 			q->data,
-			(long)delta.tv_sec,
+			(intmax_t)delta.tv_sec,
 			(long int)delta.tv_usec);
 	}
 	ast_mutex_unlock(&con->lock);

File Added: pkgsrc/comms/asterisk21/patches/patch-main_stdtime_localtime.c
$NetBSD: patch-main_stdtime_localtime.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/stdtime/localtime.c.orig	2018-05-01 20:12:26.000000000 +0000
+++ main/stdtime/localtime.c
@@ -65,6 +65,10 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #endif
+#ifdef __sun
+#include <time.h>
+#include <xlocale.h>
+#endif
 
 #include "private.h"
 #include "tzfile.h"
@@ -74,6 +78,7 @@
 #include "asterisk/localtime.h"
 #include "asterisk/strings.h"
 #include "asterisk/linkedlists.h"
+#include "asterisk/autoconfig.h"
 #include "asterisk/utils.h"
 #include "asterisk/test.h"
 
@@ -310,7 +315,7 @@ static struct state *	sstate_alloc(void)
 static void		sstate_free(struct state *p);
 
 static AST_LIST_HEAD_STATIC(zonelist, state);
-#if defined(HAVE_NEWLOCALE) && defined(HAVE_USELOCALE)
+#if defined(HAVE_NEWLOCALE) && (defined(HAVE_USELOCALE) || HAVE_STRFTIME_L || HAVE_STRPTIME_L)
 static AST_LIST_HEAD_STATIC(localelist, locale_entry);
 #endif
 
@@ -731,7 +736,7 @@ static void *notify_daemon(void *data)
 			if (st.st_mtime > cur->mtime[0] || lst.st_mtime > cur->mtime[1]) {
 #ifdef TEST_FRAMEWORK
 				if (test) {
-					ast_test_status_update(test, "Removing cached TZ entry '%s' because underlying file changed. (%ld != %ld) or (%ld != %ld)\n", name, st.st_mtime, cur->mtime[0], lst.st_mtime, cur->mtime[1]);
+					ast_test_status_update(test, "Removing cached TZ entry '%s' because underlying file changed. (%jd != %jd) or (%jd != %jd)\n", name, (intmax_t)st.st_mtime, (intmax_t)cur->mtime[0], (intmax_t)lst.st_mtime, (intmax_t)cur->mtime[1]);
 				} else
 #endif
 				{
@@ -2362,7 +2367,8 @@ struct timeval ast_mktime(struct ast_tm 
 	return time1(tmp, localsub, 0L, sp);
 }
 
-#if defined(HAVE_NEWLOCALE) && defined(HAVE_USELOCALE)
+#if defined(HAVE_NEWLOCALE) && (defined(HAVE_USELOCALE) || HAVE_STRFTIME_L || HAVE_STRPTIME_L)
+#if defined HAVE_USELOCALE
 static struct locale_entry *find_by_locale(locale_t locale)
 {
 	struct locale_entry *cur;
@@ -2373,6 +2379,7 @@ static struct locale_entry *find_by_loca
 	}
 	return NULL;
 }
+#endif
 
 static struct locale_entry *find_by_name(const char *name)
 {
@@ -2385,6 +2392,23 @@ static struct locale_entry *find_by_name
 	return NULL;
 }
 
+#if HAVE_STRFTIME_L || HAVE_STRPTIME_L
+static locale_t ast_getlocale(const char *locale)
+{
+	struct locale_entry *cur;
+
+	AST_LIST_LOCK(&localelist);
+	if ((cur = find_by_name(locale)) == NULL) {
+		cur->locale = newlocale(LC_ALL_MASK, locale, NULL);
+		strcpy(cur->name, locale); /* SAFE */
+		AST_LIST_INSERT_TAIL(&localelist, cur, list);
+	}
+	AST_LIST_UNLOCK(&localelist);
+	return cur->locale;
+}
+#endif
+
+#if !HAVE_STRFTIME_L || !HAVE_STRPTIME_L
 static const char *store_by_locale(locale_t prevlocale)
 {
 	struct locale_entry *cur;
@@ -2442,6 +2466,7 @@ const char *ast_setlocale(const char *lo
 	AST_LIST_UNLOCK(&localelist);
 	return store_by_locale(prevlocale);
 }
+#endif
 #else
 const char *ast_setlocale(const char *unused)
 {
@@ -2455,7 +2480,9 @@ int ast_strftime_locale(char *buf, size_
 	char *format = ast_calloc(1, fmtlen), *fptr = format, *newfmt;
 	int decimals = -1, i, res;
 	long fraction;
+#if !HAVE_STRFTIME_L
 	const char *prevlocale;
+#endif
 
 	buf[0] = '\0';/* Ensure the buffer is initialized. */
 	if (!format) {
@@ -2510,6 +2537,14 @@ defcase:	*fptr++ = *tmp;
 	}
 	*fptr = '\0';
 #undef strftime
+#if HAVE_STRFTIME_L
+	if (locale) {
+		locale_t l = ast_getlocale(locale);
+		res = (int)strftime_l(buf, len, format, (struct tm *)tm, l);
+	} else {
+		res = (int)strftime(buf, len, format, (struct tm *)tm);
+	}
+#else
 	if (locale) {
 		prevlocale = ast_setlocale(locale);
 	}
@@ -2517,6 +2552,7 @@ defcase:	*fptr++ = *tmp;
 	if (locale) {
 		ast_setlocale(prevlocale);
 	}
+#endif
 	ast_free(format);
 	return res;
 }
@@ -2530,11 +2566,22 @@ char *ast_strptime_locale(const char *s,
 {
 	struct tm tm2 = { 0, };
 	char *res;
+#if !HAVE_STRPTIME_L
 	const char *prevlocale;
+#endif
 
+#if HAVE_STRPTIME_L
+	if (locale) {
+		locale_t l = ast_getlocale(locale);
+		res = strptime_l(s, format, &tm2, l);
+	} else {
+		res = strptime(s, format, &tm2);
+	}
+#else
 	prevlocale = ast_setlocale(locale);
 	res = strptime(s, format, &tm2);
 	ast_setlocale(prevlocale);
+#endif
 	/* ast_time and tm are not the same size - tm is a subset of
 	 * ast_time.  Hence, the size of tm needs to be used for the
 	 * memcpy

File Added: pkgsrc/comms/asterisk21/patches/patch-main_taskprocessor.c
$NetBSD: patch-main_taskprocessor.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

* Fix segfault under NetBSD/aarch64 9.99.80.

--- main/taskprocessor.c.orig	2021-01-21 16:28:04.000000000 +0000
+++ main/taskprocessor.c
@@ -37,6 +37,13 @@
 #include "asterisk/taskprocessor.h"
 #include "asterisk/sem.h"
 
+/* XXX, pthread_equal() is misused to compare non-valid thread pointers */
+static int
+pt_pthread_equal(pthread_t t1, pthread_t t2)
+{
+	return t1 == t2;
+}
+
 /*!
  * \brief tps_task structure is queued to a taskprocessor
  *
@@ -263,7 +270,7 @@ static void default_listener_shutdown(st
 
 	ast_assert(pvt->poll_thread != AST_PTHREADT_NULL);
 
-	if (pthread_equal(pthread_self(), pvt->poll_thread)) {
+	if (pt_pthread_equal(pthread_self(), pvt->poll_thread)) {
 		res = pthread_detach(pvt->poll_thread);
 		if (res != 0) {
 			ast_log(LOG_ERROR, "pthread_detach(): %s\n", strerror(errno));
@@ -1268,7 +1275,7 @@ int ast_taskprocessor_is_task(struct ast
 	int is_task;
 
 	ao2_lock(tps);
-	is_task = pthread_equal(tps->thread, pthread_self());
+	is_task = pt_pthread_equal(tps->thread, pthread_self());
 	ao2_unlock(tps);
 	return is_task;
 }

File Added: pkgsrc/comms/asterisk21/patches/patch-main_tdd.c
$NetBSD: patch-main_tdd.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/tdd.c.orig	2018-05-07 17:30:59.571540797 +0000
+++ main/tdd.c
@@ -313,7 +313,7 @@ int tdd_generate(struct tdd_state *tdd, 
 		if ( (tdd->charnum++) % 72 == 0)
 			PUT_TDD(tdd->mode ? 27 /* FIGS */ : 31 /* LTRS */);
 
-		c = toupper(str[x]);
+		c = toupper((unsigned char)str[x]);
 #if	0
 		printf("%c",c); fflush(stdout);
 #endif

File Added: pkgsrc/comms/asterisk21/patches/patch-main_test.c
$NetBSD: patch-main_test.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/test.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ main/test.c
@@ -975,7 +975,7 @@ static char *test_cli_generate_results(s
 			if (!(buf = ast_str_create(256))) {
 				return NULL;
 			}
-			ast_str_set(&buf, 0, "%s/asterisk_test_results-%ld.%s", ast_config_AST_LOG_DIR, (long) time.tv_sec, type);
+			ast_str_set(&buf, 0, "%s/asterisk_test_results-%jd.%s", ast_config_AST_LOG_DIR, (intmax_t) time.tv_sec, type);
 
 			file = ast_str_buffer(buf);
 		}

File Added: pkgsrc/comms/asterisk21/patches/patch-main_utils.c
$NetBSD: patch-main_utils.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- main/utils.c.orig	2024-03-18 13:25:20.000000000 +0000
+++ main/utils.c
@@ -41,7 +41,11 @@
 #elif defined(__NetBSD__)
 #include <lwp.h>
 #endif
-
+#if defined(HAVE_GETIFADDRS)
+#include <ifaddrs.h>
+#include <net/if_dl.h>
+#endif
+ 
 #include "asterisk/network.h"
 #include "asterisk/ast_version.h"
 
@@ -213,7 +217,7 @@ struct hostent *ast_gethostbyname(const 
 	while (s && *s) {
 		if (*s == '.')
 			dots++;
-		else if (!isdigit(*s))
+		else if (!isdigit((unsigned char)*s))
 			break;
 		s++;
 	}
@@ -937,7 +941,7 @@ const char *ast_inet_ntoa(struct in_addr
 
 static int dev_urandom_fd = -1;
 
-#ifndef __linux__
+#if !defined(__linux__) && !defined(__DragonFly__)
 #undef pthread_create /* For ast_pthread_create function only */
 #endif /* !__linux__ */
 
@@ -2238,13 +2242,13 @@ int ast_false(const char *s)
 static struct timeval tvfix(struct timeval a)
 {
 	if (a.tv_usec >= ONE_MILLION) {
-		ast_log(LOG_WARNING, "warning too large timestamp %ld.%ld\n",
-			(long)a.tv_sec, (long int) a.tv_usec);
+		ast_log(LOG_WARNING, "warning too large timestamp %jd.%ld\n",
+			(intmax_t)a.tv_sec, (long int) a.tv_usec);
 		a.tv_sec += a.tv_usec / ONE_MILLION;
 		a.tv_usec %= ONE_MILLION;
 	} else if (a.tv_usec < 0) {
-		ast_log(LOG_WARNING, "warning negative timestamp %ld.%ld\n",
-			(long)a.tv_sec, (long int) a.tv_usec);
+		ast_log(LOG_WARNING, "warning negative timestamp %jd.%ld\n",
+			(intmax_t)a.tv_sec, (long int) a.tv_usec);
 		a.tv_usec = 0;
 	}
 	return a;
@@ -2404,7 +2408,7 @@ char *ast_to_camel_case_delim(const char
 
 	while (front) {
 		size = strlen(front);
-		*front = toupper(*front);
+		*front = toupper((unsigned char)*front);
 		ast_copy_string(buf, front, size + 1);
 		buf += size;
 		front = strtok_r(NULL, delim, &back);

File Added: pkgsrc/comms/asterisk21/patches/patch-menuselect_menuselect.c
$NetBSD: patch-menuselect_menuselect.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- menuselect/menuselect.c.orig	2018-05-07 17:13:49.312815875 +0000
+++ menuselect/menuselect.c
@@ -1461,7 +1461,7 @@ static int generate_makedeps_file(void)
 				}
 
 				for (c = dep->name; *c; c++)
-					fputc(toupper(*c), f);
+					fputc(toupper((unsigned char)*c), f);
 				fputc(' ', f);
 			}
 			AST_LIST_TRAVERSE(&mem->uses, use, list) {
@@ -1477,7 +1477,7 @@ static int generate_makedeps_file(void)
 				}
 
 				for (c = use->name; *c; c++)
-					fputc(toupper(*c), f);
+					fputc(toupper((unsigned char)*c), f);
 				fputc(' ', f);
 			}
 

File Added: pkgsrc/comms/asterisk21/patches/patch-pbx_pbx__config.c
$NetBSD: patch-pbx_pbx__config.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- pbx/pbx_config.c.orig	2018-05-07 17:17:05.322793470 +0000
+++ pbx/pbx_config.c
@@ -237,7 +237,7 @@ static const char *skip_words(const char
 {
 	int in_blank = 0;
 	for (;n && *p; p++) {
-		if (isblank(*p) /* XXX order is important */ && !in_blank) {
+		if (isblank((unsigned char)*p) /* XXX order is important */ && !in_blank) {
 			n--;	/* one word is gone */
 			in_blank = 1;
 		} else if (/* !is_blank(*p), we know already, && */ in_blank) {
@@ -447,7 +447,7 @@ static char *handle_cli_dialplan_remove_
 		if (!strcmp("hint", c))
 			removing_priority = PRIORITY_HINT;
 		else {
-			while (*c && isdigit(*c))
+			while (*c && isdigit((unsigned char)*c))
 				c++;
 			if (*c) { /* non-digit in string */
 				ast_cli(a->fd, "Invalid priority '%s'\n", a->argv[4]);

File Added: pkgsrc/comms/asterisk21/patches/patch-pbx_pbx__dundi.c
$NetBSD: patch-pbx_pbx__dundi.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- pbx/pbx_dundi.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ pbx/pbx_dundi.c
@@ -47,7 +47,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revisi
 #include <pthread.h>
 #include <net/if.h>
 
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__Darwin__)
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__Darwin__) || defined(__DragonFly__)
 #include <net/if_dl.h>
 #include <ifaddrs.h>
 #include <signal.h>
@@ -885,7 +885,7 @@ static int cache_save_hint(dundi_eid *ei
 
 	time(&timeout);
 	timeout += expiration;
-	snprintf(data, sizeof(data), "%ld|", (long)(timeout));
+	snprintf(data, sizeof(data), "%jd|", (intmax_t)(timeout));
 
 	ast_db_put("dundi/cache", key1, data);
 	ast_debug(1, "Caching hint at '%s'\n", key1);
@@ -921,7 +921,7 @@ static int cache_save(dundi_eid *eidpeer
 	/* Build request string */
 	time(&timeout);
 	timeout += expiration;
-	snprintf(data, sizeof(data), "%ld|", (long)(timeout));
+	snprintf(data, sizeof(data), "%jd|", (intmax_t)(timeout));
 	for (x=start;x<req->respcount;x++) {
 		/* Skip anything with an illegal pipe in it */
 		if (strchr(req->dr[x].dest, '|'))
@@ -2166,7 +2166,7 @@ static void check_password(void)
 
 	time(&now);
 #if 0
-	printf("%ld/%ld\n", now, rotatetime);
+	printf("%jd/%jd\n", now, rotatetime);
 #endif
 	if ((now - rotatetime) >= 0) {
 		/* Time to rotate keys */

File Added: pkgsrc/comms/asterisk21/patches/patch-res_ael_pval.c
$NetBSD: patch-res_ael_pval.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/ael/pval.c.orig	2018-05-07 17:37:44.116772314 +0000
+++ res/ael/pval.c
@@ -855,7 +855,7 @@ static void check_timerange(pval *p)
 	}
 	*e = '\0';
 	e++;
-	while (*e && !isdigit(*e))
+	while (*e && !isdigit((unsigned char)*e))
 		e++;
 	if (!*e) {
 		ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The time range format (%s) is missing the end time!\n",
@@ -3531,11 +3531,11 @@ static int gen_prios(struct ael_extensio
 				for_init->appargs = strdup(buf2);
 			} else {
 				strp2 = p->u1.for_init;
-				while (*strp2 && isspace(*strp2))
+				while (*strp2 && isspace((unsigned char)*strp2))
 					strp2++;
 				if (*strp2 == '&') { /* itsa macro call */
 					char *strp3 = strp2+1;
-					while (*strp3 && isspace(*strp3))
+					while (*strp3 && isspace((unsigned char)*strp3))
 						strp3++;
 					strcpy(buf2, strp3);
 					strp3 = strchr(buf2,'(');
@@ -3581,11 +3581,11 @@ static int gen_prios(struct ael_extensio
 				for_inc->app = strdup("MSet");
 			} else {
 				strp2 = p->u3.for_inc;
-				while (*strp2 && isspace(*strp2))
+				while (*strp2 && isspace((unsigned char)*strp2))
 					strp2++;
 				if (*strp2 == '&') { /* itsa macro call  */
 					char *strp3 = strp2+1;
-					while (*strp3 && isspace(*strp3))
+					while (*strp3 && isspace((unsigned char)*strp3))
 						strp3++;
 					strcpy(buf2, strp3);
 					strp3 = strchr(buf2,'(');

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__calendar.c
$NetBSD: patch-res_res__calendar.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_calendar.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ res/res_calendar.c
@@ -1245,7 +1245,7 @@ static int calendar_query_exec(struct as
 	i = ao2_iterator_init(cal->events, 0);
 	while ((event = ao2_iterator_next(&i))) {
 		if (!(start > event->end || end < event->start)) {
-			ast_debug(10, "%s (%ld - %ld) overlapped with (%ld - %ld)\n", event->summary, (long) event->start, (long) event->end, (long) start, (long) end);
+			ast_debug(10, "%s (%jd - %jd) overlapped with (%jd - %jd)\n", event->summary, (intmax_t) event->start, (intmax_t) event->end, (intmax_t) start, (intmax_t) end);
 			if (add_event_to_list(events, event, start, end) < 0) {
 				event = ast_calendar_unref_event(event);
 				cal = unref_calendar(cal);
@@ -1378,9 +1378,9 @@ static int calendar_query_result_exec(st
 		} else if (!strcasecmp(args.field, "uid")) {
 			ast_copy_string(buf, entry->event->uid, len);
 		} else if (!strcasecmp(args.field, "start")) {
-			snprintf(buf, len, "%ld", (long) entry->event->start);
+			snprintf(buf, len, "%jd", (intmax_t) entry->event->start);
 		} else if (!strcasecmp(args.field, "end")) {
-			snprintf(buf, len, "%ld", (long) entry->event->end);
+			snprintf(buf, len, "%jd", (intmax_t) entry->event->end);
 		} else if (!strcasecmp(args.field, "busystate")) {
 			snprintf(buf, len, "%u", entry->event->busy_state);
 		} else if (!strcasecmp(args.field, "attendees")) {
@@ -1739,9 +1739,9 @@ static int calendar_event_read(struct as
 	} else if (!strcasecmp(data, "uid")) {
 		ast_copy_string(buf, event->uid, len);
 	} else if (!strcasecmp(data, "start")) {
-		snprintf(buf, len, "%ld", (long)event->start);
+		snprintf(buf, len, "%jd", (intmax_t)event->start);
 	} else if (!strcasecmp(data, "end")) {
-		snprintf(buf, len, "%ld", (long)event->end);
+		snprintf(buf, len, "%jd", (intmax_t)event->end);
 	} else if (!strcasecmp(data, "busystate")) {
 		snprintf(buf, len, "%u", event->busy_state);
 	} else if (!strcasecmp(data, "attendees")) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__celt.c
$NetBSD: patch-res_res__format__attr__celt.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_format_attr_celt.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_celt.c
@@ -89,7 +89,7 @@ static struct ast_format *celt_parse_sdp
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	if (sscanf(attribs, "framesize=%30u", &val) == 1) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__h263.c
$NetBSD: patch-res_res__format__attr__h263.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_format_attr_h263.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_h263.c
@@ -180,7 +180,7 @@ static struct ast_format *h263_parse_sdp
 
 	/* upper-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = toupper(*attrib);
+		*attrib = toupper((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	attr->BPP = H263_ATTR_KEY_UNSET;

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__ilbc.c
$NetBSD: patch-res_res__format__attr__ilbc.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_format_attr_ilbc.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_ilbc.c
@@ -87,7 +87,7 @@ static struct ast_format *ilbc_parse_sdp
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	if ((kvp = strstr(attribs, "mode")) && sscanf(kvp, "mode=%30u", &val) == 1) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__opus.c
$NetBSD: patch-res_res__format__attr__opus.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_format_attr_opus.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_opus.c
@@ -151,7 +151,7 @@ static struct ast_format *opus_parse_sdp
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	sdp_fmtp_get(attribs, CODEC_OPUS_ATTR_MAX_PLAYBACK_RATE, &attr->maxplayrate);

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__silk.c
$NetBSD: patch-res_res__format__attr__silk.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_format_attr_silk.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_silk.c
@@ -96,7 +96,7 @@ static struct ast_format *silk_parse_sdp
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	if (sscanf(attribs, "maxaveragebitrate=%30u", &val) == 1) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__siren14.c
$NetBSD: patch-res_res__format__attr__siren14.c,v 1.1 2024/04/08 03:20:09 jnemeth Exp $

--- res/res_format_attr_siren14.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_siren14.c
@@ -55,7 +55,7 @@ static struct ast_format *siren14_parse_
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	if (sscanf(attribs, "bitrate=%30u", &val) == 1) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__siren7.c
$NetBSD: patch-res_res__format__attr__siren7.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_format_attr_siren7.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_siren7.c
@@ -55,7 +55,7 @@ static struct ast_format *siren7_parse_s
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	if (sscanf(attribs, "bitrate=%30u", &val) == 1) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__format__attr__vp8.c
$NetBSD: patch-res_res__format__attr__vp8.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_format_attr_vp8.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_format_attr_vp8.c
@@ -92,7 +92,7 @@ static struct ast_format *vp8_parse_sdp_
 
 	/* lower-case everything, so we are case-insensitive */
 	for (attrib = attribs; *attrib; ++attrib) {
-		*attrib = tolower(*attrib);
+		*attrib = tolower((unsigned char)*attrib);
 	} /* based on channels/chan_sip.c:process_a_sdp_image() */
 
 	if ((kvp = strstr(attribs, "max-fr")) && sscanf(kvp, "max-fr=%30u", &val) == 1) {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__hep__pjsip.c
$NetBSD: patch-res_res__hep__pjsip.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_hep_pjsip.c.orig	2018-06-20 15:24:25.999288749 +0000
+++ res/res_hep_pjsip.c
@@ -34,6 +34,9 @@
 
 #include "asterisk.h"
 
+#include "asterisk/module.h"
+#include "asterisk/netsock2.h"
+
 #include <pjsip.h>
 #include <pjsip_ua.h>
 #include <pjlib.h>
@@ -41,8 +44,6 @@
 #include "asterisk/res_pjsip.h"
 #include "asterisk/res_pjsip_session.h"
 #include "asterisk/res_hep.h"
-#include "asterisk/module.h"
-#include "asterisk/netsock2.h"
 
 static char *assign_uuid(const pj_str_t *call_id, const pj_str_t *local_tag, const pj_str_t *remote_tag)
 {

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__limit.c
$NetBSD: patch-res_res__limit.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_limit.c.orig	2018-05-07 17:38:31.944908572 +0000
+++ res/res_limit.c
@@ -191,7 +191,7 @@ static char *handle_cli_ulimit(struct as
 				else
 					snprintf(printlimit, sizeof(printlimit), "limited to %d", (int) rlimit.rlim_cur);
 				desc = str2desc(a->argv[1]);
-				ast_cli(a->fd, "%c%s (%s) is %s.\n", toupper(desc[0]), desc + 1, a->argv[1], printlimit);
+				ast_cli(a->fd, "%c%s (%s) is %s.\n", toupper((unsigned char)desc[0]), desc + 1, a->argv[1], printlimit);
 			} else
 				ast_cli(a->fd, "Could not retrieve resource limits for %s: %s\n", str2desc(a->argv[1]), strerror(errno));
 			return CLI_SUCCESS;

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__musiconhold.c
$NetBSD: patch-res_res__musiconhold.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_musiconhold.c.orig	2021-03-04 16:46:08.000000000 +0000
+++ res/res_musiconhold.c
@@ -1153,7 +1153,7 @@ static void moh_parse_options(struct ast
 		} else if (!strcasecmp(var->name, "announcement")) {
 			ast_copy_string(mohclass->announcement, var->value, sizeof(mohclass->announcement));
 			ast_set_flag(mohclass, MOH_ANNOUNCEMENT);
-		} else if (!strcasecmp(var->name, "digit") && (isdigit(*var->value) || strchr("*#", *var->value))) {
+		} else if (!strcasecmp(var->name, "digit") && (isdigit((unsigned char)*var->value) || strchr("*#", *var->value))) {
 			mohclass->digit = *var->value;
 		} else if (!strcasecmp(var->name, "random")) {
 			static int deprecation_warning = 0;

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__pjproject.c
$NetBSD: patch-res_res__pjproject.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_pjproject.c.orig	2019-09-05 13:09:20.000000000 +0000
+++ res/res_pjproject.c
@@ -99,20 +99,22 @@
 #include "asterisk.h"
 
 #include <stdarg.h>
-#include <pjlib.h>
-#include <pjsip.h>
-#include <pj/log.h>
 
 #include "asterisk/options.h"
 #include "asterisk/logger.h"
 #include "asterisk/module.h"
 #include "asterisk/cli.h"
-#include "asterisk/res_pjproject.h"
 #include "asterisk/vector.h"
 #include "asterisk/sorcery.h"
 #include "asterisk/test.h"
 #include "asterisk/netsock2.h"
 
+#include <pjlib.h>
+#include <pjsip.h>
+#include <pj/log.h>
+
+#include "asterisk/res_pjproject.h"
+
 static struct ast_sorcery *pjproject_sorcery;
 static pj_log_func *log_cb_orig;
 static unsigned decor_orig;

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__pjsip__diversion.c
$NetBSD: patch-res_res__pjsip__diversion.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_pjsip_diversion.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_pjsip_diversion.c
@@ -61,7 +61,7 @@ static int sip_is_token(const char *str)
 
 	is_token = 1;
 	do {
-		if (!isalnum(*str)
+		if (!isalnum((unsigned char)*str)
 			&& !strchr("-.!%*_+`'~", *str)) {
 			/* The character is not allowed in a token. */
 			is_token = 0;

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__pjsip_pjsip__configuration.c
$NetBSD: patch-res_res__pjsip_pjsip__configuration.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_pjsip/pjsip_configuration.c.orig	2022-04-14 22:16:42.000000000 +0000
+++ res/res_pjsip/pjsip_configuration.c
@@ -1039,7 +1039,7 @@ static int from_user_handler(const struc
 	const char *val;
 
 	for (val = var->value; *val; val++) {
-		if (!isalpha(*val) && !isdigit(*val) && !strchr(valid_uri_marks, *val)) {
+		if (!isalpha((unsigned char)*val) && !isdigit((unsigned char)*val) && !strchr(valid_uri_marks, *val)) {
 			ast_log(LOG_ERROR, "Error configuring endpoint '%s' - '%s' field "
 			"contains invalid character '%c'\n",
 			ast_sorcery_object_get_id(endpoint), var->name, *val);

File Added: pkgsrc/comms/asterisk21/patches/patch-res_res__xmpp.c
$NetBSD: patch-res_res__xmpp.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- res/res_xmpp.c.orig	2021-06-24 12:50:57.000000000 +0000
+++ res/res_xmpp.c
@@ -62,6 +62,13 @@
 #include "asterisk/config_options.h"
 #include "asterisk/json.h"
 
+/* XXX, pthread_equal() is misused to compare non-valid thread pointers */
+static int
+pt_pthread_equal(pthread_t t1, pthread_t t2)
+{
+	return t1 == t2;
+}
+
 /*** DOCUMENTATION
 	<application name="JabberSend" language="en_US" module="res_xmpp">
 		<synopsis>
@@ -3527,7 +3534,7 @@ static int xmpp_action_hook(void *data, 
 
 int ast_xmpp_client_disconnect(struct ast_xmpp_client *client)
 {
-	if ((client->thread != AST_PTHREADT_NULL) && !pthread_equal(pthread_self(), client->thread)) {
+	if ((client->thread != AST_PTHREADT_NULL) && !pt_pthread_equal(pthread_self(), client->thread)) {
 		xmpp_client_change_state(client, XMPP_STATE_DISCONNECTING);
 		pthread_cancel(client->thread);
 		pthread_join(client->thread, NULL);
@@ -3669,7 +3676,7 @@ static int xmpp_client_receive(struct as
 			/* if we stumble on the ending tag character,
 			   we skip any whitespace that follows it*/
 			if (c == '>') {
-				while (isspace(buf[pos+1])) {
+				while (isspace((unsigned char)buf[pos+1])) {
 					pos++;
 				}
 			}

File Added: pkgsrc/comms/asterisk21/patches/patch-sounds_Makefile
$NetBSD: patch-sounds_Makefile,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- sounds/Makefile.orig	2018-05-01 20:12:26.000000000 +0000
+++ sounds/Makefile
@@ -124,20 +124,6 @@ endef # sound_format_lang_rule
 all: $(CORE_SOUNDS) $(EXTRA_SOUNDS) $(MOH)
 
 have_download:
-	@if test "$(DOWNLOAD)" = ":" ; then \
-		echo "**************************************************"; \
-		echo "***                                            ***"; \
-		echo "*** You must have either wget, curl, or fetch  ***"; \
-		echo "*** to be able to automatically download and   ***"; \
-		echo "*** install the requested sound packages.      ***"; \
-		echo "***                                            ***"; \
-		echo "*** Please install one of these, or remove any ***"; \
-		echo "*** extra sound package selections in          ***"; \
-		echo "*** menuselect before installing Asterisk.     ***"; \
-		echo "***                                            ***"; \
-		echo "**************************************************"; \
-		exit 1; \
-	fi
 
 $(eval $(call sound_format_lang_rule,$(SOUNDS_DIR),core-sounds,en,$(CORE_SOUNDS_VERSION)))
 

File Added: pkgsrc/comms/asterisk21/patches/patch-tests_test__locale.c
$NetBSD: patch-tests_test__locale.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- tests/test_locale.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ tests/test_locale.c
@@ -81,7 +81,7 @@ static char *handle_cli_test_locales(str
 
 	/* First we run a set of tests with the global locale, which isn't thread-safe. */
 	if (!(localedir = opendir(
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined( __NetBSD__ ) || defined(__APPLE__) || defined(__DragonFly__)
 		"/usr/share/locale"
 #else /* Linux */
 		"/usr/lib/locale"

File Added: pkgsrc/comms/asterisk21/patches/patch-tests_test__voicemail__api.c
$NetBSD: patch-tests_test__voicemail__api.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- tests/test_voicemail_api.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ tests/test_voicemail_api.c
@@ -383,7 +383,7 @@ static struct ast_vm_msg_snapshot *test_
 	struct ast_vm_msg_snapshot *snapshot;
 
 	snprintf(msg_id_hash, sizeof(msg_id_hash), "%s%s%s", exten, context, callerid);
-	snprintf(msg_id_buf, sizeof(msg_id_buf), "%ld-%d", (long)time(NULL), ast_str_hash(msg_id_hash));
+	snprintf(msg_id_buf, sizeof(msg_id_buf), "%jd-%d", (intmax_t)time(NULL), ast_str_hash(msg_id_hash));
 
 	if ((snapshot = ast_calloc(1, sizeof(*snapshot)))) {
 		if (ast_string_field_init(snapshot, 128)) {

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0100-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0100-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0100-netbsd.patch.orig	2024-03-18 06:26:23.102690730 +0000
+++ third-party/pjproject/patches/0100-netbsd.patch
@@ -0,0 +1,12 @@
+--- a/build/os-netbsd.mak	2024-03-17 23:06:14.983947255 -0700
++++ b/build/os-netbsd.mak	2024-03-17 22:10:03.024052147 -0700
+@@ -0,0 +1,9 @@
++export OS_CFLAGS   := $(CC_DEF)PJ_NETBSD=1
++
++export OS_CXXFLAGS := 
++
++export OS_LDFLAGS  := -lportaudio-$(TARGET_NAME) -lgsmcodec-$(TARGET_NAME) -lilbccodec-$(TARGET_NAME) -lspeex-$(TARGET_NAME) -lresample-$(TARGET_NAME) $(CC_LIB)pthread$(LIBEXT2) -lm
++
++export OS_SOURCES  := 
++
++

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0110-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0110-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0110-netbsd.patch.orig	2024-03-18 06:26:32.857060524 +0000
+++ third-party/pjproject/patches/0110-netbsd.patch
@@ -0,0 +1,40 @@
+--- a/pjlib/build/os-netbsd.mak	2024-03-17 23:09:58.926718475 -0700
++++ b/pjlib/build/os-netbsd.mak	2024-03-17 22:17:31.469351242 -0700
+@@ -0,0 +1,37 @@
++#
++# OS specific configuration for Linux OS target. 
++#
++
++#
++# PJLIB_OBJS specified here are object files to be included in PJLIB
++# (the library) for this specific operating system. Object files common 
++# to all operating systems should go in Makefile instead.
++#
++export PJLIB_OBJS += 	addr_resolv_sock.o file_access_unistd.o \
++			file_io_ansi.o guid_simple.o \
++			log_writer_stdout.o os_core_unix.o \
++			os_error_unix.o os_time_unix.o \
++			os_timestamp_common.o os_timestamp_posix.o \
++			pool_policy_malloc.o sock_bsd.o sock_select.o
++
++export PJLIB_OBJS += ioqueue_select.o 
++
++export PJLIB_OBJS += sock_qos_bsd.o
++
++#
++# TEST_OBJS are operating system specific object files to be included in
++# the test application.
++#
++export TEST_OBJS +=	main.o
++
++#
++# Additional LDFLAGS for pjlib-test
++#
++export TEST_LDFLAGS += -lm
++
++#
++# TARGETS are make targets in the Makefile, to be executed for this given
++# operating system.
++#
++export TARGETS	    =	$(PJLIB_LIB) $(PJLIB_SONAME) $(TEST_EXE)
++

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0120-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0120-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0120-netbsd.patch.orig	2024-03-18 06:26:41.349547983 +0000
+++ third-party/pjproject/patches/0120-netbsd.patch
@@ -0,0 +1,133 @@
+--- a/pjlib/include/pj/compat/os_netbsd.h	2024-03-17 23:11:37.306411766 -0700
++++ b/pjlib/include/pj/compat/os_netbsd.h	2024-03-17 22:28:56.767758931 -0700
+@@ -0,0 +1,130 @@
++/* 
++ * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
++ * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
++ */
++#ifndef __PJ_COMPAT_OS_NETBSD_H__
++#define __PJ_COMPAT_OS_NETBSD_H__
++
++/**
++ * @file os_linux.h
++ * @brief Describes Linux operating system specifics.
++ */
++
++#define PJ_OS_NAME                  "netbsd"
++
++#define PJ_HAS_ARPA_INET_H          1
++#define PJ_HAS_ASSERT_H             1
++#define PJ_HAS_CTYPE_H              1
++#define PJ_HAS_ERRNO_H              1
++#define PJ_HAS_LINUX_SOCKET_H       0
++#define PJ_HAS_MALLOC_H             1
++#define PJ_HAS_NETDB_H              1
++#define PJ_HAS_NETINET_IN_H         1
++#define PJ_HAS_SETJMP_H             1
++#define PJ_HAS_STDARG_H             1
++#define PJ_HAS_STDDEF_H             1
++#define PJ_HAS_STDIO_H              1
++#define PJ_HAS_STDLIB_H             1
++#define PJ_HAS_STRING_H             1
++#define PJ_HAS_SYS_IOCTL_H          1
++#define PJ_HAS_SYS_SELECT_H         1
++#define PJ_HAS_SYS_SOCKET_H         1
++#define PJ_HAS_SYS_TIME_H           1
++#define PJ_HAS_SYS_TIMEB_H          1
++#define PJ_HAS_SYS_TYPES_H          1
++#define PJ_HAS_TIME_H               1
++#define PJ_HAS_UNISTD_H             1
++#define PJ_HAS_SEMAPHORE_H          1
++
++#define PJ_HAS_MSWSOCK_H            0
++#define PJ_HAS_WINSOCK_H            0
++#define PJ_HAS_WINSOCK2_H           0
++
++#define PJ_HAS_LOCALTIME_R          1
++
++#define PJ_SOCK_HAS_INET_ATON       1
++
++/* Set 1 if native sockaddr_in has sin_len member. 
++ * Default: 0
++ */
++#define PJ_SOCKADDR_HAS_LEN         1
++
++/**
++ * If this macro is set, it tells select I/O Queue that select() needs to
++ * be given correct value of nfds (i.e. largest fd + 1). This requires
++ * select ioqueue to re-scan the descriptors on each registration and
++ * unregistration.
++ * If this macro is not set, then ioqueue will always give FD_SETSIZE for
++ * nfds argument when calling select().
++ *
++ * Default: 0
++ */
++#define PJ_SELECT_NEEDS_NFDS        1
++
++/* Is errno a good way to retrieve OS errors?
++ */
++#define PJ_HAS_ERRNO_VAR            1
++
++/* When this macro is set, getsockopt(SOL_SOCKET, SO_ERROR) will return
++ * the status of non-blocking connect() operation.
++ */
++#define PJ_HAS_SO_ERROR             1
++
++/* This value specifies the value set in errno by the OS when a non-blocking
++ * socket recv() can not return immediate daata.
++ */
++#define PJ_BLOCKING_ERROR_VAL       EAGAIN
++
++/* This value specifies the value set in errno by the OS when a non-blocking
++ * socket connect() can not get connected immediately.
++ */
++#define PJ_BLOCKING_CONNECT_ERROR_VAL   EINPROGRESS
++
++/* Default threading is enabled, unless it's overridden. */
++#ifndef PJ_HAS_THREADS
++#  define PJ_HAS_THREADS            (1)
++#endif
++
++#define PJ_HAS_HIGH_RES_TIMER       1
++#define PJ_HAS_MALLOC               1
++#ifndef PJ_OS_HAS_CHECK_STACK
++#   define PJ_OS_HAS_CHECK_STACK    0
++#endif
++#define PJ_NATIVE_STRING_IS_UNICODE 0
++
++#define PJ_ATOMIC_VALUE_TYPE        long
++
++/* If 1, use Read/Write mutex emulation for platforms that don't support it */
++#define PJ_EMULATE_RWMUTEX          0
++
++/* If 1, pj_thread_create() should enforce the stack size when creating 
++ * threads.
++ * Default: 0 (let OS decide the thread's stack size).
++ */
++#define PJ_THREAD_SET_STACK_SIZE        0
++
++/* If 1, pj_thread_create() should allocate stack from the pool supplied.
++ * Default: 0 (let OS allocate memory for thread's stack).
++ */
++#define PJ_THREAD_ALLOCATE_STACK        0
++
++/* Linux has socklen_t */
++#define PJ_HAS_SOCKLEN_T                1
++
++
++#endif  /* __PJ_COMPAT_OS_NETBSD_H__ */
++

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0130-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0130-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0130-netbsd.patch.orig	2024-03-18 06:26:51.344731895 +0000
+++ third-party/pjproject/patches/0130-netbsd.patch
@@ -0,0 +1,139 @@
+--- a/pjmedia/build/os-netbsd.mak	2024-03-17 23:13:16.295306351 -0700
++++ b/pjmedia/build/os-netbsd.mak	2024-03-17 22:32:45.797176983 -0700
+@@ -0,0 +1,136 @@
++# Linux
++
++# Define the desired sound device backend
++# Valid values are:
++#   - pa_unix:	    	PortAudio on Unix (OSS or ALSA)
++#   - pa_darwinos:  	PortAudio on MacOSX (CoreAudio)
++#   - pa_old_darwinos:  PortAudio on MacOSX (old CoreAudio, for OSX 10.2)
++#   - pa_win32:	    	PortAudio on Win32 (WMME)
++#   - ds:	    	Win32 DirectSound (dsound.c)
++#   - null:	    	Null sound device (nullsound.c)
++AC_PJMEDIA_SND=pa_unix
++
++#
++# Codecs
++#
++AC_NO_G711_CODEC=0
++AC_NO_L16_CODEC=0
++AC_NO_GSM_CODEC=0
++AC_NO_SPEEX_CODEC=0
++AC_NO_ILBC_CODEC=0
++AC_NO_G722_CODEC=0
++AC_NO_G7221_CODEC=0
++
++export CODEC_OBJS=
++
++ifeq ($(AC_NO_G711_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_G711_CODEC=0
++else
++export CODEC_OBJS +=
++endif
++
++ifeq ($(AC_NO_L16_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_L16_CODEC=0
++else
++export CODEC_OBJS += l16.o
++endif
++
++ifeq ($(AC_NO_GSM_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_GSM_CODEC=0
++else
++export CODEC_OBJS += gsm.o
++endif
++
++ifeq ($(AC_NO_SPEEX_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_SPEEX_CODEC=0
++else
++export CFLAGS += -I$(THIRD_PARTY)/build/speex -I$(THIRD_PARTY)/speex/include
++export CODEC_OBJS += speex_codec.o
++
++ifeq (1,1)
++export PJMEDIA_OBJS += echo_speex.o
++endif
++
++endif
++
++ifeq ($(AC_NO_ILBC_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_ILBC_CODEC=0
++else
++export CODEC_OBJS += ilbc.o
++endif
++
++ifeq ($(AC_NO_G722_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_G722_CODEC=0
++else
++export CODEC_OBJS += g722.o g722/g722_enc.o g722/g722_dec.o
++endif
++
++ifeq ($(AC_NO_G7221_CODEC),1)
++export CFLAGS += -DPJMEDIA_HAS_G7221_CODEC=0
++else
++export CODEC_OBJS += g7221.o
++export G7221_CFLAGS += -I$(THIRD_PARTY)
++endif
++
++#
++# Resample
++#
++AC_PJMEDIA_RESAMPLE=libresample
++
++ifeq ($(AC_PJMEDIA_RESAMPLE),none)
++# No resample support
++export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE
++endif
++
++ifeq ($(AC_PJMEDIA_RESAMPLE),libresample)
++export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE
++endif
++
++ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate)
++export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE
++endif
++
++ifeq ($(AC_PJMEDIA_RESAMPLE),speex)
++export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX
++endif
++
++#
++# SRTP
++#
++#ifeq (@ac_external_srtp@,1)
++ifeq (0,1)
++# External SRTP
++export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1
++else
++# Our SRTP in third_party
++export CFLAGS += -I$(THIRD_PARTY)/build/srtp \
++	 -I$(THIRD_PARTY)/srtp/crypto/include \
++	 -I$(THIRD_PARTY)/srtp/include
++
++endif
++
++#
++# PortAudio
++#
++ifneq ($(findstring pa,$(AC_PJMEDIA_SND)),)
++export CFLAGS += -I$(THIRD_PARTY)/build/portaudio -I$(THIRD_PARTY)/portaudio/include -DPJMEDIA_SOUND_IMPLEMENTATION=PJMEDIA_SOUND_PORTAUDIO_SOUND
++export SOUND_OBJS = pasound.o
++endif
++
++#
++# Win32 DirectSound
++#
++ifeq ($(AC_PJMEDIA_SND),ds)
++export SOUND_OBJS = dsound.o
++export CFLAGS += -DPJMEDIA_SOUND_IMPLEMENTATION=PJMEDIA_SOUND_WIN32_DIRECT_SOUND
++endif
++
++#
++# Last resort, null sound device
++#
++ifeq ($(AC_PJMEDIA_SND),null)
++export SOUND_OBJS = nullsound.o
++export CFLAGS += -DPJMEDIA_SOUND_IMPLEMENTATION=PJMEDIA_SOUND_NULL_SOUND
++endif
++
++

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0140-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0140-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0140-netbsd.patch.orig	2024-03-18 06:27:02.926490447 +0000
+++ third-party/pjproject/patches/0140-netbsd.patch
@@ -0,0 +1,12 @@
+--- a/third_party/build/os-netbsd.mak	2024-03-17 23:17:19.200264232 -0700
++++ b/third_party/build/os-netbsd.mak	2024-03-17 22:46:50.961340542 -0700
+@@ -0,0 +1,9 @@
++DIRS += gsm
++DIRS += ilbc
++DIRS += speex
++DIRS += portaudio
++DIRS += g7221
++DIRS += srtp
++DIRS += resample
++
++

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0150-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0150-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0150-netbsd.patch.orig	2024-03-18 06:27:11.302585019 +0000
+++ third-party/pjproject/patches/0150-netbsd.patch
@@ -0,0 +1,99 @@
+--- a/third_party/webrtc_aec3/src/system_wrappers/source/cpu_features_netbsd.cc	2024-03-17 23:19:24.937833522 -0700
++++ b/third_party/webrtc_aec3/src/system_wrappers/source/cpu_features_netbsd.cc	2024-03-17 22:50:07.930587033 -0700
+@@ -0,0 +1,96 @@
++/*
++ *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
++ *
++ *  Use of this source code is governed by a BSD-style license
++ *  that can be found in the LICENSE file in the root of the source
++ *  tree. An additional intellectual property rights grant can be found
++ *  in the file PATENTS.  All contributing project authors may
++ *  be found in the AUTHORS file in the root of the source tree.
++ */
++
++#include <features.h>
++#include <stdlib.h>
++#include <string.h>
++
++#ifdef __GLIBC_PREREQ
++#define WEBRTC_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
++#else
++#define WEBRTC_GLIBC_PREREQ(a, b) 0
++#endif
++
++#if WEBRTC_GLIBC_PREREQ(2, 16)
++#include <sys/auxv.h>
++#else
++#include <errno.h>
++#include <fcntl.h>
++#include <link.h>
++#include <unistd.h>
++#endif
++
++#include "rtc_base/system/arch.h"
++#include "system_wrappers/include/cpu_features_wrapper.h"
++
++#if defined(WEBRTC_ARCH_ARM_FAMILY)
++#include <asm/hwcap.h>
++
++namespace webrtc {
++
++uint64_t GetCPUFeaturesARM(void) {
++  uint64_t result = 0;
++  int architecture = 0;
++  uint64_t hwcap = 0;
++  const char* platform = NULL;
++#if WEBRTC_GLIBC_PREREQ(2, 16)
++  hwcap = getauxval(AT_HWCAP);
++  platform = (const char*)getauxval(AT_PLATFORM);
++#else
++  ElfW(auxv_t) auxv;
++  int fd = open("/proc/self/auxv", O_RDONLY);
++  if (fd >= 0) {
++    while (hwcap == 0 || platform == NULL) {
++      if (read(fd, &auxv, sizeof(auxv)) < (ssize_t)sizeof(auxv)) {
++        if (errno == EINTR)
++          continue;
++        break;
++      }
++      switch (auxv.a_type) {
++        case AT_HWCAP:
++          hwcap = auxv.a_un.a_val;
++          break;
++        case AT_PLATFORM:
++          platform = (const char*)auxv.a_un.a_val;
++          break;
++      }
++    }
++    close(fd);
++  }
++#endif  // WEBRTC_GLIBC_PREREQ(2, 16)
++#if defined(__aarch64__)
++  architecture = 8;
++  if ((hwcap & HWCAP_FP) != 0)
++    result |= kCPUFeatureVFPv3;
++  if ((hwcap & HWCAP_ASIMD) != 0)
++    result |= kCPUFeatureNEON;
++#else
++  if (platform != NULL) {
++    /* expect a string in the form "v6l" or "v7l", etc.
++     */
++    if (platform[0] == 'v' && '0' <= platform[1] && platform[1] <= '9' &&
++        (platform[2] == 'l' || platform[2] == 'b')) {
++      architecture = platform[1] - '0';
++    }
++  }
++  if ((hwcap & HWCAP_VFPv3) != 0)
++    result |= kCPUFeatureVFPv3;
++  if ((hwcap & HWCAP_NEON) != 0)
++    result |= kCPUFeatureNEON;
++#endif
++  if (architecture >= 7)
++    result |= kCPUFeatureARMv7;
++  if (architecture >= 6)
++    result |= kCPUFeatureLDREXSTREX;
++  return result;
++}
++
++}  // namespace webrtc
++#endif  // WEBRTC_ARCH_ARM_FAMILY

File Added: pkgsrc/comms/asterisk21/patches/patch-third-party_pjproject_patches_0160-netbsd.patch
$NetBSD: patch-third-party_pjproject_patches_0160-netbsd.patch,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- third-party/pjproject/patches/0160-netbsd.patch.orig	2024-03-25 05:18:07.047944261 +0000
+++ third-party/pjproject/patches/0160-netbsd.patch
@@ -0,0 +1,11 @@
+--- a/pjlib/src/pj/os_core_unix.c	2024-03-25 05:09:26.734781518 +0000
++++ b/pjlib/src/pj/os_core_unix.c
+@@ -655,6 +655,8 @@ static void set_thread_display_name(cons
+ #if defined(PJ_HAS_PTHREAD_SETNAME_NP) && PJ_HAS_PTHREAD_SETNAME_NP != 0
+ #   if defined(PJ_DARWINOS) && PJ_DARWINOS != 0
+     pthread_setname_np(name);
++#   elif defined(__NetBSD__)
++    pthread_setname_np(pthread_self(), name, NULL);
+ #   else
+     pthread_setname_np(pthread_self(), name);
+ #   endif

File Added: pkgsrc/comms/asterisk21/patches/patch-utils_Makefile
$NetBSD: patch-utils_Makefile,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- utils/Makefile.orig	2021-11-02 08:53:05.000000000 +0000
+++ utils/Makefile
@@ -65,7 +65,7 @@ all: $(UTILS)
 install:
 	for x in $(UTILS); do \
 		if [ "$$x" != "none" ]; then \
-			$(INSTALL) -m 755 $$x "$(DESTDIR)$(ASTSBINDIR)/$$x"; \
+			$(BSD_INSTALL_PROGRAM) $$x "$(DESTDIR)$(ASTSBINDIR)/$$x"; \
 		fi; \
 	done
 

File Added: pkgsrc/comms/asterisk21/patches/patch-utils_db1-ast_include_db.h
$NetBSD: patch-utils_db1-ast_include_db.h,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- utils/db1-ast/include/db.h.orig	2015-10-09 21:48:48.000000000 +0000
+++ utils/db1-ast/include/db.h
@@ -55,7 +55,7 @@
 
 #ifndef	__BIT_TYPES_DEFINED__
 #define	__BIT_TYPES_DEFINED__
-#if (!defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__APPLE__))
+#if (!defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__APPLE__) && !defined(__DragonFly__))
 typedef	__signed char		   int8_t;
 typedef	short			  int16_t;
 typedef	int			  int32_t;

File Added: pkgsrc/comms/asterisk21/patches/patch-utils_extconf.c
$NetBSD: patch-utils_extconf.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- utils/extconf.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ utils/extconf.c
@@ -593,6 +593,10 @@ static void  __attribute__((destructor))
 #include "libkern/OSAtomic.h"
 #endif
 
+#if defined(HAVE_SYS_ATOMIC_H)
+#include <sys/atomic.h>
+#endif
+
 /*! \brief Atomically add v to *p and return * the previous value of *p.
  * This can be used to handle reference counts, and the return value
  * can be used to generate unique identifiers.
@@ -606,12 +610,18 @@ AST_INLINE_API(int ast_atomic_fetchadd_i
 #elif defined(HAVE_OSX_ATOMICS) && (SIZEOF_INT == 4)
 AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
 {
-	return OSAtomicAdd32(v, (int32_t *) p);
+	return OSAtomicAdd32(v, (int32_t *) p) - v;
 })
 #elif defined(HAVE_OSX_ATOMICS) && (SIZEOF_INT == 8)
 AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
 {
-	return OSAtomicAdd64(v, (int64_t *) p);
+	return OSAtomicAdd64(v, (int64_t *) p) - v;
+})
+#elif defined(HAVE_SYS_ATOMIC_H)
+AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
+{
+	return atomic_add_int_nv((unsigned int *)p, v) - v;
+})
 #elif defined (__i386__) || defined(__x86_64__)
 AST_INLINE_API(int ast_atomic_fetchadd_int(volatile int *p, int v),
 {
@@ -653,6 +663,12 @@ AST_INLINE_API(int ast_atomic_dec_and_te
 AST_INLINE_API(int ast_atomic_dec_and_test(volatile int *p),
 {
 	return OSAtomicAdd64( -1, (int64_t *) p) == 0;
+})
+#elif defined(HAVE_SYS_ATOMIC_H)
+AST_INLINE_API(int ast_atomic_dec_and_test(volatile int *p),
+{
+	return atomic_dec_uint_nv((unsigned int *)p) == 0;
+})
 #else
 AST_INLINE_API(int ast_atomic_dec_and_test(volatile int *p),
 {
@@ -2537,13 +2553,13 @@ static int ast_true(const char *s)
 static struct timeval tvfix(struct timeval a)
 {
 	if (a.tv_usec >= ONE_MILLION) {
-		ast_log(LOG_WARNING, "warning too large timestamp %ld.%ld\n",
-			(long)a.tv_sec, (long int) a.tv_usec);
+		ast_log(LOG_WARNING, "warning too large timestamp %jd.%ld\n",
+			(intmax_t)a.tv_sec, (long int) a.tv_usec);
 		a.tv_sec += a.tv_usec / ONE_MILLION;
 		a.tv_usec %= ONE_MILLION;
 	} else if (a.tv_usec < 0) {
-		ast_log(LOG_WARNING, "warning negative timestamp %ld.%ld\n",
-			(long)a.tv_sec, (long int) a.tv_usec);
+		ast_log(LOG_WARNING, "warning negative timestamp %jd.%ld\n",
+			(intmax_t)a.tv_sec, (long int) a.tv_usec);
 		a.tv_usec = 0;
 	}
 	return a;

File Added: pkgsrc/comms/asterisk21/patches/patch-utils_smsq.c
$NetBSD: patch-utils_smsq.c,v 1.1 2024/04/08 03:20:10 jnemeth Exp $

--- utils/smsq.c.orig	2015-10-09 21:48:48.000000000 +0000
+++ utils/smsq.c
@@ -687,7 +687,7 @@ main (int argc, const char *argv[])
       snprintf (temp, sizeof(temp), "sms/.smsq-%d", (int)getpid ());
       mkdir ("sms", 0777);      /* ensure directory exists */
       mkdir (dir, 0777);        /* ensure directory exists */
-      snprintf (queuename, sizeof(queuename), "%s/%s.%ld-%d", dir, *queue ? queue : "0", (long)time (0), (int)getpid ());
+      snprintf (queuename, sizeof(queuename), "%s/%s.%jd-%d", dir, *queue ? queue : "0", (intmax_t)time (0), (int)getpid ());
       f = fopen (temp, "w");
       if (!f)
       {