diff --git a/.cleancount b/.cleancount index aabe6ec39..2bd5a0a98 100644 --- a/.cleancount +++ b/.cleancount @@ -1 +1 @@ -21 +22 diff --git a/Makefile b/Makefile index 1f52edbe3..a42993d35 100644 --- a/Makefile +++ b/Makefile @@ -22,33 +22,16 @@ .EXPORT_ALL_VARIABLES: +include makeopts + #Uncomment this to see all build commands instead of 'quiet' output #NOISY_BUILD=yes # Create OPTIONS variable OPTIONS= -# If cross compiling, define these to suit -#CROSS_COMPILE=/opt/montavista/pro/devkit/arm/xscale_be/bin/xscale_be- -#CROSS_COMPILE_BIN=/opt/montavista/pro/devkit/arm/xscale_be/bin/ -#CROSS_COMPILE_TARGET=/opt/montavista/pro/devkit/arm/xscale_be/target -#CROSS_ARCH=Linux -#CROSS_PROC=arm -#SUB_PROC=xscale # or maverick - -ifeq ($(CROSS_COMPILE),) - OSARCH:=$(shell uname -s) - PROC?:=$(shell uname -m) -else - OSARCH=$(CROSS_ARCH) - PROC=$(CROSS_PROC) -endif - ASTTOPDIR:=$(shell pwd) -# Remember the MAKELEVEL at the top -MAKETOPLEVEL?=$(MAKELEVEL) - # Overwite config files on "make samples" OVERWRITE=y @@ -60,21 +43,8 @@ DEBUG=-g3 # For example, make DESTDIR=/tmp/asterisk woud put things in # /tmp/asterisk/etc/asterisk # !!! Watch out, put no spaces or comments after the value !!! -DESTDIR?= #DESTDIR?=/tmp/asterisk -# Original busydetect routine -#BUSYDETECT = -DBUSYDETECT - -# Improved busydetect routine, comment the previous one if you use this one -#BUSYDETECT+= -DBUSYDETECT_MARTIN -# Detect the busy signal looking only at tone lengths -# For example if you have 3 beeps 100ms tone, 100ms silence separated by 500 ms of silence -#BUSYDETECT+= -DBUSYDETECT_TONEONLY -# Enforce the detection of busy signal (get rid of false hangups) -# Don't use together with -DBUSYDETECT_TONEONLY -#BUSYDETECT+= -DBUSYDETECT_COMPARE_TONE_AND_SILENCE - # Define standard directories for various platforms # These apply if they are not redefined in asterisk.conf ifeq ($(OSARCH),SunOS) @@ -131,59 +101,10 @@ ASTCFLAGS= GLOBAL_MAKEOPTS=$(wildcard /etc/asterisk.makeopts) USER_MAKEOPTS=$(wildcard ~/.asterisk.makeopts) -ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),) - ifneq ($(wildcard menuselect.makeopts),) - include menuselect.makeopts - include menuselect.makedeps - endif -endif +MOD_SUBDIR_CFLAGS=-I../include -I../main +OTHER_SUBDIR_CFLAGS=-I../include -ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),) - ifneq ($(wildcard makeopts),) - include makeopts - endif -endif - -TOPDIR_CFLAGS=-Iinclude -MOD_SUBDIR_CFLAGS=-I../include -I.. -OTHER_SUBDIR_CFLAGS=-I../include -I.. - -ifeq ($(origin MENUSELECT_CFLAGS),undefined) - MENUSELECT_CFLAGS:=$(shell grep MENUSELECT_CFLAGS $(USER_MAKEOPTS) .) - ifeq ($(MENUSELECT_CFLAGS),) - MENUSELECT_CFLAGS:=$(shell grep MENUSELECT_CFLAGS $(GLOBAL_MAKEOPTS) .) - endif - ifneq ($(MENUSELECT_CFLAGS),) - MENUSELECT_CFLAGS:=$(shell echo $(MENUSELECT_CFLAGS) | cut -f2 -d'=') - endif -endif - -ifeq ($(findstring dont-optimize,$(MAKECMDGOALS)),$(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS))) -# More GSM codec optimization -# Uncomment to enable MMXTM optimizations for x86 architecture CPU's -# which support MMX instructions. This should be newer pentiums, -# ppro's, etc, as well as the AMD K6 and K7. -#K6OPT = -DK6OPT - -# Tell gcc to optimize the code -OPTIMIZE+=-O6 -else - # Stack backtraces, while useful for debugging, are incompatible with optimizations - ifeq ($(OSARCH),Linux) - CFLAGS+=-DSTACK_BACKTRACES - endif -endif - -# *CLI> show memory allocations [filename] -# *CLI> show memory summary [filename] -ifneq ($(findstring MALLOC_DEBUG,$(MENUSELECT_CFLAGS)),) - TOPDIR_CFLAGS+=-include include/asterisk/astmm.h - MOD_SUBDIR_CFLAGS+=-include ../include/asterisk/astmm.h -endif - -MOD_SUBDIR_CFLAGS+=-fPIC - -ifeq ($(OSARCH),Linux) +ifeq ($(OSARCH),linux-gnu) ifeq ($(PROC),x86_64) # You must have GCC 3.4 to use k8, otherwise use athlon PROC=k8 @@ -216,28 +137,21 @@ ifeq ($(OSARCH),Linux) endif endif -GREP=grep ID=id ifeq ($(OSARCH),SunOS) - GREP=/usr/xpg4/bin/grep M4=/usr/local/bin/m4 ID=/usr/xpg4/bin/id endif ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) -ifneq ($(OPTIMIZE),) -ASTCFLAGS+=$(OPTIMIZE) -endif ifeq ($(AST_DEVMODE),yes) ASTCFLAGS+=-Werror -Wunused endif -ASTOBJ=-o asterisk - -ifeq ($(findstring BSD,$(OSARCH)),BSD) - ASTCFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include -L$(CROSS_COMPILE_TARGET)/usr/local/lib +ifneq ($(findstring BSD,$(OSARCH)),) + ASTCFLAGS+=-I/usr/local/include -L/usr/local/lib endif ifneq ($(PROC),ultrasparc) @@ -249,13 +163,13 @@ ifeq ($(PROC),ppc) endif ifeq ($(OSARCH),FreeBSD) - BSDVERSION=$(shell make -V OSVERSION -f $(CROSS_COMPILE_TARGET)/usr/share/mk/bsd.port.subdir.mk) + BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk) ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi) AST_LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi) -endif # FreeBSD +endif ifeq ($(OSARCH),NetBSD) - AST_CFLAGS+=-pthread -I$(CROSS_COMPILE_TARGET)/usr/pkg/include + ASTCFLAGS+=-pthread -I/usr/pkg/include endif ifeq ($(OSARCH),OpenBSD) @@ -263,11 +177,9 @@ ifeq ($(OSARCH),OpenBSD) endif ifeq ($(OSARCH),SunOS) - ASTCFLAGS+=-Wcast-align -DSOLARIS -Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/opt/ssl/include -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include + ASTCFLAGS+=-Wcast-align -DSOLARIS -Iinclude/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include endif -LIBEDIT=editline/libedit.a - ASTERISKVERSION:=$(shell build_tools/make_version .) ifneq ($(wildcard .version),) @@ -283,93 +195,35 @@ endif ASTCFLAGS+=$(MALLOC_DEBUG)$(BUSYDETECT)$(OPTIONS) -MOD_SUBDIRS:=res channels pbx apps codecs formats cdr funcs +MOD_SUBDIRS:=res channels pbx apps codecs formats cdr funcs main OTHER_SUBDIRS:=utils agi +# Note: OTHER_SUBDIRS must be after MOD_SUBDIRS, because 'utils' uses files from 'main' SUBDIRS:=$(MOD_SUBDIRS) $(OTHER_SUBDIRS) SUBDIRS_INSTALL:=$(SUBDIRS:%=%-install) SUBDIRS_CLEAN:=$(SUBDIRS:%=%-clean) SUBDIRS_CLEAN_DEPEND:=$(SUBDIRS:%=%-clean-depend) MOD_SUBDIRS_DEPEND:=$(MOD_SUBDIRS:%=%-depend) OTHER_SUBDIRS_DEPEND:=$(OTHER_SUBDIRS:%=%-depend) -SUBDIRS_DEPEND:=$(MOD_SUBDIRS_DEPEND) $(OTHER_SUBDIRS_DEPEND) +SUBDIRS_DEPEND:=$(OTHER_SUBDIRS_DEPEND) $(MOD_SUBDIRS_DEPEND) SUBDIRS_UNINSTALL:=$(SUBDIRS:%=%-uninstall) +MOD_SUBDIRS_EMBED_LDSCRIPT:=$(MOD_SUBDIRS:%=%-embed-ldscript) +MOD_SUBDIRS_EMBED_LDFLAGS:=$(MOD_SUBDIRS:%=%-embed-ldflags) +MOD_SUBDIRS_EMBED_LIBS:=$(MOD_SUBDIRS:%=%-embed-libs) -OBJS=io.o sched.o logger.o frame.o loader.o config.o channel.o \ - translate.o file.o pbx.o cli.o md5.o term.o \ - ulaw.o alaw.o callerid.o fskmodem.o image.o app.o \ - cdr.o tdd.o acl.o rtp.o udptl.o manager.o asterisk.o \ - dsp.o chanvars.o indications.o autoservice.o db.o privacy.o \ - astmm.o enum.o srv.o dns.o aescrypt.o aestab.o aeskey.o \ - utils.o plc.o jitterbuf.o dnsmgr.o devicestate.o \ - netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \ - cryptostub.o sha1.o http.o fixedjitterbuf.o abstract_jb.o - -# we need to link in the objects statically, not as a library, because -# otherwise modules will not have them available if none of the static -# objects use it. -OBJS+=stdtime/localtime.o - -# At the moment say.o is an optional component which can be overridden -# by a module. -OBJS+=say.o - -ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),) - OBJS+= poll.o - ASTCFLAGS+=-DPOLLCOMPAT -endif - -ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/dlfcn.h),) - OBJS+= dlfcn.o - ASTCFLAGS+=-DDLFCNCOMPAT -endif - -ifeq ($(OSARCH),Linux) - AST_LIBS+=-ldl -lpthread $(EDITLINE_LIB) -lm -lresolv #-lnjamd -else - AST_LIBS+=$(EDITLINE_LIB) -lm -endif - -ifeq ($(OSARCH),Darwin) - AST_LIBS+=-lresolv +ifneq ($(findstring darwin,$(OSARCH)),) ASTCFLAGS+=-D__Darwin__ AUDIO_LIBS=-framework CoreAudio - ASTLINK=-Wl,-dynamic SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace - # Mac on Intel CoreDuo does not need poll compatibility layer - ifneq ($(PROC),i386) - OBJS+=poll.o - ASTCFLAGS+=-DPOLLCOMPAT - endif else # These are used for all but Darwin - ASTLINK=-Wl,-E SOLINK=-shared -Xlinker -x - ifeq ($(findstring BSD,$(OSARCH)),BSD) - LDFLAGS+=-L$(CROSS_COMPILE_TARGET)/usr/local/lib + ifneq ($(findstring BSD,$(OSARCH)),) + LDFLAGS+=-L/usr/local/lib endif endif -ifeq ($(OSARCH),FreeBSD) - AST_LIBS+=-lcrypto -endif - -ifeq ($(OSARCH),NetBSD) - AST_LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib $(EDITLINE_LIB) -endif - -ifeq ($(OSARCH),OpenBSD) - AST_LIBS+=-lcrypto -lpthread -lm $(EDITLINE_LIB) -endif - ifeq ($(OSARCH),SunOS) - AST_LIBS+=-lpthread -ldl -lnsl -lsocket -lresolv -L$(CROSS_COMPILE_TARGET)/opt/ssl/lib -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib - OBJS+=strcompat.o - ASTLINK= - SOLINK=-shared -fpic -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib -endif - -ifeq ($(MAKETOPLEVEL),$(MAKELEVEL)) - CFLAGS+=$(TOPDIR_CFLAGS)$(ASTCFLAGS) + SOLINK=-shared -fpic -L/usr/local/ssl/lib endif # This is used when generating the doxygen documentation @@ -379,9 +233,7 @@ else HAVEDOT=no endif -include Makefile.rules - -_all: all +all: cleantest $(SUBDIRS) @echo " +--------- Asterisk Build Complete ---------+" @echo " + Asterisk has successfully been built, but +" @echo " + cannot be run before being installed by +" @@ -390,94 +242,44 @@ _all: all @echo " + make install +" @echo " +-------------------------------------------+" -all: cleantest config.status menuselect.makeopts depend $(SUBDIRS) asterisk - -$(MOD_SUBDIRS): - @CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C $@ - -$(OTHER_SUBDIRS): - @CFLAGS="$(OTHER_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C $@ - -config.status: configure - @CFLAGS="" ./configure +makeopts: @echo "****" - @echo "**** The configure script was just executed, so 'make' needs to be" - @echo "**** restarted." + @echo "**** The configure script must be executed before running 'make'." @echo "****" @exit 1 -makeopts: configure - @CFLAGS="" ./configure - @echo "****" - @echo "**** The configure script was just executed, so 'make' needs to be" - @echo "**** restarted." - @echo "****" - @exit 1 - -menuselect.makeopts menuselect.makedeps: menuselect/menuselect menuselect-tree +menuselect.makeopts: menuselect/menuselect menuselect-tree menuselect/menuselect --check-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts -#ifneq ($(wildcard tags),) -ctags: tags -#endif +$(MOD_SUBDIRS_EMBED_LDSCRIPT): + @echo "EMBED_LDSCRIPTS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules -ifneq ($(wildcard TAGS),) -all: TAGS -endif +$(MOD_SUBDIRS_EMBED_LDFLAGS): + @echo "EMBED_LDFLAGS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules -editline/config.h: - cd editline && unset CFLAGS AST_LIBS && CFLAGS="$(OPTIMIZE)" ./configure ; \ +$(MOD_SUBDIRS_EMBED_LIBS): + @echo "EMBED_LIBS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules -editline/libedit.a: - cd editline && unset CFLAGS AST_LIBS && test -f config.h || CFLAGS="$(OPTIMIZE)" ./configure - $(MAKE) -C editline libedit.a +makeopts.embed_rules: menuselect.makeopts + @echo "Generating embedded module rules ..." + @rm -f $@ + @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDSCRIPT) + @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LDFLAGS) + @$(MAKE) --no-print-directory $(MOD_SUBDIRS_EMBED_LIBS) -db1-ast/libdb1.a: - $(MAKE) -C db1-ast libdb1.a +$(SUBDIRS): depend makeopts.embed_rules -ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),) - ifneq ($(wildcard .depend),) - include .depend - endif -endif +# ensure that all module subdirectories are processed before 'main' during +# a parallel build, since if there are modules selected to be embedded the +# directories containing them must be completed before the main Asterisk +# binary can be built +main: $(filter-out main,$(MOD_SUBDIRS)) -ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),) - ifneq ($(wildcard .tags-depend),) - include .tags-depend - endif -endif +$(MOD_SUBDIRS): + @CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all -ast_expr2.c ast_expr2.h: - bison -o $@ -d --name-prefix=ast_yy ast_expr2.y - -ast_expr2f.c: - flex -o $@ --full ast_expr2.fl - -testexpr2: config.status include/asterisk/buildopts.h ast_expr2f.c ast_expr2.c ast_expr2.h - $(CC) -g -c -Iinclude -DSTANDALONE ast_expr2f.c - $(CC) -g -c -Iinclude -DSTANDALONE ast_expr2.c - $(CC) -g -o testexpr2 ast_expr2f.o ast_expr2.o - rm ast_expr2.o ast_expr2f.o - -manpage: asterisk.8 - -asterisk.8: asterisk.sgml - rm -f asterisk.8 - docbook2man asterisk.sgml - mv ./*.8 asterisk.8 - -asterisk.pdf: asterisk.sgml - docbook2pdf asterisk.sgml - -asterisk.ps: asterisk.sgml - docbook2ps asterisk.sgml - -asterisk.html: asterisk.sgml - docbook2html asterisk.sgml - mv r1.html asterisk.html - -asterisk.txt: asterisk.sgml - docbook2txt asterisk.sgml +$(OTHER_SUBDIRS): + @CFLAGS="$(OTHER_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all defaults.h: makeopts @build_tools/make_defaults_h > $@.tmp @@ -500,39 +302,19 @@ include/asterisk/buildopts.h: menuselect.makeopts fi @rm -f $@.tmp -channel.o: CFLAGS+=$(ZAPTEL_INCLUDE) - -asterisk: include/asterisk/buildopts.h editline/libedit.a db1-ast/libdb1.a $(OBJS) - @build_tools/make_build_h > include/asterisk/build.h.tmp - @if cmp -s include/asterisk/build.h.tmp include/asterisk/build.h ; then echo ; else \ - mv include/asterisk/build.h.tmp include/asterisk/build.h ; \ - fi - @rm -f include/asterisk/build.h.tmp - @$(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c - @echo " [LD] $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.1 $(AST_LIBS) -> $@" - @$(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a $(AST_LIBS) - -muted: muted.o -muted: LIBS+=$(AUDIO_LIBS) - $(SUBDIRS_CLEAN_DEPEND): - @$(MAKE) -C $(@:-clean-depend=) clean-depend + @$(MAKE) --no-print-directory -C $(@:-clean-depend=) clean-depend $(SUBDIRS_CLEAN): - @$(MAKE) -C $(@:-clean=) clean + @$(MAKE) --no-print-directory -C $(@:-clean=) clean clean-depend: $(SUBDIRS_CLEAN_DEPEND) clean: $(SUBDIRS_CLEAN) clean-depend - rm -f *.o *.so asterisk rm -f defaults.h rm -f include/asterisk/build.h rm -f include/asterisk/version.h - rm -f .tags-sources tags TAGS - rm -f .depend .tags-depend - @if [ -f editline/Makefile ]; then $(MAKE) -C editline distclean ; fi - @$(MAKE) -C db1-ast clean - @$(MAKE) -C stdtime clean + rm -f .depend @$(MAKE) -C menuselect clean dist-clean: distclean @@ -541,7 +323,8 @@ distclean: clean @$(MAKE) -C mxml clean @$(MAKE) -C menuselect dist-clean @$(MAKE) -C sounds dist-clean - rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps + rm -f menuselect.makeopts makeopts makeopts.xml menuselect.makedeps + rm -f makeopts.embed_rules rm -f config.log config.status rm -rf autom4te.cache rm -f include/asterisk/autoconfig.h @@ -595,8 +378,7 @@ bininstall: all mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor - if [ -f asterisk ]; then $(INSTALL) -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/; fi - if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi + $(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/ $(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk $(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/ $(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/ @@ -618,7 +400,7 @@ bininstall: all mkdir -p $(DESTDIR)$(ASTMANDIR)/man8 $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys - $(INSTALL) -m 644 asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8 + $(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8 $(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8 $(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8 $(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8 @@ -781,7 +563,7 @@ progdocs: echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen - config: - @if [ "${OSARCH}" = "Linux" ]; then \ + @if [ "${OSARCH}" = "linux-gnu" ]; then \ if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \ $(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \ /sbin/chkconfig --add asterisk; \ @@ -806,69 +588,29 @@ config: echo "We could not install init scripts for your operating system."; \ fi -dont-optimize: _all - -valgrind: dont-optimize - $(MOD_SUBDIRS_DEPEND): - @CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C $(@:-depend=) depend + @CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) --no-print-directory -C $(@:-depend=) depend $(OTHER_SUBDIRS_DEPEND): - @CFLAGS="$(OTHER_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C $(@:-depend=) depend + @CFLAGS="$(OTHER_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) --no-print-directory -C $(@:-depend=) depend -depend: include/asterisk/version.h include/asterisk/buildopts.h .depend defaults.h $(SUBDIRS_DEPEND) - -.depend: include/asterisk/version.h include/asterisk/buildopts.h defaults.h - build_tools/mkdep $(CFLAGS) $(wildcard *.c) - -.tags-depend: - @echo -n ".tags-depend: " > $@ - @$(FIND) . -maxdepth 1 -name \*.c -printf "\t%p \\\\\n" >> $@ - @$(FIND) . -maxdepth 1 -name \*.h -printf "\t%p \\\\\n" >> $@ - @$(FIND) $(SUBDIRS) -name \*.c -printf "\t%p \\\\\n" >> $@ - @$(FIND) $(SUBDIRS) -name \*.h -printf "\t%p \\\\\n" >> $@ - @$(FIND) include -name \*.h -printf "\t%p \\\\\n" >> $@ - @echo >> $@ - -.tags-sources: - @rm -f $@ - @$(FIND) . -maxdepth 1 -name \*.c -print >> $@ - @$(FIND) . -maxdepth 1 -name \*.h -print >> $@ - @$(FIND) $(SUBDIRS) -name \*.c -print >> $@ - @$(FIND) $(SUBDIRS) -name \*.h -print >> $@ - @$(FIND) include -name \*.h -print >> $@ - -tags: .tags-depend .tags-sources - ctags -L .tags-sources -o $@ - -ctags: tags - -TAGS: .tags-depend .tags-sources - etags -o $@ `cat .tags-sources` - -etags: TAGS - -%_env: - $(MAKE) -C $(shell echo $@ | sed "s/_env//g") env +depend: include/asterisk/version.h include/asterisk/buildopts.h defaults.h $(SUBDIRS_DEPEND) sounds: $(MAKE) -C sounds all -env: - env - # If the cleancount has been changed, force a make clean. # .cleancount is the global clean count, and .lastclean is the # last clean count we had cleantest: - @if cmp -s .cleancount .lastclean ; then echo ; else \ + @if ! cmp -s .cleancount .lastclean ; then \ $(MAKE) clean; cp -f .cleancount .lastclean;\ $(MAKE) defaults.h;\ fi $(SUBDIRS_UNINSTALL): - @$(MAKE) -C $(@:-uninstall=) uninstall + @$(MAKE) --no-print-directory -C $(@:-uninstall=) uninstall _uninstall: $(SUBDIRS_UNINSTALL) rm -f $(DESTDIR)$(MODULES_DIR)/* @@ -905,15 +647,15 @@ uninstall-all: _uninstall menuselect: menuselect/menuselect menuselect-tree -@menuselect/menuselect $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!" -menuselect/menuselect: menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h config.status mxml/libmxml.a - @CFLAGS="-include $(ASTTOPDIR)/include/asterisk/autoconfig.h -I$(ASTTOPDIR)/include" PARENTSRC="$(ASTTOPDIR)" $(MAKE) -C menuselect menuselect +menuselect/menuselect: makeopts menuselect/menuselect.c menuselect/menuselect_curses.c menuselect/menuselect_stub.c menuselect/menuselect.h menuselect/linkedlists.h makeopts mxml/libmxml.a + @CFLAGS="-include $(ASTTOPDIR)/include/asterisk/autoconfig.h -I$(ASTTOPDIR)/include" PARENTSRC="$(ASTTOPDIR)" $(MAKE) -C menuselect CC="$(HOST_CC)" menuselect mxml/libmxml.a: - @cd mxml && unset CFLAGS AST_LIBS && test -f config.h || ./configure + @cd mxml && unset CFLAGS AST_LIBS && test -f config.h || ./configure --build=$(BUILD_PLATFORM) --host=$(BUILD_PLATFORM) $(MAKE) -C mxml libmxml.a -menuselect-tree: $(foreach dir,$(MOD_SUBDIRS),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml - @echo "Generating list of available modules ..." +menuselect-tree: $(foreach dir,$(MOD_SUBDIRS),$(wildcard $(dir)/*.c) $(wildcard $(dir)/*.cc)) build_tools/cflags.xml sounds/sounds.xml build_tools/embed_modules.xml + @echo "Generating input for menuselect ..." @build_tools/prep_moduledeps > $@ -.PHONY: menuselect sounds clean clean-depend dist-clean distclean all _all depend cleantest uninstall _uninstall uninstall-all dont-optimize valgrind $(SUBDIRS_INSTALL) $(SUBDIRS_CLEAN) $(SUBDIRS_CLEAN_DEPEND) $(SUBDIRS_DEPEND) $(SUBDIRS_UNINSTALL) $(SUBDIRS) +.PHONY: menuselect main sounds clean clean-depend dist-clean distclean all prereqs depend cleantest uninstall _uninstall uninstall-all dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_CLEAN) $(SUBDIRS_CLEAN_DEPEND) $(SUBDIRS_DEPEND) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) diff --git a/Makefile.moddir_rules b/Makefile.moddir_rules index 0a82471e4..8e9c082fe 100644 --- a/Makefile.moddir_rules +++ b/Makefile.moddir_rules @@ -1,7 +1,7 @@ # # Asterisk -- A telephony toolkit for Linux. # -# Makefile rules +# Makefile rules for subdirectories containing modules # # Copyright (C) 2006, Digium, Inc. # @@ -11,50 +11,83 @@ # the GNU General Public License # +ifneq ($(findstring MALLOC_DEBUG,$(MENUSELECT_CFLAGS)),) + CFLAGS+=-include $(ASTTOPDIR)/include/asterisk/astmm.h +endif + +ifneq ($(findstring STATIC_BUILD,$(MENUSELECT_CFLAGS)),) + STATIC_BUILD=-static +endif + include $(ASTTOPDIR)/Makefile.rules -define module_o_c_template -$(1).o: $(1).c -$(1).o: CFLAGS+=$$(MENUSELECT_OPTS_$(1):%=-D%) $(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_INCLUDE)) +comma:=, + +define module_o_template +$(2): $(3) +$(2): CFLAGS+=-DAST_MODULE=\"$(1)\" $$(MENUSELECT_OPTS_$(1):%=-D%) $(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_INCLUDE)) endef -define module_oo_cc_template -$(1).oo: $(1).cc -$(1).oo: CFLAGS+=$$(MENUSELECT_OPTS_$(1):%=-D%) $(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_INCLUDE)) -endef - -define module_so_o_template -$(1).so: $(1).o +define module_so_template +$(1)=$(1).so +$(1).so: CFLAGS+=-fPIC $(1).so: LIBS+=$(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_LIB)) $(1).so: LDFLAGS+=$(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_LDFLAGS)) +$(1).so: $(2) endef -define module_so_oo_template -$(1).so: $(1).oo -$(1).so: LIBS+=$(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_LIB)) -$(1).so: LDFLAGS+=$(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_LDFLAGS)) +define module_a_template +$(1)=modules.link +modules.link: $(2) endef -$(foreach mod,$(C_MODS),$(eval $(call module_o_c_template,$(mod)))) +$(foreach mod,$(C_MODS),$(eval $(call module_o_template,$(mod),$(mod).o,$(mod).c))) -$(foreach mod,$(C_MODS),$(eval $(call module_so_o_template,$(mod)))) +$(foreach mod,$(CC_MODS),$(eval $(call module_o_template,$(mod),$(mod).oo,$(mod).cc))) -$(foreach mod,$(CC_MODS),$(eval $(call module_oo_cc_template,$(mod)))) +$(foreach mod,$(filter-out $(EMBEDDED_MODS),$(C_MODS)),$(eval $(call module_so_template,$(mod),$(mod).o))) -$(foreach mod,$(CC_MODS),$(eval $(call module_so_oo_template,$(mod)))) +$(foreach mod,$(filter-out $(EMBEDDED_MODS),$(CC_MODS)),$(eval $(call module_so_template,$(mod),$(mod).oo))) + +$(foreach mod,$(filter $(EMBEDDED_MODS),$(C_MODS)),$(eval $(call module_a_template,$(mod),$(mod).o))) + +$(foreach mod,$(filter $(EMBEDDED_MODS),$(CC_MODS)),$(eval $(call module_a_template,$(mod),$(mod).oo))) .PHONY: clean clean-depend depend uninstall _all -_all: $(SELECTED_MODS:%=%.so) +ifneq ($(LOADABLE_MODS),) +_all: $(LOADABLE_MODS:%=%.so) +endif + +ifneq ($(EMBEDDED_MODS),) +_all: modules.link +__embed_ldscript: + @echo "../$(SUBDIR)/modules.link" +__embed_ldflags: + @echo "$(foreach mod,$(filter $(EMBEDDED_MODS),$(C_MODS)),$(foreach dep,$(MENUSELECT_DEPENDS_$(mod)),$(dep)_LDFLAGS))" + @echo "$(foreach mod,$(filter $(EMBEDDED_MODS),$(CC_MODS)),$(foreach dep,$(MENUSELECT_DEPENDS_$(mod)),$(dep)_LDFLAGS))" +__embed_libs: + @echo "$(foreach mod,$(filter $(EMBEDDED_MODS),$(C_MODS)),$(foreach dep,$(MENUSELECT_DEPENDS_$(mod)),$(dep)_LIB))" + @echo "$(foreach mod,$(filter $(EMBEDDED_MODS),$(CC_MODS)),$(foreach dep,$(MENUSELECT_DEPENDS_$(mod)),$(dep)_LIB))" +else +__embed_ldscript: +__embed_ldflags: +__embed_libs: +endif + +modules.link: + @rm -f $@ + @for file in $(patsubst $(ASTTOPDIR)/%,%,$(realpath $^)); do echo "INPUT (../$${file})" >> $@; done clean-depend:: rm -f .depend clean:: clean-depend rm -f *.so *.o *.oo + rm -f modules.link install:: all - for x in $(SELECTED_MODS:%=%.so); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done + for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done uninstall:: @@ -65,4 +98,4 @@ endif depend: .depend .depend: - ../build_tools/mkdep $(CFLAGS) `ls *.c` + ../build_tools/mkdep $(CFLAGS) `ls *.c *.cc 2> /dev/null` diff --git a/Makefile.rules b/Makefile.rules index 47a92a5a9..0c2b97d62 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -15,6 +15,8 @@ # Prefixing one or the other with @\# or @ or nothing makes the desired # behaviour. ECHO_PREFIX prefixes the comment, CMD_PREFIX prefixes the command. +include $(ASTTOPDIR)/makeopts + ifeq ($(NOISY_BUILD),) ECHO_PREFIX=@ CMD_PREFIX=@ @@ -23,6 +25,17 @@ else CMD_PREFIX= endif +ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS)),) +# More GSM codec optimization +# Uncomment to enable MMXTM optimizations for x86 architecture CPU's +# which support MMX instructions. This should be newer pentiums, +# ppro's, etc, as well as the AMD K6 and K7. +#K6OPT=-DK6OPT + +OPTIMIZE?=-O6 +CFLAGS+=$(OPTIMIZE) +endif + define ast_make_o_c $(1): $(2) $(ECHO_PREFIX) echo " [CC] $$< -> $$@" @@ -50,13 +63,13 @@ endef define ast_make_so_o $(1): $(2) $(ECHO_PREFIX) echo " [LD] $$^ -> $$@" - $(CMD_PREFIX) $$(CC) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS) + $(CMD_PREFIX) $$(CC) $$(STATIC_BUILD) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS) endef define ast_make_so_oo $(1): $(2) $(ECHO_PREFIX) echo " [LDXX] $$^ -> $$@" - $(CMD_PREFIX) $$(CXX) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS) + $(CMD_PREFIX) $$(CXX) $$(STATIC_BUILD) -o $$@ $$(LDFLAGS) $$(SOLINK) $$^ $$(LIBS) endef define ast_make_a_o @@ -69,13 +82,13 @@ endef define ast_make_final $(1): $(2) $(ECHO_PREFIX) echo " [LD] $$^ -> $$@" - $(CMD_PREFIX) $$(CC) -o $$@ $$(LDFLAGS) $$^ $$(LIBS) + $(CMD_PREFIX) $$(CXX) $$(STATIC_BUILD) -o $$@ $$(LDFLAGS) $$^ $$(LIBS) endef define ast_make_final_host $(1): $(2) $(ECHO_PREFIX) echo " [LD] $$^ -> $$@" - $(CMD_PREFIX) $$(HOST_CC) -o $$@ $$(CFLAGS) $$(LDFLAGS) $$^ $$(LIBS) + $(CMD_PREFIX) $$(HOST_CC) $$(STATIC_BUILD) -o $$@ $$(CFLAGS) $$(LDFLAGS) $$^ $$(LIBS) endef $(eval $(call ast_make_o_c,%.o,%.c)) @@ -84,8 +97,6 @@ $(eval $(call ast_make_oo_cc,%.oo,%.cc)) $(eval $(call ast_make_so_o,%.so,%.o)) -$(eval $(call ast_make_so_oo,%.so,%.oo)) - $(eval $(call ast_make_final,%,%.o)) $(eval $(call ast_make_c_y,%.c,%.y)) diff --git a/acinclude.m4 b/acinclude.m4 index 34eefe82b..1bd093703 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,3 +1,16 @@ +# AST_GCC_ATTRIBUTE([attribute name]) + +AC_DEFUN([AST_GCC_ATTRIBUTE], +[ +AC_MSG_CHECKING(checking for compiler 'attribute $1' support) +AC_COMPILE_IFELSE( + AC_LANG_PROGRAM([static int __attribute__(($1)) test(void) {}], + []), + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED([HAVE_ATTRIBUTE_$1], 1, [Define to 1 if your GCC C compiler supports the '$1' attribute.]), + AC_MSG_RESULT(no)) +]) + # AST_EXT_LIB_SETUP([package symbol name], [package friendly name], [package option name], [additional help text]) AC_DEFUN([AST_EXT_LIB_SETUP], diff --git a/apps/Makefile b/apps/Makefile index df5f60a44..0373a3b63 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -9,7 +9,7 @@ # the GNU General Public License # -ifneq ($(wildcard ../menuselect.makeopts),) +ifneq ($(wildcard $(ASTTOPDIR)/menuselect.makeopts),) include ../menuselect.makeopts include ../menuselect.makedeps endif @@ -17,22 +17,25 @@ endif C_MODS:=$(filter-out $(MENUSELECT_APPS),$(patsubst %.c,%,$(wildcard app_*.c))) CC_MODS:=$(filter-out $(MENUSELECT_APPS),$(patsubst %.cc,%,$(wildcard app_*.cc))) -SELECTED_MODS:=$(C_MODS) $(CC_MODS) +LOADABLE_MODS:=$(C_MODS) $(CC_MODS) + +ifneq ($(findstring apps,$(MENUSELECT_EMBED)),) + EMBEDDED_MODS:=$(LOADABLE_MODS) + LOADABLE_MODS:= +endif ifneq ($(findstring ODBC_STORAGE,$(MENUSELECT_OPTS_app_voicemail)),) MENUSELECT_DEPENDS_app_voicemail+=$(MENUSELECT_DEPENDS_ODBC_STORAGE) endif -ifneq ($(findstring EXTENDED_ODBC_STORAGE,$(MENUSELECT_OPTS_app_voicemail)),) -MENUSELECT_DEPENDS_app_voicemail+=$(MENUSELECT_DEPENDS_EXTENDED_ODBC_STORAGE) -endif ifneq ($(findstring IMAP_STORAGE,$(MENUSELECT_OPTS_app_voicemail)),) MENUSELECT_DEPENDS_app_voicemail+=$(MENUSELECT_DEPENDS_IMAP_STORAGE) endif +ifeq (SunOS,$(shell uname)) +MENUSELECT_DEPENDS_app_chanspy+=RT +RT_LIB=-lrt +endif + all: _all include $(ASTTOPDIR)/Makefile.moddir_rules - -ifeq (SunOS,$(shell uname)) -app_chanspy.so: LIBS+=-lrt -endif diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c index e8ab87802..04b9000fd 100644 --- a/apps/app_adsiprog.c +++ b/apps/app_adsiprog.c @@ -1545,9 +1545,9 @@ static int adsi_prog(struct ast_channel *chan, char *script) static int adsi_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (ast_strlen_zero(data)) data = "asterisk.adsi"; @@ -1561,16 +1561,16 @@ static int adsi_exec(struct ast_channel *chan, void *data) res = adsi_prog(chan, data); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); res = ast_unregister_application(app); @@ -1578,20 +1578,9 @@ static int unload_module(void *mod) return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; return ast_register_application(app, adsi_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Asterisk ADSI Programming Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Asterisk ADSI Programming Application"); diff --git a/apps/app_alarmreceiver.c b/apps/app_alarmreceiver.c index faa2c6a00..5b745d0ab 100644 --- a/apps/app_alarmreceiver.c +++ b/apps/app_alarmreceiver.c @@ -626,13 +626,13 @@ static int receive_ademco_contact_id( struct ast_channel *chan, void *data, int static int alarmreceiver_exec(struct ast_channel *chan, void *data) { int res = 0; - struct localuser *u; + struct ast_module_user *u; event_node_t *elp, *efree; char signalling_type[64] = ""; event_node_t *event_head = NULL; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); /* Set write and read formats to ULAW */ @@ -641,13 +641,13 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data) if (ast_set_write_format(chan,AST_FORMAT_ULAW)){ ast_log(LOG_WARNING, "AlarmReceiver: Unable to set write format to Mu-law on %s\n",chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } if (ast_set_read_format(chan,AST_FORMAT_ULAW)){ ast_log(LOG_WARNING, "AlarmReceiver: Unable to set read format to Mu-law on %s\n",chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -666,7 +666,7 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data) res = ast_answer(chan); if (res) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } } @@ -721,7 +721,7 @@ static int alarmreceiver_exec(struct ast_channel *chan, void *data) } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -818,32 +818,21 @@ static int load_config(void) */ -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; load_config(); return ast_register_application(app, alarmreceiver_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Alarm Receiver for Asterisk"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Alarm Receiver for Asterisk"); diff --git a/apps/app_amd.c b/apps/app_amd.c index 1ffc463b2..2f7148b9c 100644 --- a/apps/app_amd.c +++ b/apps/app_amd.c @@ -321,11 +321,11 @@ static void isAnsweringMachine(struct ast_channel *chan, void *data) static int amd_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); isAnsweringMachine(chan, data); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -385,33 +385,26 @@ static void load_config(void) return; } -static int unload_module(void *mod) +static int unload_module(void) { - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return ast_unregister_application(app); } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; load_config(); return ast_register_application(app, amd_exec, synopsis, descrip); } -static int reload(void *mod) +static int reload(void) { load_config(); return 0; } -static const char *description(void) -{ - return "Answering Machine Detection Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, reload, NULL, NULL); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Answering Machine Detection Application", + .load = load_module, + .unload = unload_module, + .reload = reload, + ); diff --git a/apps/app_authenticate.c b/apps/app_authenticate.c index 0e6b8eb2c..03bc5ed81 100644 --- a/apps/app_authenticate.c +++ b/apps/app_authenticate.c @@ -95,7 +95,7 @@ static int auth_exec(struct ast_channel *chan, void *data) { int res=0; int retries; - struct localuser *u; + struct ast_module_user *u; char passwd[256]; char *prompt; int maxdigits; @@ -113,12 +113,12 @@ static int auth_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (chan->_state != AST_STATE_UP) { res = ast_answer(chan); if (res) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } } @@ -226,15 +226,15 @@ static int auth_exec(struct ast_channel *chan, void *data) res = -1; } } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); res = ast_unregister_application(app); @@ -242,19 +242,9 @@ static int unload_module(void *mod) return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, auth_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Authentication Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Authentication Application"); diff --git a/apps/app_cdr.c b/apps/app_cdr.c index 8d20fb012..e8f76a602 100644 --- a/apps/app_cdr.c +++ b/apps/app_cdr.c @@ -43,48 +43,37 @@ static char *nocdr_descrip = static char *nocdr_app = "NoCDR"; static char *nocdr_synopsis = "Tell Asterisk to not maintain a CDR for the current call"; -LOCAL_USER_DECL; static int nocdr_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (chan->cdr) { ast_cdr_free(chan->cdr); chan->cdr = NULL; } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(nocdr_app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(nocdr_app, nocdr_exec, nocdr_synopsis, nocdr_descrip); } -static const char *description(void) -{ - return "Tell Asterisk to not maintain a CDR for the current call"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Tell Asterisk to not maintain a CDR for the current call"); diff --git a/apps/app_chanisavail.c b/apps/app_chanisavail.c index c23aa6edc..c6931d8db 100644 --- a/apps/app_chanisavail.c +++ b/apps/app_chanisavail.c @@ -63,13 +63,12 @@ static char *descrip = " s - Consider the channel unavailable if the channel is in use at all\n" " j - Support jumping to priority n+101 if no channel is available\n"; -LOCAL_USER_DECL; static int chanavail_exec(struct ast_channel *chan, void *data) { int res=-1, inuse=-1, option_state=0, priority_jump=0; int status; - struct localuser *u; + struct ast_module_user *u; char *info, tmp[512], trychan[512], *peers, *tech, *number, *rest, *cur; struct ast_channel *tempchan; AST_DECLARE_APP_ARGS(args, @@ -82,7 +81,7 @@ static int chanavail_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); info = ast_strdupa(data); @@ -108,7 +107,7 @@ static int chanavail_exec(struct ast_channel *chan, void *data) number = strchr(tech, '/'); if (!number) { ast_log(LOG_WARNING, "ChanIsAvail argument takes format ([technology]/[device])\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } *number = '\0'; @@ -145,41 +144,30 @@ static int chanavail_exec(struct ast_channel *chan, void *data) pbx_builtin_setvar_helper(chan, "AVAILORIGCHAN", ""); if (priority_jump || ast_opt_priority_jumping) { if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } } } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res = 0; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; return ast_register_application(app, chanavail_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Check channel availability"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Check channel availability"); diff --git a/apps/app_channelredirect.c b/apps/app_channelredirect.c index ada623018..a8eedf9b4 100644 --- a/apps/app_channelredirect.c +++ b/apps/app_channelredirect.c @@ -48,12 +48,11 @@ static char *descrip = "ChannelRedirect(channel|[[context|]extension|]priority):\n" " Sends the specified channel to the specified extension priority\n"; -LOCAL_USER_DECL; static int asyncgoto_exec(struct ast_channel *chan, void *data) { int res = -1; - struct localuser *u; + struct ast_module_user *u; char *info, *context, *exten, *priority; int prio = 1; struct ast_channel *chan2 = NULL; @@ -68,7 +67,7 @@ static int asyncgoto_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); info = ast_strdupa(data); AST_STANDARD_APP_ARGS(args, info); @@ -117,36 +116,25 @@ static int asyncgoto_exec(struct ast_channel *chan, void *data) chanquit: ast_mutex_unlock(&chan2->lock); quit: - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; return ast_register_application(app, asyncgoto_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Channel Redirect"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Channel Redirect"); diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c index a4fcb0b4a..1f8a9f01c 100644 --- a/apps/app_chanspy.c +++ b/apps/app_chanspy.c @@ -140,7 +140,6 @@ AST_APP_OPTIONS(spy_opts, { AST_APP_OPTION_ARG('r', OPTION_RECORD, OPT_ARG_RECORD), }); -LOCAL_USER_DECL; struct chanspy_translation_helper { /* spy data */ @@ -540,7 +539,7 @@ static int common_exec(struct ast_channel *chan, const struct ast_flags *flags, static int chanspy_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; char *options = NULL; char *spec = NULL; char *argv[2]; @@ -555,7 +554,7 @@ static int chanspy_exec(struct ast_channel *chan, void *data) data = ast_strdupa(data); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if ((argc = ast_app_separate_args(data, '|', argv, sizeof(argv) / sizeof(argv[0])))) { spec = argv[0]; @@ -593,7 +592,7 @@ static int chanspy_exec(struct ast_channel *chan, void *data) oldwf = chan->writeformat; if (ast_set_write_format(chan, AST_FORMAT_SLINEAR) < 0) { ast_log(LOG_ERROR, "Could Not Set Write Format.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -615,14 +614,14 @@ static int chanspy_exec(struct ast_channel *chan, void *data) if (oldwf && ast_set_write_format(chan, oldwf) < 0) ast_log(LOG_ERROR, "Could Not Set Write Format.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } static int extenspy_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; char *options = NULL; char *exten = NULL; char *context = NULL; @@ -638,7 +637,7 @@ static int extenspy_exec(struct ast_channel *chan, void *data) data = ast_strdupa(data); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if ((argc = ast_app_separate_args(data, '|', argv, sizeof(argv) / sizeof(argv[0])))) { context = argv[0]; @@ -676,7 +675,7 @@ static int extenspy_exec(struct ast_channel *chan, void *data) oldwf = chan->writeformat; if (ast_set_write_format(chan, AST_FORMAT_SLINEAR) < 0) { ast_log(LOG_ERROR, "Could Not Set Write Format.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -698,43 +697,31 @@ static int extenspy_exec(struct ast_channel *chan, void *data) if (oldwf && ast_set_write_format(chan, oldwf) < 0) ast_log(LOG_ERROR, "Could Not Set Write Format.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res = 0; res |= ast_unregister_application(app_chan); res |= ast_unregister_application(app_ext); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res = 0; - __mod_desc = mod; - res |= ast_register_application(app_chan, chanspy_exec, tdesc, desc_chan); res |= ast_register_application(app_ext, extenspy_exec, tdesc, desc_ext); return res; } -static const char *description(void) -{ - return (char *) tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Listen to the audio of an active channel"); diff --git a/apps/app_controlplayback.c b/apps/app_controlplayback.c index a2e3929da..8a5a845cd 100644 --- a/apps/app_controlplayback.c +++ b/apps/app_controlplayback.c @@ -66,7 +66,6 @@ static const char *descrip = " CPLAYBACKSTATUS - This variable contains the status of the attempt as a text\n" " string, one of: SUCCESS | USERSTOPPED | ERROR\n"; -LOCAL_USER_DECL; static int is_on_phonepad(char key) { @@ -77,7 +76,7 @@ static int controlplayback_exec(struct ast_channel *chan, void *data) { int res = 0, priority_jump = 0; int skipms = 0; - struct localuser *u; + struct ast_module_user *u; char *tmp; int argc; char *argv[8]; @@ -97,7 +96,7 @@ static int controlplayback_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); tmp = ast_strdupa(data); memset(argv, 0, sizeof(argv)); @@ -106,7 +105,7 @@ static int controlplayback_exec(struct ast_channel *chan, void *data) if (argc < 1) { ast_log(LOG_WARNING, "ControlPlayback requires an argument (filename)\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -149,31 +148,21 @@ static int controlplayback_exec(struct ast_channel *chan, void *data) pbx_builtin_setvar_helper(chan, "CPLAYBACKSTATUS", "SUCCESS"); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, controlplayback_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Control Playback Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Control Playback Application"); diff --git a/apps/app_db.c b/apps/app_db.c index fc8c52b1a..73d092ab6 100644 --- a/apps/app_db.c +++ b/apps/app_db.c @@ -64,14 +64,13 @@ static char *dt_app = "DBdeltree"; static char *d_synopsis = "Delete a key from the database"; static char *dt_synopsis = "Delete a family or keytree from the database"; -LOCAL_USER_DECL; static int deltree_exec(struct ast_channel *chan, void *data) { char *argv, *family, *keytree; - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); argv = ast_strdupa(data); @@ -80,7 +79,7 @@ static int deltree_exec(struct ast_channel *chan, void *data) keytree = strsep(&argv, "\0"); if (!family || !keytree) { ast_log(LOG_DEBUG, "Ignoring; Syntax error in argument\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } if (ast_strlen_zero(keytree)) @@ -102,7 +101,7 @@ static int deltree_exec(struct ast_channel *chan, void *data) ast_verbose(VERBOSE_PREFIX_3 "DBdeltree: Error deleting key from database.\n"); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -110,10 +109,10 @@ static int deltree_exec(struct ast_channel *chan, void *data) static int del_exec(struct ast_channel *chan, void *data) { char *argv, *family, *key; - struct localuser *u; + struct ast_module_user *u; static int deprecation_warning = 0; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!deprecation_warning) { deprecation_warning = 1; @@ -127,7 +126,7 @@ static int del_exec(struct ast_channel *chan, void *data) key = strsep(&argv, "\0"); if (!family || !key) { ast_log(LOG_DEBUG, "Ignoring; Syntax error in argument\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } if (option_verbose > 2) @@ -140,12 +139,12 @@ static int del_exec(struct ast_channel *chan, void *data) ast_log(LOG_DEBUG, "Ignoring, no parameters\n"); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int retval; @@ -155,25 +154,14 @@ static int unload_module(void *mod) return retval; } -static int load_module(void *mod) +static int load_module(void) { int retval; - __mod_desc = mod; retval = ast_register_application(d_app, del_exec, d_synopsis, d_descrip); retval |= ast_register_application(dt_app, deltree_exec, dt_synopsis, dt_descrip); return retval; } -static const char *description(void) -{ - return "Database Access Functions"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Database Access Functions"); diff --git a/apps/app_dial.c b/apps/app_dial.c index 99392abbc..13b5b3371 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -298,7 +298,6 @@ struct dial_localuser { struct dial_localuser *next; }; -LOCAL_USER_DECL; static void hanguptree(struct dial_localuser *outgoing, struct ast_channel *exception) { @@ -769,7 +768,7 @@ static int valid_priv_reply(struct ast_flags *opts, int res) static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags *peerflags) { int res = -1; - struct localuser *u; + struct ast_module_user *u; char *rest, *cur; struct dial_localuser *outgoing = NULL; struct ast_channel *peer; @@ -813,7 +812,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); parse = ast_strdupa(data); @@ -1634,7 +1633,7 @@ out: res = 0; done: - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -1650,7 +1649,7 @@ static int retrydial_exec(struct ast_channel *chan, void *data) char *announce = NULL, *dialdata = NULL; const char *context = NULL; int sleep = 0, loops = 0, res = -1; - struct localuser *u; + struct ast_module_user *u; struct ast_flags peerflags; if (ast_strlen_zero(data)) { @@ -1658,7 +1657,7 @@ static int retrydial_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); announce = ast_strdupa(data); @@ -1739,23 +1738,23 @@ static int retrydial_exec(struct ast_channel *chan, void *data) if (ast_test_flag(chan, AST_FLAG_MOH)) ast_moh_stop(chan); done: - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); res |= ast_unregister_application(rapp); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res; @@ -1765,14 +1764,4 @@ static int load_module(void *mod) return res; } -static const char *description(void) -{ - return "Dialing Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Dialing Application"); diff --git a/apps/app_dictate.c b/apps/app_dictate.c index b77a389ae..0c46118e4 100644 --- a/apps/app_dictate.c +++ b/apps/app_dictate.c @@ -51,7 +51,6 @@ static char *synopsis = "Virtual Dictation Machine"; static char *desc = " Dictate([[|]])\n" "Start dictation machine using optional base dir for files.\n"; -LOCAL_USER_DECL; typedef enum { DFLAG_RECORD = (1 << 0), @@ -90,7 +89,7 @@ static int dictate_exec(struct ast_channel *chan, void *data) struct ast_flags flags = {0}; struct ast_filestream *fs; struct ast_frame *f = NULL; - struct localuser *u; + struct ast_module_user *u; int ffactor = 320 * 80, res = 0, done = 0, @@ -103,7 +102,7 @@ static int dictate_exec(struct ast_channel *chan, void *data) maxlen = 0, mode = 0; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); snprintf(dftbase, sizeof(dftbase), "%s/dictate", ast_config_AST_SPOOL_DIR); if (!ast_strlen_zero(data)) { @@ -123,7 +122,7 @@ static int dictate_exec(struct ast_channel *chan, void *data) oldr = chan->readformat; if ((res = ast_set_read_format(chan, AST_FORMAT_SLINEAR)) < 0) { ast_log(LOG_WARNING, "Unable to set to linear mode.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -330,31 +329,20 @@ static int dictate_exec(struct ast_channel *chan, void *data) if (oldr) { ast_set_read_format(chan, oldr); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; return ast_register_application(app, dictate_exec, synopsis, desc); } -static const char *description(void) -{ - return "Virtual Dictation Machine"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Virtual Dictation Machine"); diff --git a/apps/app_directed_pickup.c b/apps/app_directed_pickup.c index c79bad26f..e45c87603 100644 --- a/apps/app_directed_pickup.c +++ b/apps/app_directed_pickup.c @@ -53,12 +53,11 @@ static const char *descrip = "10@PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same context\n" "as \"extension\"."; -LOCAL_USER_DECL; static int pickup_exec(struct ast_channel *chan, void *data) { int res = 0; - struct localuser *u = NULL; + struct ast_module_user *u = NULL; struct ast_channel *origin = NULL, *target = NULL; char *tmp = NULL, *exten = NULL, *context = NULL, *rest=data; char workspace[256] = ""; @@ -69,7 +68,7 @@ static int pickup_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); while (!target && (exten = rest) ) { res = 0; @@ -146,12 +145,12 @@ static int pickup_exec(struct ast_channel *chan, void *data) if (target) ast_mutex_unlock(&target->lock); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; @@ -160,20 +159,9 @@ static int unload_module(void *mod) return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; return ast_register_application(app, pickup_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Directed Call Pickup Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, NULL, NULL, NULL); +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Directed Call Pickup Application"); diff --git a/apps/app_directory.c b/apps/app_directory.c index 55e91ce49..6f660e326 100644 --- a/apps/app_directory.c +++ b/apps/app_directory.c @@ -87,7 +87,6 @@ static char *descrip = /* How many digits to read in */ #define NUMDIGITS 3 -LOCAL_USER_DECL; #ifdef USE_ODBC_STORAGE static void retrieve_file(char *dir) @@ -514,7 +513,7 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char * static int directory_exec(struct ast_channel *chan, void *data) { int res = 0; - struct localuser *u; + struct ast_module_user *u; struct ast_config *cfg; int last = 1; int readext = 0; @@ -531,7 +530,7 @@ static int directory_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); parse = ast_strdupa(data); @@ -552,7 +551,7 @@ static int directory_exec(struct ast_channel *chan, void *data) cfg = realtime_directory(args.vmcontext); if (!cfg) { ast_log(LOG_ERROR, "Unable to read the configuration data!\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -583,20 +582,19 @@ static int directory_exec(struct ast_channel *chan, void *data) break; } ast_config_destroy(cfg); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); return res; } -static int load_module(void *mod) +static int load_module(void) { - __mod_desc = mod; #ifdef USE_ODBC_STORAGE struct ast_config *cfg = ast_config_load(VOICEMAIL_CONFIG); char *tmp; @@ -619,14 +617,4 @@ static int load_module(void *mod) return ast_register_application(app, directory_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Extension Directory"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Extension Directory"); diff --git a/apps/app_disa.c b/apps/app_disa.c index 12019acbd..1ec0531bf 100644 --- a/apps/app_disa.c +++ b/apps/app_disa.c @@ -95,7 +95,6 @@ static char *descrip = "exists in the context, it will be used. Also, if you set the 5th argument\n" "to 'NOANSWER', the DISA application will not answer initially.\n"; -LOCAL_USER_DECL; static void play_dialtone(struct ast_channel *chan, char *mailbox) { @@ -115,7 +114,7 @@ static int disa_exec(struct ast_channel *chan, void *data) int i,j,k,x,did_ignore,special_noanswer; int firstdigittimeout = 20000; int digittimeout = 10000; - struct localuser *u; + struct ast_module_user *u; char *tmp, exten[AST_MAX_EXTENSION],acctcode[20]=""; char pwline[256]; char ourcidname[256],ourcidnum[256]; @@ -137,7 +136,7 @@ static int disa_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (chan->pbx) { firstdigittimeout = chan->pbx->rtimeout*1000; @@ -146,12 +145,12 @@ static int disa_exec(struct ast_channel *chan, void *data) if (ast_set_write_format(chan,AST_FORMAT_ULAW)) { ast_log(LOG_WARNING, "Unable to set write format to Mu-law on %s\n", chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } if (ast_set_read_format(chan,AST_FORMAT_ULAW)) { ast_log(LOG_WARNING, "Unable to set read format to Mu-law on %s\n", chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -209,13 +208,13 @@ static int disa_exec(struct ast_channel *chan, void *data) f = ast_read(chan); if (f == NULL) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) { ast_frfree(f); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } if (f->frametype == AST_FRAME_VOICE) { @@ -245,7 +244,7 @@ static int disa_exec(struct ast_channel *chan, void *data) fp = fopen(args.passcode,"r"); if (!fp) { ast_log(LOG_WARNING,"DISA password file %s not found on chan %s\n",args.passcode,chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } pwline[0] = 0; @@ -346,7 +345,7 @@ static int disa_exec(struct ast_channel *chan, void *data) if (special_noanswer) flags.flags = 0; ast_cdr_reset(chan->cdr, &flags); ast_explicit_goto(chan, args.context, exten, 1); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } } @@ -367,34 +366,24 @@ reorder: ast_frfree(f); } ast_playtones_stop(chan); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, disa_exec, synopsis, descrip); } -static const char *description(void) -{ - return "DISA (Direct Inward System Access) Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "DISA (Direct Inward System Access) Application"); diff --git a/apps/app_dumpchan.c b/apps/app_dumpchan.c index 8a06baef3..426ba4eab 100644 --- a/apps/app_dumpchan.c +++ b/apps/app_dumpchan.c @@ -56,7 +56,6 @@ static char *desc = "displayed when the verbose level is currently set to that number\n" "or greater. \n"; -LOCAL_USER_DECL; static int serialize_showchan(struct ast_channel *c, char *buf, size_t size) { @@ -137,13 +136,13 @@ static int serialize_showchan(struct ast_channel *c, char *buf, size_t size) static int dumpchan_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; char vars[BUFSIZ * 4]; char info[1024]; int level = 0; static char *line = "================================================================================"; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!ast_strlen_zero(data)) level = atoi(data); @@ -153,35 +152,25 @@ static int dumpchan_exec(struct ast_channel *chan, void *data) if (option_verbose >= level) ast_verbose("\nDumping Info For Channel: %s:\n%s\nInfo:\n%s\nVariables:\n%s%s\n", chan->name, line, info, vars, line); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, dumpchan_exec, synopsis, desc); } -static const char *description(void) -{ - return "Dump Info About The Calling Channel"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Dump Info About The Calling Channel"); diff --git a/apps/app_echo.c b/apps/app_echo.c index 85df130f1..19a86382e 100644 --- a/apps/app_echo.c +++ b/apps/app_echo.c @@ -41,8 +41,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" -static char *tdesc = "Simple Echo Application"; - static char *app = "Echo"; static char *synopsis = "Echo audio, video, or DTMF back to the calling party"; @@ -52,15 +50,14 @@ static char *descrip = "the calling channel back to itself. If the DTMF digit '#' is received, the\n" "application will exit.\n"; -LOCAL_USER_DECL; static int echo_exec(struct ast_channel *chan, void *data) { int res = -1; int format; - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); format = ast_best_codec(chan->nativeformats); ast_set_write_format(chan, format); @@ -95,34 +92,24 @@ static int echo_exec(struct ast_channel *chan, void *data) ast_frfree(f); } end: - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, echo_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Simple Echo Application"); diff --git a/apps/app_exec.c b/apps/app_exec.c index d0c2591df..0aafac343 100644 --- a/apps/app_exec.c +++ b/apps/app_exec.c @@ -45,8 +45,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") /* Maximum length of any variable */ #define MAXRESULT 1024 -static char *tdesc = "Executes dialplan applications"; - /*! Note * * The key difference between these two apps is exit status. In a @@ -90,16 +88,14 @@ static char *execif_descrip = "If is true, but is not found, then the application\n" "will return a non-zero value.\n"; -LOCAL_USER_DECL; - static int exec_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; char *s, *appname, *endargs, args[MAXRESULT] = ""; struct ast_app *app; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); /* Check and parse arguments */ if (data) { @@ -122,18 +118,18 @@ static int exec_exec(struct ast_channel *chan, void *data) } } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } static int tryexec_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; char *s, *appname, *endargs, args[MAXRESULT] = ""; struct ast_app *app; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); /* Check and parse arguments */ if (data) { @@ -157,19 +153,20 @@ static int tryexec_exec(struct ast_channel *chan, void *data) } } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } -static int execif_exec(struct ast_channel *chan, void *data) { - int res=0; - struct localuser *u; +static int execif_exec(struct ast_channel *chan, void *data) +{ + int res = 0; + struct ast_module_user *u; char *myapp = NULL; char *mydata = NULL; char *expr = NULL; struct ast_app *app = NULL; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); expr = ast_strdupa(data); @@ -195,11 +192,12 @@ static int execif_exec(struct ast_channel *chan, void *data) { res = -1; } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); + return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; @@ -207,12 +205,12 @@ static int unload_module(void *mod) res |= ast_unregister_application(app_tryexec); res |= ast_unregister_application(app_execif); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res = ast_register_application(app_exec, exec_exec, exec_synopsis, exec_descrip); res |= ast_register_application(app_tryexec, tryexec_exec, tryexec_synopsis, tryexec_descrip); @@ -220,14 +218,4 @@ static int load_module(void *mod) return res; } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Executes dialplan applications"); diff --git a/apps/app_externalivr.c b/apps/app_externalivr.c index 787cc369c..e81f4f34f 100644 --- a/apps/app_externalivr.c +++ b/apps/app_externalivr.c @@ -83,7 +83,6 @@ struct ivr_localuser { int option_autoclear; }; -LOCAL_USER_DECL; struct gen_state { struct ivr_localuser *u; @@ -242,7 +241,7 @@ static struct playlist_entry *make_entry(const char *filename) static int app_exec(struct ast_channel *chan, void *data) { - struct localuser *lu = NULL; + struct ast_module_user *lu; struct playlist_entry *entry; const char *args = data; int child_stdin[2] = { 0,0 }; @@ -263,14 +262,14 @@ static int app_exec(struct ast_channel *chan, void *data) }; struct ivr_localuser *u = &foo; - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); u->abort_current_sound = 0; u->chan = chan; if (ast_strlen_zero(args)) { ast_log(LOG_WARNING, "ExternalIVR requires a command to execute\n"); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return -1; } @@ -545,35 +544,25 @@ static int app_exec(struct ast_channel *chan, void *data) while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list))) free(entry); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, app_exec, synopsis, descrip); } -static const char *description(void) -{ - return "External IVR Interface Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "External IVR Interface Application"); diff --git a/apps/app_festival.c b/apps/app_festival.c index caec727c8..f6e1d7503 100644 --- a/apps/app_festival.c +++ b/apps/app_festival.c @@ -68,7 +68,6 @@ static char *descrip = "play it to the user, allowing any given interrupt keys to immediately terminate and return\n" "the value, or 'any' to allow any number back (useful in dialplan)\n"; -LOCAL_USER_DECL; static char *socket_receive_file_to_buff(int fd,int *size) { @@ -275,7 +274,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata) { int usecache; int res=0; - struct localuser *u; + struct ast_module_user *u; struct sockaddr_in serv_addr; struct hostent *serverhost; struct ast_hostent ahp; @@ -314,12 +313,12 @@ static int festival_exec(struct ast_channel *chan, void *vdata) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); cfg = ast_config_load(FESTIVAL_CONFIG); if (!cfg) { ast_log(LOG_WARNING, "No such configuration file %s\n", FESTIVAL_CONFIG); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } if (!(host = ast_variable_retrieve(cfg, "general", "host"))) { @@ -376,7 +375,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata) if (fd < 0) { ast_log(LOG_WARNING,"festival_client: can't get socket\n"); ast_config_destroy(cfg); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } memset(&serv_addr, 0, sizeof(serv_addr)); @@ -386,7 +385,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata) if (serverhost == (struct hostent *)0) { ast_log(LOG_WARNING,"festival_client: gethostbyname failed\n"); ast_config_destroy(cfg); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } memmove(&serv_addr.sin_addr,serverhost->h_addr, serverhost->h_length); @@ -397,7 +396,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata) if (connect(fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != 0) { ast_log(LOG_WARNING,"festival_client: connect to server failed\n"); ast_config_destroy(cfg); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -489,7 +488,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata) ast_log(LOG_WARNING,"Unable to read from cache/festival fd"); close(fd); ast_config_destroy(cfg); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } n += read_data; @@ -516,36 +515,25 @@ static int festival_exec(struct ast_channel *chan, void *vdata) } while (strcmp(ack,"OK\n") != 0); close(fd); ast_config_destroy(cfg); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, festival_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Simple Festival Interface"; - -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Simple Festival Interface"); diff --git a/apps/app_flash.c b/apps/app_flash.c index d237fbc06..446b2a1f8 100644 --- a/apps/app_flash.c +++ b/apps/app_flash.c @@ -59,7 +59,6 @@ static char *descrip = "people who want to perform transfers and such via AGI and is generally\n" "quite useless oths application will only work on Zap trunks.\n"; -LOCAL_USER_DECL; static inline int zt_wait_event(int fd) { @@ -75,9 +74,9 @@ static int flash_exec(struct ast_channel *chan, void *data) { int res = -1; int x; - struct localuser *u; + struct ast_module_user *u; struct zt_params ztp; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!strcasecmp(chan->tech->type, "Zap")) { memset(&ztp, 0, sizeof(ztp)); res = ioctl(chan->fds[0], ZT_GET_PARAMS, &ztp); @@ -101,35 +100,25 @@ static int flash_exec(struct ast_channel *chan, void *data) ast_log(LOG_WARNING, "Unable to get parameters of %s: %s\n", chan->name, strerror(errno)); } else ast_log(LOG_WARNING, "%s is not a Zap channel\n", chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, flash_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Flash zap trunk application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Flash channel application"); diff --git a/apps/app_followme.c b/apps/app_followme.c index 09fb45169..24f134d85 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -72,10 +72,7 @@ static char *descrip = " s - Playback the incoming status message prior to starting the follow-me step(s)\n" " a - Record the caller's name so it can be announced to the callee on each step\n" " n - Playback the unreachable status message if we've run out of steps to reach the\n" -" or the callee has elected not to be reachable.\n" - - -LOCAL_USER_DECL; +" or the callee has elected not to be reachable.\n"; struct number { char number[512]; /*!< Phone Number(s) and/or Extension(s) */ @@ -916,7 +913,7 @@ static int app_exec(struct ast_channel *chan, void *data) struct ast_call_followme *f; struct number *nm, *newnm; int res = 0; - struct localuser *u; + struct ast_module_user *u; char *argstr; char namerecloc[255]; int duration = 0; @@ -938,7 +935,7 @@ static int app_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); AST_STANDARD_APP_ARGS(args, argstr); @@ -1074,47 +1071,47 @@ static int app_exec(struct ast_channel *chan, void *data) } outrun: - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); + return res; } -static int unload_module(void *mod) +static int unload_module(void) { struct ast_call_followme *f; - STANDARD_HANGUP_LOCALUSERS; + + ast_module_user_hangup_all(); + ast_unregister_application(app); + /* Free Memory. Yeah! I'm free! */ AST_LIST_LOCK(&followmes); - AST_LIST_TRAVERSE_SAFE_BEGIN(&followmes, f, entry) { + while ((f = AST_LIST_REMOVE_HEAD(&followmes, entry))) { free_numbers(f); - AST_LIST_REMOVE_CURRENT(&followmes, entry); free(f); } - AST_LIST_TRAVERSE_SAFE_END + AST_LIST_UNLOCK(&followmes); + return 0; } -static int load_module(void *mod) +static int load_module(void) { reload_followme(); + return ast_register_application(app, app_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Find-Me/Follow-Me Application"; -} - -static int reload(void *mod) +static int reload(void) { reload_followme(); + return 0; } -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, reload, NULL, NULL); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Find-Me/Follow-Me Application", + .load = load_module, + .unload = unload_module, + .reload = reload, + ); diff --git a/apps/app_forkcdr.c b/apps/app_forkcdr.c index 620148604..d9c5b293f 100644 --- a/apps/app_forkcdr.c +++ b/apps/app_forkcdr.c @@ -50,7 +50,6 @@ static char *descrip = "cdr record starting from the time of the fork call\n" "If the option 'v' is passed all cdr variables will be passed along also.\n"; -LOCAL_USER_DECL; static void ast_cdr_fork(struct ast_channel *chan) { @@ -78,48 +77,38 @@ static void ast_cdr_fork(struct ast_channel *chan) static int forkcdr_exec(struct ast_channel *chan, void *data) { int res = 0; - struct localuser *u; + struct ast_module_user *u; if (!chan->cdr) { ast_log(LOG_WARNING, "Channel does not have a CDR\n"); return 0; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!ast_strlen_zero(data)) ast_set2_flag(chan->cdr, strchr(data, 'v'), AST_CDR_FLAG_KEEP_VARS); ast_cdr_fork(chan); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, forkcdr_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Fork The CDR into 2 separate entities."; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Fork The CDR into 2 separate entities"); diff --git a/apps/app_getcpeid.c b/apps/app_getcpeid.c index be0e0657d..7dbd5f6fd 100644 --- a/apps/app_getcpeid.c +++ b/apps/app_getcpeid.c @@ -51,7 +51,6 @@ static char *descrip = " GetCPEID: Obtains and displays ADSI CPE ID and other information in order\n" "to properly setup zapata.conf for on-hook operations.\n"; -LOCAL_USER_DECL; static int cpeid_setstatus(struct ast_channel *chan, char *stuff[], int voice) { @@ -67,7 +66,7 @@ static int cpeid_setstatus(struct ast_channel *chan, char *stuff[], int voice) static int cpeid_exec(struct ast_channel *chan, void *idata) { int res=0; - struct localuser *u; + struct ast_module_user *u; unsigned char cpeid[4]; int gotgeometry = 0; int gotcpeid = 0; @@ -75,7 +74,7 @@ static int cpeid_exec(struct ast_channel *chan, void *idata) char data[4][80]; char *stuff[4]; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); stuff[0] = data[0]; stuff[1] = data[1]; stuff[2] = data[2]; @@ -127,34 +126,24 @@ static int cpeid_exec(struct ast_channel *chan, void *idata) adsi_unload_session(chan); } } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, cpeid_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Get ADSI CPE ID"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Get ADSI CPE ID"); diff --git a/apps/app_hasnewvoicemail.c b/apps/app_hasnewvoicemail.c index 22a5d3f30..33204bbe9 100644 --- a/apps/app_hasnewvoicemail.c +++ b/apps/app_hasnewvoicemail.c @@ -77,11 +77,10 @@ static char *hasnewvoicemail_descrip = " HASVMSTATUS The result of the new voicemail check returned as a text string as follows\n" " <# of messages in the folder, 0 for NONE>\n"; -LOCAL_USER_DECL; static int hasvoicemail_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; char *input, *varname = NULL, *vmbox, *context = "default"; char *vmfolder; int vmcount = 0; @@ -104,7 +103,7 @@ static int hasvoicemail_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); input = ast_strdupa(data); @@ -146,21 +145,21 @@ static int hasvoicemail_exec(struct ast_channel *chan, void *data) snprintf(tmp, sizeof(tmp), "%d", vmcount); pbx_builtin_setvar_helper(chan, "HASVMSTATUS", tmp); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } static int acf_vmcount_exec(struct ast_channel *chan, char *cmd, char *argsstr, char *buf, size_t len) { - struct localuser *u; + struct ast_module_user *u; char *context; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(vmbox); AST_APP_ARG(folder); ); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); buf[0] = '\0'; @@ -179,7 +178,7 @@ static int acf_vmcount_exec(struct ast_channel *chan, char *cmd, char *argsstr, snprintf(buf, len, "%d", ast_app_messagecount(context, args.vmbox, args.folder)); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -194,7 +193,7 @@ struct ast_custom_function acf_vmcount = { .read = acf_vmcount_exec, }; -static int unload_module(void *mod) +static int unload_module(void) { int res; @@ -202,12 +201,12 @@ static int unload_module(void *mod) res |= ast_unregister_application(app_hasvoicemail); res |= ast_unregister_application(app_hasnewvoicemail); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res; @@ -218,14 +217,4 @@ static int load_module(void *mod) return res; } -static const char *description(void) -{ - return "Indicator for whether a voice mailbox has messages in a given folder."; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Indicator for whether a voice mailbox has messages in a given folder."); diff --git a/apps/app_ices.c b/apps/app_ices.c index 67b107e41..9d93dabdf 100644 --- a/apps/app_ices.c +++ b/apps/app_ices.c @@ -60,7 +60,6 @@ static char *descrip = "(available separately). A configuration file must be supplied\n" "for ices (see examples/asterisk-ices.conf). \n"; -LOCAL_USER_DECL; static int icesencode(char *filename, int fd) { @@ -91,7 +90,7 @@ static int icesencode(char *filename, int fd) static int ices_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; int fds[2]; int ms = -1; int pid = -1; @@ -107,13 +106,13 @@ static int ices_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); last = ast_tv(0, 0); if (pipe(fds)) { ast_log(LOG_WARNING, "Unable to create pipe\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } flags = fcntl(fds[1], F_GETFL); @@ -128,7 +127,7 @@ static int ices_exec(struct ast_channel *chan, void *data) close(fds[0]); close(fds[1]); ast_log(LOG_WARNING, "Answer failed!\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -138,7 +137,7 @@ static int ices_exec(struct ast_channel *chan, void *data) close(fds[0]); close(fds[1]); ast_log(LOG_WARNING, "Unable to set write format to signed linear\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } if (((char *)data)[0] == '/') @@ -188,35 +187,25 @@ static int ices_exec(struct ast_channel *chan, void *data) if (!res && oreadformat) ast_set_read_format(chan, oreadformat); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, ices_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Encode and Stream via icecast and ices"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Encode and Stream via icecast and ices"); diff --git a/apps/app_image.c b/apps/app_image.c index b6308f0be..f5f327197 100644 --- a/apps/app_image.c +++ b/apps/app_image.c @@ -44,8 +44,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/app.h" #include "asterisk/options.h" -static char *tdesc = "Image Transmission Application"; - static char *app = "SendImage"; static char *synopsis = "Send an image file"; @@ -61,12 +59,11 @@ static char *descrip = " SENDIMAGESTATUS The status is the result of the attempt as a text string, one of\n" " OK | NOSUPPORT \n"; -LOCAL_USER_DECL; static int sendimage_exec(struct ast_channel *chan, void *data) { int res = 0; - struct localuser *u; + struct ast_module_user *u; char *parse; int priority_jump = 0; AST_DECLARE_APP_ARGS(args, @@ -74,7 +71,7 @@ static int sendimage_exec(struct ast_channel *chan, void *data) AST_APP_ARG(options); ); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); parse = ast_strdupa(data); @@ -95,7 +92,7 @@ static int sendimage_exec(struct ast_channel *chan, void *data) if (priority_jump || ast_opt_priority_jumping) ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101); pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "NOSUPPORT"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -104,35 +101,25 @@ static int sendimage_exec(struct ast_channel *chan, void *data) if (!res) pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "OK"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, sendimage_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Image Transmission Application"); diff --git a/apps/app_ivrdemo.c b/apps/app_ivrdemo.c index d3dd2e9a0..933ae9040 100644 --- a/apps/app_ivrdemo.c +++ b/apps/app_ivrdemo.c @@ -88,19 +88,18 @@ AST_IVR_DECLARE_MENU(ivr_demo, "IVR Demo Main Menu", 0, { NULL }, }); -LOCAL_USER_DECL; static int skel_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "skel requires an argument (filename)\n"); return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); /* Do our thing here */ @@ -109,36 +108,25 @@ static int skel_exec(struct ast_channel *chan, void *data) if (!res) res = ast_ivr_menu_run(chan, &ivr_demo, data); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, skel_exec, tdesc, synopsis); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; - +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "IVR Demo Application"); diff --git a/apps/app_lookupblacklist.c b/apps/app_lookupblacklist.c index b0f3a419f..2eb1e545a 100644 --- a/apps/app_lookupblacklist.c +++ b/apps/app_lookupblacklist.c @@ -47,8 +47,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/astdb.h" #include "asterisk/options.h" -static char *tdesc = "Look up Caller*ID name/number from blacklist database"; - static char *app = "LookupBlacklist"; static char *synopsis = "Look up Caller*ID name/number from blacklist database"; @@ -63,7 +61,6 @@ static char *descrip = " FOUND | NOTFOUND\n" "Example: exten => 1234,1,LookupBlacklist()\n"; -LOCAL_USER_DECL; static int blacklist_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { @@ -95,12 +92,12 @@ static int lookupblacklist_exec (struct ast_channel *chan, void *data) { char blacklist[1]; - struct localuser *u; + struct ast_module_user *u; int bl = 0; int priority_jump = 0; static int dep_warning = 0; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!dep_warning) { dep_warning = 1; @@ -134,38 +131,28 @@ lookupblacklist_exec (struct ast_channel *chan, void *data) } else pbx_builtin_setvar_helper(chan, "LOOKUPBLSTATUS", "NOTFOUND"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); res |= ast_custom_function_unregister(&blacklist_function); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res = ast_custom_function_register(&blacklist_function); res |= ast_register_application (app, lookupblacklist_exec, synopsis,descrip); return res; } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Look up Caller*ID name/number from blacklist database"); diff --git a/apps/app_lookupcidname.c b/apps/app_lookupcidname.c index 711ca5b76..5a0042a29 100644 --- a/apps/app_lookupcidname.c +++ b/apps/app_lookupcidname.c @@ -45,8 +45,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/callerid.h" #include "asterisk/astdb.h" -static char *tdesc = "Look up CallerID Name from local database"; - static char *app = "LookupCIDName"; static char *synopsis = "Look up CallerID Name from local database"; @@ -59,56 +57,45 @@ static char *descrip = "name delivery, or if you want to change the names on some incoming\n" "calls.\n"; -LOCAL_USER_DECL; -static int -lookupcidname_exec (struct ast_channel *chan, void *data) +static int lookupcidname_exec (struct ast_channel *chan, void *data) { - char dbname[64]; - struct localuser *u; + char dbname[64]; + struct ast_module_user *u; static int dep_warning = 0; - LOCAL_USER_ADD (u); + u = ast_module_user_add(chan); if (!dep_warning) { dep_warning = 1; ast_log(LOG_WARNING, "LookupCIDName is deprecated. Please use ${DB(cidname/${CALLERID(num)})} instead.\n"); } - if (chan->cid.cid_num) { - if (!ast_db_get ("cidname", chan->cid.cid_num, dbname, sizeof (dbname))) { - ast_set_callerid (chan, NULL, dbname, NULL); - if (option_verbose > 2) - ast_verbose (VERBOSE_PREFIX_3 "Changed Caller*ID name to %s\n", - dbname); + if (chan->cid.cid_num) { + if (!ast_db_get ("cidname", chan->cid.cid_num, dbname, sizeof (dbname))) { + ast_set_callerid (chan, NULL, dbname, NULL); + if (option_verbose > 2) + ast_verbose (VERBOSE_PREFIX_3 "Changed Caller*ID name to %s\n", + dbname); + } } - } - LOCAL_USER_REMOVE (u); - return 0; + ast_module_user_remove(u); + + return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application (app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application (app, lookupcidname_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Look up CallerID Name from local database"); diff --git a/apps/app_macro.c b/apps/app_macro.c index 13db5ce8a..5adc0a07f 100644 --- a/apps/app_macro.c +++ b/apps/app_macro.c @@ -50,8 +50,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") /* special result value used to force macro exit */ #define MACRO_EXIT_RESULT 1024 -static char *tdesc = "Extension Macros"; - static char *descrip = " Macro(macroname|arg1|arg2...): Executes a macro using the context\n" "'macro-', jumping to the 's' extension of that context and\n" @@ -94,7 +92,6 @@ static char *if_synopsis = "Conditional Macro Implementation"; static char *exclusive_synopsis = "Exclusive Macro Implementation"; static char *exit_synopsis = "Exit From Macro"; -LOCAL_USER_DECL; static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) { @@ -120,14 +117,14 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) char *save_macro_context; char *save_macro_priority; char *save_macro_offset; - struct localuser *u; + struct ast_module_user *u; if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "Macro() requires arguments. See \"show application macro\" for help.\n"); return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); /* does the user want a deeper rabbit hole? */ s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION"); @@ -140,7 +137,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) sscanf(s, "%d", &depth); if (depth >= maxdepth) { ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } snprintf(depthc, sizeof(depthc), "%d", depth + 1); @@ -151,7 +148,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) macro = strsep(&rest, "|"); if (ast_strlen_zero(macro)) { ast_log(LOG_WARNING, "Invalid macro name specified\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -161,7 +158,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) ast_log(LOG_WARNING, "No such context '%s' for macro '%s'\n", fullmacro, macro); else ast_log(LOG_WARNING, "Context '%s' for macro '%s' lacks 's' extension, priority 1\n", fullmacro, macro); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -172,7 +169,8 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) if (ast_context_lockmacro(fullmacro)) { ast_log(LOG_WARNING, "Failed to lock macro '%s' as in-use\n", fullmacro); ast_autoservice_stop(chan); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); + return 0; } ast_autoservice_stop(chan); @@ -339,7 +337,8 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) } } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); + return res; } @@ -357,12 +356,12 @@ static int macroif_exec(struct ast_channel *chan, void *data) { char *expr = NULL, *label_a = NULL, *label_b = NULL; int res = 0; - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(expr = ast_strdupa(data))) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -380,7 +379,7 @@ static int macroif_exec(struct ast_channel *chan, void *data) } else ast_log(LOG_WARNING, "Invalid Syntax.\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -390,7 +389,7 @@ static int macro_exit_exec(struct ast_channel *chan, void *data) return MACRO_EXIT_RESULT; } -static int unload_module(void *mod) +static int unload_module(void) { int res; @@ -399,12 +398,12 @@ static int unload_module(void *mod) res |= ast_unregister_application(app); res |= ast_unregister_application(exclusive_app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res; @@ -416,14 +415,4 @@ static int load_module(void *mod) return res; } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Extension Macros"); diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 4abfdb3c3..1f2ffc5c7 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -64,8 +64,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "enter.h" #include "leave.h" -LOCAL_USER_DECL; - #define CONFIG_FILE_NAME "meetme.conf" /*! each buffer is 20ms, so this is 640ms total */ @@ -292,8 +290,6 @@ static const char *descripslat = #define CONFIG_FILE_NAME "meetme.conf" #define CONFIG_FILE_NAME_SLA "sla.conf" -LOCAL_USER_DECL; - /*! \brief The MeetMe Conference object */ struct ast_conference { ast_mutex_t playlock; /*!< Conference specific lock (players) */ @@ -2099,7 +2095,7 @@ static struct ast_conference *find_conf(struct ast_channel *chan, char *confno, /*! \brief The MeetmeCount application */ static int count_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; int res = 0; struct ast_conference *conf; int count; @@ -2115,10 +2111,10 @@ static int count_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(localdata = ast_strdupa(data))) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -2140,7 +2136,7 @@ static int count_exec(struct ast_channel *chan, void *data) ast_answer(chan); res = ast_say_number(chan, count, "", chan->language, (char *) NULL); /* Needs gender */ } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -2149,7 +2145,7 @@ static int count_exec(struct ast_channel *chan, void *data) static int conf_exec(struct ast_channel *chan, void *data) { int res=-1; - struct localuser *u; + struct ast_module_user *u; char confno[AST_MAX_EXTENSION] = ""; int allowretry = 0; int retrycnt = 0; @@ -2165,7 +2161,7 @@ static int conf_exec(struct ast_channel *chan, void *data) AST_APP_ARG(pin); ); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (ast_strlen_zero(data)) { allowretry = 1; @@ -2403,7 +2399,7 @@ static int conf_exec(struct ast_channel *chan, void *data) } } while (allowretry); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -2500,7 +2496,7 @@ static int sla_checkforhold(struct ast_conference *conf, int hangup) static int sla_exec(struct ast_channel *chan, void *data, int trunk) { int res=-1; - struct localuser *u; + struct ast_module_user *u; char confno[AST_MAX_EXTENSION] = ""; struct ast_sla *sla; struct ast_conference *cnf; @@ -2526,8 +2522,7 @@ static int sla_exec(struct ast_channel *chan, void *data, int trunk) return -1; } - LOCAL_USER_ADD(u); - + u = ast_module_user_add(chan); if (args.options) ast_app_parse_options(sla_opts, &confflags, NULL, args.options); @@ -2562,7 +2557,7 @@ static int sla_exec(struct ast_channel *chan, void *data, int trunk) ast_log(LOG_WARNING, "SLA%c: SLA '%s' not found!\n", trunk ? 'T' : 'S', args.confno); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -2600,7 +2595,7 @@ static int admin_exec(struct ast_channel *chan, void *data) { char *params; struct ast_conference *cnf; struct ast_conf_user *user = NULL; - struct localuser *u; + struct ast_module_user *u; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(confno); AST_APP_ARG(command); @@ -2612,7 +2607,7 @@ static int admin_exec(struct ast_channel *chan, void *data) { return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); AST_LIST_LOCK(&confs); @@ -2622,7 +2617,7 @@ static int admin_exec(struct ast_channel *chan, void *data) { if (!args.command) { ast_log(LOG_WARNING, "MeetmeAdmin requires a command!\n"); AST_LIST_UNLOCK(&confs); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } AST_LIST_TRAVERSE(&confs, cnf, list) { @@ -2632,8 +2627,8 @@ static int admin_exec(struct ast_channel *chan, void *data) { if (!cnf) { ast_log(LOG_WARNING, "Conference number '%s' not found!\n", args.confno); - LOCAL_USER_REMOVE(u); AST_LIST_UNLOCK(&confs); + ast_module_user_remove(u); return 0; } @@ -2740,7 +2735,7 @@ static int admin_exec(struct ast_channel *chan, void *data) { AST_LIST_UNLOCK(&confs); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -3051,11 +3046,11 @@ static void load_config(void) load_config_sla(); } -static int unload_module(void *mod) +static int unload_module(void) { - int res; + int res = 0; - res = ast_cli_unregister(&cli_show_confs); + res |= ast_cli_unregister(&cli_show_confs); res |= ast_cli_unregister(&cli_sla_show); res |= ast_cli_unregister(&cli_conf); res |= ast_manager_unregister("MeetmeMute"); @@ -3066,14 +3061,14 @@ static int unload_module(void *mod) res |= ast_unregister_application(appslas); res |= ast_unregister_application(appslat); + ast_module_user_hangup_all(); ast_devstate_prov_del("Meetme"); ast_devstate_prov_del("SLA"); - STANDARD_HANGUP_LOCALUSERS; return res; } -static int load_module(void *mod) +static int load_module(void) { int res; @@ -3095,22 +3090,16 @@ static int load_module(void *mod) return res; } -static int reload(void *mod) +static int reload(void) { load_config(); return 0; } -static const char *description(void) -{ - return "MeetMe conference bridge"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, reload, NULL, NULL); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "MeetMe conference bridge", + .load = load_module, + .unload = unload_module, + .reload = reload, + ); diff --git a/apps/app_milliwatt.c b/apps/app_milliwatt.c index 8c7fbe4c0..08a96f96b 100644 --- a/apps/app_milliwatt.c +++ b/apps/app_milliwatt.c @@ -50,7 +50,6 @@ static char *synopsis = "Generate a Constant 1000Hz tone at 0dbm (mu-law)"; static char *descrip = "Milliwatt(): Generate a Constant 1000Hz tone at 0dbm (mu-law)\n"; -LOCAL_USER_DECL; static char digital_milliwatt[] = {0x1e,0x0b,0x0b,0x1e,0x9e,0x8b,0x8b,0x9e} ; @@ -118,8 +117,8 @@ static struct ast_generator milliwattgen = static int milliwatt_exec(struct ast_channel *chan, void *data) { - struct localuser *u; - LOCAL_USER_ADD(u); + struct ast_module_user *u; + u = ast_module_user_add(chan); ast_set_write_format(chan, AST_FORMAT_ULAW); ast_set_read_format(chan, AST_FORMAT_ULAW); if (chan->_state != AST_STATE_UP) @@ -129,39 +128,29 @@ static int milliwatt_exec(struct ast_channel *chan, void *data) if (ast_activate_generator(chan,&milliwattgen,"milliwatt") < 0) { ast_log(LOG_WARNING,"Failed to activate generator on '%s'\n",chan->name); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } while(!ast_safe_sleep(chan, 10000)); ast_deactivate_generator(chan); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, milliwatt_exec, synopsis, descrip); } -static const char *description(void) -{ - return "Digital Milliwatt (mu-law) Test Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Digital Milliwatt (mu-law) Test Application"); diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index 35511c4b2..2aaf7d6a8 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -164,7 +164,6 @@ static void *mixmonitor_thread(void *obj) struct mixmonitor *mixmonitor = obj; struct ast_frame *f = NULL; - ast_atomic_fetchadd_int(&__mod_desc->usecnt, +1); if (option_verbose > 1) ast_verbose(VERBOSE_PREFIX_2 "Begin MixMonitor Recording %s\n", mixmonitor->name); @@ -219,7 +218,6 @@ static void *mixmonitor_thread(void *obj) free(mixmonitor); - ast_atomic_fetchadd_int(&__mod_desc->usecnt, -1); return NULL; } @@ -322,7 +320,7 @@ static void launch_monitor_thread(struct ast_channel *chan, const char *filename static int mixmonitor_exec(struct ast_channel *chan, void *data) { int x, readvol = 0, writevol = 0; - struct localuser *u; + struct ast_module_user *u; struct ast_flags flags = {0}; char *parse; AST_DECLARE_APP_ARGS(args, @@ -336,7 +334,7 @@ static int mixmonitor_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); parse = ast_strdupa(data); @@ -344,7 +342,7 @@ static int mixmonitor_exec(struct ast_channel *chan, void *data) if (ast_strlen_zero(args.filename)) { ast_log(LOG_WARNING, "MixMonitor requires an argument (filename)\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -396,22 +394,22 @@ static int mixmonitor_exec(struct ast_channel *chan, void *data) pbx_builtin_setvar_helper(chan, "MIXMONITOR_FILENAME", args.filename); launch_monitor_thread(chan, args.filename, flags.flags, readvol, writevol, args.post_process); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } static int stop_mixmonitor_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); ast_channel_lock(chan); ast_channel_spy_stop_by_type(chan, mixmonitor_spy_type); ast_channel_unlock(chan); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -453,7 +451,7 @@ static struct ast_cli_entry cli_mixmonitor = { complete_mixmonitor_cli }; -static int unload_module(void *mod) +static int unload_module(void) { int res; @@ -461,12 +459,12 @@ static int unload_module(void *mod) res |= ast_unregister_application(stop_app); res |= ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res; @@ -477,14 +475,4 @@ static int load_module(void *mod) return res; } -static const char *description(void) -{ - return "Mixed Audio Monitoring Application"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Mixed Audio Monitoring Application"); diff --git a/apps/app_morsecode.c b/apps/app_morsecode.c index 9bb02479e..cd4211231 100644 --- a/apps/app_morsecode.c +++ b/apps/app_morsecode.c @@ -41,8 +41,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/module.h" #include "asterisk/indications.h" -static char *tdesc = "Morse code"; - static char *app_morsecode = "Morsecode"; static char *morsecode_synopsis = "Plays morse code"; @@ -54,7 +52,6 @@ static char *morsecode_descrip = "(defaults to 80). Additionally, if MORSETONE is set, it will use that tone\n" "(in Hz). The tone default is 800.\n"; -LOCAL_USER_DECL; static char *morsecode[] = { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", /* 0-15 */ @@ -114,13 +111,13 @@ static int morsecode_exec(struct ast_channel *chan, void *data) int res=0, ditlen, tone; char *digit; const char *ditlenc, *tonec; - struct localuser *u; + struct ast_module_user *u; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "Syntax: Morsecode() - no argument found\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -158,34 +155,24 @@ static int morsecode_exec(struct ast_channel *chan, void *data) playtone(chan, 0, 2 * ditlen); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app_morsecode); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app_morsecode, morsecode_exec, morsecode_synopsis, morsecode_descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Morse code"); diff --git a/apps/app_mp3.c b/apps/app_mp3.c index 3a48e7ef8..667de67ad 100644 --- a/apps/app_mp3.c +++ b/apps/app_mp3.c @@ -50,8 +50,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define LOCAL_MPG_123 "/usr/local/bin/mpg123" #define MPG_123 "/usr/bin/mpg123" -static char *tdesc = "Silly MP3 Application"; - static char *app = "MP3Player"; static char *synopsis = "Play an MP3 file or stream"; @@ -61,7 +59,6 @@ static char *descrip = "which typically would be a filename or a URL. User can exit by pressing\n" "any key on the dialpad, or by hanging up."; -LOCAL_USER_DECL; static int mp3play(char *filename, int fd) { @@ -118,7 +115,7 @@ static int timed_read(int fd, void *data, int datalen, int timeout) static int mp3_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; int fds[2]; int ms = -1; int pid = -1; @@ -137,11 +134,11 @@ static int mp3_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (pipe(fds)) { ast_log(LOG_WARNING, "Unable to create pipe\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -151,7 +148,7 @@ static int mp3_exec(struct ast_channel *chan, void *data) res = ast_set_write_format(chan, AST_FORMAT_SLINEAR); if (res < 0) { ast_log(LOG_WARNING, "Unable to set write format to signed linear\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -224,35 +221,25 @@ static int mp3_exec(struct ast_channel *chan, void *data) if (!res && owriteformat) ast_set_write_format(chan, owriteformat); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, mp3_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Silly MP3 Application"); diff --git a/apps/app_nbscat.c b/apps/app_nbscat.c index 188aa3c97..346584346 100644 --- a/apps/app_nbscat.c +++ b/apps/app_nbscat.c @@ -55,8 +55,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define AF_LOCAL AF_UNIX #endif -static char *tdesc = "Silly NBS Stream Application"; - static char *app = "NBScat"; static char *synopsis = "Play an NBS local stream"; @@ -65,7 +63,6 @@ static char *descrip = " NBScat: Executes nbscat to listen to the local NBS stream.\n" "User can exit by pressing any key\n."; -LOCAL_USER_DECL; static int NBScatplay(int fd) { @@ -109,7 +106,7 @@ static int timed_read(int fd, void *data, int datalen) static int NBScat_exec(struct ast_channel *chan, void *data) { int res=0; - struct localuser *u; + struct ast_module_user *u; int fds[2]; int ms = -1; int pid = -1; @@ -122,11 +119,11 @@ static int NBScat_exec(struct ast_channel *chan, void *data) short frdata[160]; } myf; - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (socketpair(AF_LOCAL, SOCK_STREAM, 0, fds)) { ast_log(LOG_WARNING, "Unable to create socketpair\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -136,7 +133,7 @@ static int NBScat_exec(struct ast_channel *chan, void *data) res = ast_set_write_format(chan, AST_FORMAT_SLINEAR); if (res < 0) { ast_log(LOG_WARNING, "Unable to set write format to signed linear\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -206,35 +203,25 @@ static int NBScat_exec(struct ast_channel *chan, void *data) if (!res && owriteformat) ast_set_write_format(chan, owriteformat); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app, NBScat_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Silly NBS Stream Application"); diff --git a/apps/app_osplookup.c b/apps/app_osplookup.c index 88d90a984..c700e81ce 100644 --- a/apps/app_osplookup.c +++ b/apps/app_osplookup.c @@ -878,29 +878,29 @@ static int osp_finish(int handle, int recorded, int cause, time_t start, time_t static int ospauth_exec(struct ast_channel* chan, void* data) { int res; - struct localuser* u; + struct ast_module_user *u; const char* provider = OSP_DEF_PROVIDER; int priority_jump = 0; - struct varshead* headp; - struct ast_var_t* current; - const char* source = ""; - const char* token = ""; + struct varshead *headp; + struct ast_var_t *current; + const char *source = ""; + const char *token = ""; int handle; unsigned int timelimit; char buffer[OSP_INTSTR_SIZE]; - const char* status; - char* tmp; + const char *status; + char *tmp; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(provider); AST_APP_ARG(options); ); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(tmp = ast_strdupa(data))) { ast_log(LOG_ERROR, "Out of memory\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -959,7 +959,7 @@ static int ospauth_exec(struct ast_channel* chan, void* data) res = 0; } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -973,16 +973,16 @@ static int ospauth_exec(struct ast_channel* chan, void* data) static int osplookup_exec(struct ast_channel* chan, void* data) { int res, cres; - struct localuser* u; - const char* provider = OSP_DEF_PROVIDER; + struct ast_module_user *u; + const char *provider = OSP_DEF_PROVIDER; int priority_jump = 0; - struct varshead* headp; + struct varshead *headp; struct ast_var_t* current; - const char* srcdev = ""; + const char *srcdev = ""; char buffer[OSP_TOKSTR_SIZE]; struct osp_result result; - const char* status; - char* tmp; + const char *status; + char *tmp; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(exten); @@ -995,11 +995,11 @@ static int osplookup_exec(struct ast_channel* chan, void* data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(tmp = ast_strdupa(data))) { ast_log(LOG_ERROR, "Out of memory\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -1039,7 +1039,7 @@ static int osplookup_exec(struct ast_channel* chan, void* data) ast_log(LOG_DEBUG, "OSPLookup: source device '%s'\n", srcdev); if ((cres = ast_autoservice_start(chan)) < 0) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -1090,7 +1090,7 @@ static int osplookup_exec(struct ast_channel* chan, void* data) } if ((cres = ast_autoservice_stop(chan)) < 0) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -1105,7 +1105,7 @@ static int osplookup_exec(struct ast_channel* chan, void* data) res = 0; } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -1119,7 +1119,7 @@ static int osplookup_exec(struct ast_channel* chan, void* data) static int ospnext_exec(struct ast_channel* chan, void* data) { int res; - struct localuser* u; + struct ast_module_user *u; int priority_jump = 0; int cause = 0; struct varshead* headp; @@ -1139,11 +1139,11 @@ static int ospnext_exec(struct ast_channel* chan, void* data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(tmp = ast_strdupa(data))) { ast_log(LOG_ERROR, "Out of memory\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -1243,7 +1243,7 @@ static int ospnext_exec(struct ast_channel* chan, void* data) res = 0; } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -1257,30 +1257,30 @@ static int ospnext_exec(struct ast_channel* chan, void* data) static int ospfinished_exec(struct ast_channel* chan, void* data) { int res = 1; - struct localuser* u; + struct ast_module_user *u; int priority_jump = 0; int cause = 0; - struct varshead* headp; - struct ast_var_t* current; + struct varshead *headp; + struct ast_var_t *current; int inhandle = OSP_INVALID_HANDLE; int outhandle = OSP_INVALID_HANDLE; int recorded = 0; time_t start, connect, end; unsigned int release; char buffer[OSP_INTSTR_SIZE]; - const char* status; - char* tmp; + const char *status; + char *tmp; AST_DECLARE_APP_ARGS(args, AST_APP_ARG(cause); AST_APP_ARG(options); ); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(tmp = ast_strdupa(data))) { ast_log(LOG_ERROR, "Out of memory\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -1376,7 +1376,7 @@ static int ospfinished_exec(struct ast_channel* chan, void* data) res = 0; } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } @@ -1602,9 +1602,7 @@ static struct ast_cli_entry osp_cli = { osp_usage }; -LOCAL_USER_DECL; - -static int load_module(void* mod) +static int load_module(void) { int res; @@ -1618,7 +1616,7 @@ static int load_module(void* mod) return res; } -static int unload_module(void* mod) +static int unload_module(void) { int res; @@ -1629,26 +1627,21 @@ static int unload_module(void* mod) res |= ast_cli_unregister(&osp_cli); osp_unload(); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int reload(void* mod) +static int reload(void) { osp_unload(); osp_load(); + return 0; } -static const char* description(void) -{ - return "Open Settlement Protocol Applications"; -} - -static const char* key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, reload, NULL, NULL); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Open Settlement Protocol Applications", + .load = load_module, + .unload = unload_module, + .reload = reload, + ); diff --git a/apps/app_page.c b/apps/app_page.c index 0d8965976..93146c9cd 100644 --- a/apps/app_page.c +++ b/apps/app_page.c @@ -63,7 +63,6 @@ static const char *page_descrip = " q - quiet, do not play beep to caller\n" " r - record the page into a file (see 'r' for app_meetme)\n"; -LOCAL_USER_DECL; enum { PAGE_DUPLEX = (1 << 0), @@ -143,7 +142,7 @@ static void launch_page(struct ast_channel *chan, const char *meetmeopts, const static int page_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; char *options; char *tech, *resource; char meetmeopts[80]; @@ -159,11 +158,11 @@ static int page_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); if (!(app = pbx_findapp("MeetMe"))) { ast_log(LOG_WARNING, "There is no MeetMe application available!\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; }; @@ -204,36 +203,26 @@ static int page_exec(struct ast_channel *chan, void *data) pbx_exec(chan, app, meetmeopts); } - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app_page); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application(app_page, page_exec, page_synopsis, page_descrip); } -static const char *description(void) -{ - return "Page Multiple Phones"; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Page Multiple Phones"); diff --git a/apps/app_parkandannounce.c b/apps/app_parkandannounce.c index 1b30a4902..66203b1b0 100644 --- a/apps/app_parkandannounce.c +++ b/apps/app_parkandannounce.c @@ -51,8 +51,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/lock.h" #include "asterisk/utils.h" -static char *tdesc = "Call Parking and Announce Application"; - static char *app = "ParkAndAnnounce"; static char *synopsis = "Park and Announce"; @@ -75,7 +73,6 @@ static char *descrip = "call was placed. Use with the Local channel to allow the dialplan to make\n" "use of this information.\n"; -LOCAL_USER_DECL; static int parkandannounce_exec(struct ast_channel *chan, void *data) { @@ -93,18 +90,18 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data) struct outgoing_helper oh; int outstate; - struct localuser *u; + struct ast_module_user *u; if (ast_strlen_zero(data)) { ast_log(LOG_WARNING, "ParkAndAnnounce requires arguments: (announce:template|timeout|dial|[return_context])\n"); return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); l=strlen(data)+2; if (!(orig_s = ast_malloc(l))) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } s=orig_s; @@ -114,7 +111,7 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data) if(! template) { ast_log(LOG_WARNING, "PARK: An announce template must be defined\n"); free(orig_s); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -126,7 +123,7 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data) if(!dial) { ast_log(LOG_WARNING, "PARK: A dial resource must be specified i.e: Console/dsp or Zap/g1/5551212\n"); free(orig_s); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } else { dialtech=strsep(&dial, "/"); @@ -159,7 +156,7 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data) if(atoi(priority) < 0) { ast_log(LOG_WARNING, "Priority '%s' must be a number > 0\n", priority); free(orig_s); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } /* At this point we have a priority and maybe an extension and a context */ @@ -206,13 +203,13 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data) ast_log(LOG_WARNING, "PARK: Channel %s was never answered for the announce.\n", dchan->name); ast_hangup(dchan); free(orig_s); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } } else { ast_log(LOG_WARNING, "PARK: Unable to allocate announce channel.\n"); free(orig_s); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } @@ -250,36 +247,26 @@ static int parkandannounce_exec(struct ast_channel *chan, void *data) ast_hangup(dchan); free(orig_s); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { /* return ast_register_application(app, park_exec); */ return ast_register_application(app, parkandannounce_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Call Parking and Announce Application"); diff --git a/apps/app_playback.c b/apps/app_playback.c index 32114cad7..f3788c351 100644 --- a/apps/app_playback.c +++ b/apps/app_playback.c @@ -47,8 +47,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/localtime.h" #include "asterisk/say.h" -static char *tdesc = "Sound File Playback Application"; - static char *app = "Playback"; static char *synopsis = "Play a file"; @@ -69,7 +67,6 @@ static char *descrip = " SUCCESS | FAILED\n" ; -LOCAL_USER_DECL; static struct ast_config *say_cfg; /* save the say' api calls. @@ -381,7 +378,7 @@ static struct ast_cli_entry myclis[] = { static int playback_exec(struct ast_channel *chan, void *data) { int res = 0; - struct localuser *u; + struct ast_module_user *u; char *tmp; int option_skip=0; int option_say=0; @@ -400,7 +397,7 @@ static int playback_exec(struct ast_channel *chan, void *data) tmp = ast_strdupa(data); - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); AST_STANDARD_APP_ARGS(args, tmp); if (args.options) { @@ -446,11 +443,11 @@ static int playback_exec(struct ast_channel *chan, void *data) pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", mres ? "FAILED" : "SUCCESS"); } done: - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return res; } -static int reload(void *mod) +static int reload(void) { if (say_cfg) { ast_config_destroy(say_cfg); @@ -464,13 +461,13 @@ static int reload(void *mod) return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application(app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); if (say_cfg) ast_config_destroy(say_cfg); @@ -478,21 +475,15 @@ static int unload_module(void *mod) return res; } -static int load_module(void *mod) +static int load_module(void) { - reload(mod); + reload(); ast_cli_register_multiple(myclis, sizeof(myclis)/sizeof(struct ast_cli_entry)); return ast_register_application(app, playback_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1,reload,NULL,NULL); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Sound File Playback Application", + .load = load_module, + .unload = unload_module, + .reload = reload, + ); diff --git a/apps/app_privacy.c b/apps/app_privacy.c index 45c80ac16..277ffba4c 100644 --- a/apps/app_privacy.c +++ b/apps/app_privacy.c @@ -49,8 +49,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define PRIV_CONFIG "privacy.conf" -static char *tdesc = "Require phone number to be entered, if no CallerID sent"; - static char *app = "PrivacyManager"; static char *synopsis = "Require phone number to be entered, if no CallerID sent"; @@ -76,7 +74,6 @@ static char *descrip = " SUCCESS | FAILED \n" ; -LOCAL_USER_DECL; static int privacy_exec (struct ast_channel *chan, void *data) { @@ -87,7 +84,7 @@ static int privacy_exec (struct ast_channel *chan, void *data) int x = 0; char *s; char phone[30]; - struct localuser *u; + struct ast_module_user *u; struct ast_config *cfg = NULL; char *parse = NULL; int priority_jump = 0; @@ -97,7 +94,8 @@ static int privacy_exec (struct ast_channel *chan, void *data) AST_APP_ARG(options); ); - LOCAL_USER_ADD (u); + u = ast_module_user_add(chan); + if (!ast_strlen_zero(chan->cid.cid_num)) { if (option_verbose > 2) ast_verbose (VERBOSE_PREFIX_3 "CallerID Present: Skipping\n"); @@ -106,13 +104,12 @@ static int privacy_exec (struct ast_channel *chan, void *data) if (chan->_state != AST_STATE_UP) { res = ast_answer(chan); if (res) { - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } } - if (!ast_strlen_zero((char *)data)) - { + if (!ast_strlen_zero(data)) { parse = ast_strdupa(data); AST_STANDARD_APP_ARGS(args, parse); @@ -211,34 +208,25 @@ static int privacy_exec (struct ast_channel *chan, void *data) ast_config_destroy(cfg); } - LOCAL_USER_REMOVE (u); - return 0; + ast_module_user_remove(u); + + return 0; } -static int unload_module(void *mod) +static int unload_module(void) { int res; res = ast_unregister_application (app); - STANDARD_HANGUP_LOCALUSERS; + ast_module_user_hangup_all(); return res; } -static int load_module(void *mod) +static int load_module(void) { return ast_register_application (app, privacy_exec, synopsis, descrip); } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD1; +AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Require phone number to be entered, if no CallerID sent"); diff --git a/apps/app_queue.c b/apps/app_queue.c index 3e2f15340..448e8ca74 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -124,8 +124,6 @@ static struct strategy { #define RES_OUTOFMEMORY (-2) /* Out of memory */ #define RES_NOSUCHQUEUE (-3) /* No such queue */ -static char *tdesc = "True Call Queueing"; - static char *app = "Queue"; static char *synopsis = "Queue a call for a call queue"; @@ -289,7 +287,6 @@ struct callattempt { struct member *member; }; -LOCAL_USER_DECL; struct queue_ent { struct call_queue *parent; /*!< What queue is our parent */ @@ -2936,7 +2933,7 @@ static void reload_queue_members(void) static int pqm_exec(struct ast_channel *chan, void *data) { - struct localuser *lu; + struct ast_module_user *lu; char *parse; int priority_jump = 0; AST_DECLARE_APP_ARGS(args, @@ -2954,7 +2951,7 @@ static int pqm_exec(struct ast_channel *chan, void *data) AST_STANDARD_APP_ARGS(args, parse); - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); if (args.options) { if (strchr(args.options, 'j')) @@ -2963,7 +2960,7 @@ static int pqm_exec(struct ast_channel *chan, void *data) if (ast_strlen_zero(args.interface)) { ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface[|options])\n"); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return -1; } @@ -2972,16 +2969,16 @@ static int pqm_exec(struct ast_channel *chan, void *data) if (priority_jump || ast_opt_priority_jumping) { if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) { pbx_builtin_setvar_helper(chan, "PQMSTATUS", "NOTFOUND"); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return 0; } } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); pbx_builtin_setvar_helper(chan, "PQMSTATUS", "NOTFOUND"); return -1; } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); pbx_builtin_setvar_helper(chan, "PQMSTATUS", "PAUSED"); return 0; @@ -2989,7 +2986,7 @@ static int pqm_exec(struct ast_channel *chan, void *data) static int upqm_exec(struct ast_channel *chan, void *data) { - struct localuser *lu; + struct ast_module_user *lu; char *parse; int priority_jump = 0; AST_DECLARE_APP_ARGS(args, @@ -3007,7 +3004,7 @@ static int upqm_exec(struct ast_channel *chan, void *data) AST_STANDARD_APP_ARGS(args, parse); - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); if (args.options) { if (strchr(args.options, 'j')) @@ -3016,7 +3013,7 @@ static int upqm_exec(struct ast_channel *chan, void *data) if (ast_strlen_zero(args.interface)) { ast_log(LOG_WARNING, "Missing interface argument to PauseQueueMember ([queuename]|interface[|options])\n"); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return -1; } @@ -3025,16 +3022,16 @@ static int upqm_exec(struct ast_channel *chan, void *data) if (priority_jump || ast_opt_priority_jumping) { if (ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101)) { pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "NOTFOUND"); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return 0; } } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "NOTFOUND"); return -1; } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); pbx_builtin_setvar_helper(chan, "UPQMSTATUS", "UNPAUSED"); return 0; @@ -3043,7 +3040,7 @@ static int upqm_exec(struct ast_channel *chan, void *data) static int rqm_exec(struct ast_channel *chan, void *data) { int res=-1; - struct localuser *lu; + struct ast_module_user *lu; char *parse, *temppos = NULL; int priority_jump = 0; AST_DECLARE_APP_ARGS(args, @@ -3062,7 +3059,7 @@ static int rqm_exec(struct ast_channel *chan, void *data) AST_STANDARD_APP_ARGS(args, parse); - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); if (ast_strlen_zero(args.interface)) { args.interface = ast_strdupa(chan->name); @@ -3096,7 +3093,7 @@ static int rqm_exec(struct ast_channel *chan, void *data) break; } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return res; } @@ -3104,7 +3101,7 @@ static int rqm_exec(struct ast_channel *chan, void *data) static int aqm_exec(struct ast_channel *chan, void *data) { int res=-1; - struct localuser *lu; + struct ast_module_user *lu; char *parse, *temppos = NULL; int priority_jump = 0; AST_DECLARE_APP_ARGS(args, @@ -3124,7 +3121,7 @@ static int aqm_exec(struct ast_channel *chan, void *data) AST_STANDARD_APP_ARGS(args, parse); - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); if (ast_strlen_zero(args.interface)) { args.interface = ast_strdupa(chan->name); @@ -3169,14 +3166,14 @@ static int aqm_exec(struct ast_channel *chan, void *data) break; } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return res; } static int ql_exec(struct ast_channel *chan, void *data) { - struct localuser *u; + struct ast_module_user *u; char *parse; AST_DECLARE_APP_ARGS(args, @@ -3192,7 +3189,7 @@ static int ql_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); parse = ast_strdupa(data); @@ -3201,14 +3198,14 @@ static int ql_exec(struct ast_channel *chan, void *data) if (ast_strlen_zero(args.queuename) || ast_strlen_zero(args.uniqueid) || ast_strlen_zero(args.peer) || ast_strlen_zero(args.event)) { ast_log(LOG_WARNING, "QueueLog requires arguments (queuename|uniqueid|peer|event[|additionalinfo])\n"); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return -1; } ast_queue_log(args.queuename, args.uniqueid, args.peer, args.event, "%s", args.params ? args.params : ""); - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -3217,7 +3214,7 @@ static int queue_exec(struct ast_channel *chan, void *data) { int res=-1; int ringing=0; - struct localuser *lu; + struct ast_module_user *lu; const char *user_priority; const char *max_penalty_str; int prio; @@ -3245,7 +3242,7 @@ static int queue_exec(struct ast_channel *chan, void *data) parse = ast_strdupa(data); AST_STANDARD_APP_ARGS(args, parse); - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); /* Setup our queue entry */ memset(&qe, 0, sizeof(qe)); @@ -3473,7 +3470,7 @@ check_turns: set_queue_result(chan, reason); res = 0; } - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return res; } @@ -3482,7 +3479,7 @@ static int queue_function_qac(struct ast_channel *chan, char *cmd, char *data, c { int count = 0; struct call_queue *q; - struct localuser *lu; + struct ast_module_user *lu; struct member *m; buf[0] = '\0'; @@ -3492,7 +3489,7 @@ static int queue_function_qac(struct ast_channel *chan, char *cmd, char *data, c return -1; } - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); AST_LIST_LOCK(&queues); AST_LIST_TRAVERSE(&queues, q, list) { @@ -3515,7 +3512,7 @@ static int queue_function_qac(struct ast_channel *chan, char *cmd, char *data, c ast_log(LOG_WARNING, "queue %s was not found\n", data); snprintf(buf, len, "%d", count); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return 0; } @@ -3524,7 +3521,7 @@ static int queue_function_queuewaitingcount(struct ast_channel *chan, char *cmd, { int count = 0; struct call_queue *q; - struct localuser *lu; + struct ast_module_user *lu; buf[0] = '\0'; @@ -3533,7 +3530,7 @@ static int queue_function_queuewaitingcount(struct ast_channel *chan, char *cmd, return -1; } - LOCAL_USER_ADD(lu); + lu = ast_module_user_add(chan); AST_LIST_LOCK(&queues); AST_LIST_TRAVERSE(&queues, q, list) { @@ -3551,13 +3548,13 @@ static int queue_function_queuewaitingcount(struct ast_channel *chan, char *cmd, ast_log(LOG_WARNING, "queue %s was not found\n", data); snprintf(buf, len, "%d", count); - LOCAL_USER_REMOVE(lu); + ast_module_user_remove(lu); return 0; } static int queue_function_queuememberlist(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { - struct localuser *u; + struct ast_module_user *u; struct call_queue *q; struct member *m; @@ -3569,7 +3566,7 @@ static int queue_function_queuememberlist(struct ast_channel *chan, char *cmd, c return -1; } - LOCAL_USER_ADD(u); + u = ast_module_user_add(chan); AST_LIST_LOCK(&queues); AST_LIST_TRAVERSE(&queues, q, list) { @@ -3603,7 +3600,7 @@ static int queue_function_queuememberlist(struct ast_channel *chan, char *cmd, c /* We should already be terminated, but let's make sure. */ buf[len - 1] = '\0'; - LOCAL_USER_REMOVE(u); + ast_module_user_remove(u); return 0; } @@ -4328,7 +4325,7 @@ static struct ast_cli_entry cli_remove_queue_member = { { "remove", "queue", "member", NULL }, handle_remove_queue_member, "Removes a channel from a specified queue", rqm_cmd_usage, complete_remove_queue_member }; -static int unload_module(void *mod) +static int unload_module(void) { int res; @@ -4352,14 +4349,14 @@ static int unload_module(void *mod) res |= ast_custom_function_unregister(&queuewaitingcount_function); res |= ast_unregister_application(app); - clear_and_free_interfaces(); + ast_module_user_hangup_all(); - STANDARD_HANGUP_LOCALUSERS; + clear_and_free_interfaces(); return res; } -static int load_module(void *mod) +static int load_module(void) { int res; @@ -4393,21 +4390,15 @@ static int load_module(void *mod) return res; } -static int reload(void *mod) +static int reload(void) { reload_queues(); return 0; } -static const char *description(void) -{ - return tdesc; -} - -static const char *key(void) -{ - return ASTERISK_GPL_KEY; -} - -STD_MOD(MOD_1, reload, NULL, NULL); +AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "True Call Queueing", + .load = load_module, + .unload = unload_module, + .reload = reload, + ); diff --git a/apps/app_random.c b/apps/app_random.c index 60ac2c141..8484f656d 100644 --- a/apps/app_random.c +++ b/apps/app_random.c @@ -41,8 +41,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") /*! \todo The Random() app should be removed from trunk following the release of 1.4 */ -static char *tdesc = "Random goto"; - static char *app_random = "Random"; static char *random_synopsis = "Conditionally branches, based upon a probability"; @@ -52,12 +50,11 @@ static char *random_descrip = " probability := INTEGER in the range 1 to 100\n" "DEPRECATED: Use GotoIf($[${RAND(1,100)} > ]?