merge new_loader_completion branch, including (at least):
authorKevin P. Fleming <kpfleming@digium.com>
Mon, 21 Aug 2006 02:11:39 +0000 (02:11 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Mon, 21 Aug 2006 02:11:39 +0000 (02:11 +0000)
  - restructured build tree and makefiles to eliminate recursion problems
  - support for embedded modules
  - support for static builds
  - simpler cross-compilation support
  - simpler module/loader interface (no exported symbols)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40722 65c4cc65-6c06-0410-ace0-fbb531ad65f3

398 files changed:
.cleancount
Makefile
Makefile.moddir_rules
Makefile.rules
acinclude.m4
apps/Makefile
apps/app_adsiprog.c
apps/app_alarmreceiver.c
apps/app_amd.c
apps/app_authenticate.c
apps/app_cdr.c
apps/app_chanisavail.c
apps/app_channelredirect.c
apps/app_chanspy.c
apps/app_controlplayback.c
apps/app_db.c
apps/app_dial.c
apps/app_dictate.c
apps/app_directed_pickup.c
apps/app_directory.c
apps/app_disa.c
apps/app_dumpchan.c
apps/app_echo.c
apps/app_exec.c
apps/app_externalivr.c
apps/app_festival.c
apps/app_flash.c
apps/app_followme.c
apps/app_forkcdr.c
apps/app_getcpeid.c
apps/app_hasnewvoicemail.c
apps/app_ices.c
apps/app_image.c
apps/app_ivrdemo.c
apps/app_lookupblacklist.c
apps/app_lookupcidname.c
apps/app_macro.c
apps/app_meetme.c
apps/app_milliwatt.c
apps/app_mixmonitor.c
apps/app_morsecode.c
apps/app_mp3.c
apps/app_nbscat.c
apps/app_osplookup.c
apps/app_page.c
apps/app_parkandannounce.c
apps/app_playback.c
apps/app_privacy.c
apps/app_queue.c
apps/app_random.c
apps/app_read.c
apps/app_readfile.c
apps/app_realtime.c
apps/app_record.c
apps/app_rpt.c
apps/app_sayunixtime.c
apps/app_senddtmf.c
apps/app_sendtext.c
apps/app_setcallerid.c
apps/app_setcdruserfield.c
apps/app_settransfercapability.c
apps/app_skel.c
apps/app_sms.c
apps/app_softhangup.c
apps/app_speech_utils.c
apps/app_stack.c
apps/app_system.c
apps/app_talkdetect.c
apps/app_test.c
apps/app_transfer.c
apps/app_url.c
apps/app_userevent.c
apps/app_verbose.c
apps/app_voicemail.c
apps/app_waitforring.c
apps/app_waitforsilence.c
apps/app_while.c
apps/app_zapateller.c
apps/app_zapbarge.c
apps/app_zapras.c
apps/app_zapscan.c
build_tools/cflags.xml
build_tools/embed_modules.xml [new file with mode: 0644]
build_tools/menuselect-deps.in
build_tools/prep_moduledeps
cdr/Makefile
cdr/cdr_csv.c
cdr/cdr_custom.c
cdr/cdr_manager.c
cdr/cdr_odbc.c
cdr/cdr_pgsql.c
cdr/cdr_radius.c
cdr/cdr_sqlite.c
cdr/cdr_tds.c
channels/Makefile
channels/chan_agent.c
channels/chan_alsa.c
channels/chan_features.c
channels/chan_h323.c
channels/chan_iax2.c
channels/chan_jingle.c
channels/chan_local.c
channels/chan_mgcp.c
channels/chan_misdn.c
channels/chan_nbs.c
channels/chan_oss.c
channels/chan_phone.c
channels/chan_sip.c
channels/chan_skinny.c
channels/chan_zap.c
channels/h323/Makefile
channels/misdn/Makefile
channels/misdn/ie.c
channels/misdn/isdn_lib.c
channels/misdn/isdn_lib.h
channels/misdn/isdn_lib_intern.h
channels/misdn/isdn_msg_parser.c
codecs/Makefile
codecs/codec_a_mu.c
codecs/codec_adpcm.c
codecs/codec_alaw.c
codecs/codec_g726.c
codecs/codec_gsm.c
codecs/codec_ilbc.c
codecs/codec_lpc10.c
codecs/codec_speex.c
codecs/codec_ulaw.c
codecs/codec_zap.c
codecs/gsm/Makefile
configure
configure.ac
cygwin/Makefile [deleted file]
cygwin/cygloader.c [deleted file]
doc/asterisk.8 [moved from asterisk.8 with 100% similarity]
doc/asterisk.sgml [moved from asterisk.sgml with 100% similarity]
formats/Makefile
formats/format_g723.c
formats/format_g726.c
formats/format_g729.c
formats/format_gsm.c
formats/format_h263.c
formats/format_h264.c
formats/format_ilbc.c
formats/format_jpeg.c
formats/format_ogg_vorbis.c
formats/format_pcm.c
formats/format_sln.c
formats/format_vox.c
formats/format_wav.c
formats/format_wav_gsm.c
funcs/Makefile
funcs/func_base64.c
funcs/func_callerid.c
funcs/func_cdr.c
funcs/func_channel.c
funcs/func_curl.c
funcs/func_cut.c
funcs/func_db.c
funcs/func_enum.c
funcs/func_env.c
funcs/func_global.c
funcs/func_groupcount.c
funcs/func_language.c
funcs/func_logic.c
funcs/func_math.c
funcs/func_md5.c
funcs/func_moh.c
funcs/func_odbc.c
funcs/func_rand.c
funcs/func_realtime.c
funcs/func_sha1.c
funcs/func_strings.c
funcs/func_timeout.c
funcs/func_uri.c
include/asterisk.h
include/asterisk/abstract_jb.h
include/asterisk/autoconfig.h.in
include/asterisk/cdr.h
include/asterisk/compiler.h
include/asterisk/dns.h
include/asterisk/file.h
include/asterisk/indications.h
include/asterisk/linkedlists.h
include/asterisk/lock.h
include/asterisk/module.h
include/asterisk/monitor.h
include/asterisk/srv.h
include/asterisk/translate.h
include/asterisk/utils.h
loader.c [deleted file]
main/Makefile [new file with mode: 0644]
main/abstract_jb.c [moved from abstract_jb.c with 100% similarity]
main/acl.c [moved from acl.c with 100% similarity]
main/aescrypt.c [moved from aescrypt.c with 100% similarity]
main/aeskey.c [moved from aeskey.c with 100% similarity]
main/aesopt.h [moved from aesopt.h with 100% similarity]
main/aestab.c [moved from aestab.c with 100% similarity]
main/alaw.c [moved from alaw.c with 100% similarity]
main/app.c [moved from app.c with 100% similarity]
main/ast_expr2.c [moved from ast_expr2.c with 99% similarity]
main/ast_expr2.fl [moved from ast_expr2.fl with 100% similarity]
main/ast_expr2.h [moved from ast_expr2.h with 100% similarity]
main/ast_expr2.y [moved from ast_expr2.y with 100% similarity]
main/ast_expr2f.c [moved from ast_expr2f.c with 99% similarity]
main/asterisk.c [moved from asterisk.c with 99% similarity]
main/astmm.c [moved from astmm.c with 100% similarity]
main/autoservice.c [moved from autoservice.c with 100% similarity]
main/buildinfo.c [moved from buildinfo.c with 100% similarity]
main/callerid.c [moved from callerid.c with 100% similarity]
main/cdr.c [moved from cdr.c with 99% similarity]
main/channel.c [moved from channel.c with 100% similarity]
main/chanvars.c [moved from chanvars.c with 100% similarity]
main/cli.c [moved from cli.c with 99% similarity]
main/coef_in.h [moved from coef_in.h with 100% similarity]
main/coef_out.h [moved from coef_out.h with 100% similarity]
main/config.c [moved from config.c with 100% similarity]
main/cryptostub.c [moved from cryptostub.c with 100% similarity]
main/db.c [moved from db.c with 100% similarity]
main/db1-ast/Makefile [moved from db1-ast/Makefile with 95% similarity]
main/db1-ast/btree/bt_close.c [moved from db1-ast/btree/bt_close.c with 100% similarity]
main/db1-ast/btree/bt_conv.c [moved from db1-ast/btree/bt_conv.c with 100% similarity]
main/db1-ast/btree/bt_debug.c [moved from db1-ast/btree/bt_debug.c with 100% similarity]
main/db1-ast/btree/bt_delete.c [moved from db1-ast/btree/bt_delete.c with 100% similarity]
main/db1-ast/btree/bt_get.c [moved from db1-ast/btree/bt_get.c with 100% similarity]
main/db1-ast/btree/bt_open.c [moved from db1-ast/btree/bt_open.c with 100% similarity]
main/db1-ast/btree/bt_overflow.c [moved from db1-ast/btree/bt_overflow.c with 100% similarity]
main/db1-ast/btree/bt_page.c [moved from db1-ast/btree/bt_page.c with 100% similarity]
main/db1-ast/btree/bt_put.c [moved from db1-ast/btree/bt_put.c with 100% similarity]
main/db1-ast/btree/bt_search.c [moved from db1-ast/btree/bt_search.c with 100% similarity]
main/db1-ast/btree/bt_seq.c [moved from db1-ast/btree/bt_seq.c with 100% similarity]
main/db1-ast/btree/bt_split.c [moved from db1-ast/btree/bt_split.c with 100% similarity]
main/db1-ast/btree/bt_utils.c [moved from db1-ast/btree/bt_utils.c with 100% similarity]
main/db1-ast/btree/btree.h [moved from db1-ast/btree/btree.h with 100% similarity]
main/db1-ast/btree/extern.h [moved from db1-ast/btree/extern.h with 100% similarity]
main/db1-ast/db/db.c [moved from db1-ast/db/db.c with 94% similarity]
main/db1-ast/hash/README [moved from db1-ast/hash/README with 100% similarity]
main/db1-ast/hash/extern.h [moved from db1-ast/hash/extern.h with 100% similarity]
main/db1-ast/hash/hash.c [moved from db1-ast/hash/hash.c with 100% similarity]
main/db1-ast/hash/hash.h [moved from db1-ast/hash/hash.h with 100% similarity]
main/db1-ast/hash/hash_bigkey.c [moved from db1-ast/hash/hash_bigkey.c with 100% similarity]
main/db1-ast/hash/hash_buf.c [moved from db1-ast/hash/hash_buf.c with 100% similarity]
main/db1-ast/hash/hash_func.c [moved from db1-ast/hash/hash_func.c with 100% similarity]
main/db1-ast/hash/hash_log2.c [moved from db1-ast/hash/hash_log2.c with 100% similarity]
main/db1-ast/hash/hash_page.c [moved from db1-ast/hash/hash_page.c with 100% similarity]
main/db1-ast/hash/hsearch.c [moved from db1-ast/hash/hsearch.c with 100% similarity]
main/db1-ast/hash/ndbm.c [moved from db1-ast/hash/ndbm.c with 100% similarity]
main/db1-ast/hash/page.h [moved from db1-ast/hash/page.h with 100% similarity]
main/db1-ast/hash/search.h [moved from db1-ast/hash/search.h with 100% similarity]
main/db1-ast/include/circ-queue.h [moved from db1-ast/include/circ-queue.h with 100% similarity]
main/db1-ast/include/compat.h [moved from db1-ast/include/compat.h with 100% similarity]
main/db1-ast/include/db.h [moved from db1-ast/include/db.h with 100% similarity]
main/db1-ast/include/mpool.h [moved from db1-ast/include/mpool.h with 100% similarity]
main/db1-ast/include/ndbm.h [moved from db1-ast/include/ndbm.h with 100% similarity]
main/db1-ast/libdb.map [moved from db1-ast/libdb.map with 100% similarity]
main/db1-ast/mpool/README [moved from db1-ast/mpool/README with 100% similarity]
main/db1-ast/mpool/mpool.c [moved from db1-ast/mpool/mpool.c with 100% similarity]
main/db1-ast/recno/extern.h [moved from db1-ast/recno/extern.h with 100% similarity]
main/db1-ast/recno/rec_close.c [moved from db1-ast/recno/rec_close.c with 100% similarity]
main/db1-ast/recno/rec_delete.c [moved from db1-ast/recno/rec_delete.c with 100% similarity]
main/db1-ast/recno/rec_get.c [moved from db1-ast/recno/rec_get.c with 100% similarity]
main/db1-ast/recno/rec_open.c [moved from db1-ast/recno/rec_open.c with 100% similarity]
main/db1-ast/recno/rec_put.c [moved from db1-ast/recno/rec_put.c with 100% similarity]
main/db1-ast/recno/rec_search.c [moved from db1-ast/recno/rec_search.c with 100% similarity]
main/db1-ast/recno/rec_seq.c [moved from db1-ast/recno/rec_seq.c with 100% similarity]
main/db1-ast/recno/rec_utils.c [moved from db1-ast/recno/rec_utils.c with 100% similarity]
main/db1-ast/recno/recno.h [moved from db1-ast/recno/recno.h with 100% similarity]
main/devicestate.c [moved from devicestate.c with 100% similarity]
main/dlfcn.c [moved from dlfcn.c with 100% similarity]
main/dns.c [moved from dns.c with 95% similarity]
main/dnsmgr.c [moved from dnsmgr.c with 100% similarity]
main/dsp.c [moved from dsp.c with 100% similarity]
main/ecdisa.h [moved from ecdisa.h with 100% similarity]
main/editline/CHANGES [moved from editline/CHANGES with 100% similarity]
main/editline/INSTALL [moved from editline/INSTALL with 100% similarity]
main/editline/Makefile.in [moved from editline/Makefile.in with 100% similarity]
main/editline/PLATFORMS [moved from editline/PLATFORMS with 100% similarity]
main/editline/README [moved from editline/README with 100% similarity]
main/editline/TEST/test.c [moved from editline/TEST/test.c with 100% similarity]
main/editline/chared.c [moved from editline/chared.c with 100% similarity]
main/editline/chared.h [moved from editline/chared.h with 100% similarity]
main/editline/common.c [moved from editline/common.c with 100% similarity]
main/editline/config.guess [moved from editline/config.guess with 100% similarity]
main/editline/config.h.in [moved from editline/config.h.in with 100% similarity]
main/editline/config.sub [moved from editline/config.sub with 100% similarity]
main/editline/configure [moved from editline/configure with 100% similarity]
main/editline/configure.in [moved from editline/configure.in with 100% similarity]
main/editline/editline.3 [moved from editline/editline.3 with 100% similarity]
main/editline/editrc.5 [moved from editline/editrc.5 with 100% similarity]
main/editline/el.c [moved from editline/el.c with 100% similarity]
main/editline/el.h [moved from editline/el.h with 100% similarity]
main/editline/emacs.c [moved from editline/emacs.c with 100% similarity]
main/editline/hist.c [moved from editline/hist.c with 100% similarity]
main/editline/hist.h [moved from editline/hist.h with 100% similarity]
main/editline/histedit.h [moved from editline/histedit.h with 100% similarity]
main/editline/history.c [moved from editline/history.c with 100% similarity]
main/editline/install-sh [moved from editline/install-sh with 100% similarity]
main/editline/key.c [moved from editline/key.c with 100% similarity]
main/editline/key.h [moved from editline/key.h with 100% similarity]
main/editline/makelist [moved from editline/makelist with 100% similarity]
main/editline/map.c [moved from editline/map.c with 100% similarity]
main/editline/map.h [moved from editline/map.h with 100% similarity]
main/editline/np/fgetln.c [moved from editline/np/fgetln.c with 100% similarity]
main/editline/np/strlcat.c [moved from editline/np/strlcat.c with 100% similarity]
main/editline/np/strlcpy.c [moved from editline/np/strlcpy.c with 100% similarity]
main/editline/np/unvis.c [moved from editline/np/unvis.c with 100% similarity]
main/editline/np/vis.c [moved from editline/np/vis.c with 100% similarity]
main/editline/np/vis.h [moved from editline/np/vis.h with 100% similarity]
main/editline/parse.c [moved from editline/parse.c with 100% similarity]
main/editline/parse.h [moved from editline/parse.h with 100% similarity]
main/editline/prompt.c [moved from editline/prompt.c with 100% similarity]
main/editline/prompt.h [moved from editline/prompt.h with 100% similarity]
main/editline/read.c [moved from editline/read.c with 100% similarity]
main/editline/read.h [moved from editline/read.h with 100% similarity]
main/editline/readline.c [moved from editline/readline.c with 100% similarity]
main/editline/readline/readline.h [moved from editline/readline/readline.h with 100% similarity]
main/editline/refresh.c [moved from editline/refresh.c with 100% similarity]
main/editline/refresh.h [moved from editline/refresh.h with 100% similarity]
main/editline/search.c [moved from editline/search.c with 100% similarity]
main/editline/search.h [moved from editline/search.h with 100% similarity]
main/editline/sig.c [moved from editline/sig.c with 100% similarity]
main/editline/sig.h [moved from editline/sig.h with 100% similarity]
main/editline/sys.h [moved from editline/sys.h with 100% similarity]
main/editline/term.c [moved from editline/term.c with 100% similarity]
main/editline/term.h [moved from editline/term.h with 100% similarity]
main/editline/tokenizer.c [moved from editline/tokenizer.c with 100% similarity]
main/editline/tokenizer.h [moved from editline/tokenizer.h with 100% similarity]
main/editline/tty.c [moved from editline/tty.c with 100% similarity]
main/editline/tty.h [moved from editline/tty.h with 100% similarity]
main/editline/vi.c [moved from editline/vi.c with 100% similarity]
main/enum.c [moved from enum.c with 100% similarity]
main/file.c [moved from file.c with 98% similarity]
main/fixedjitterbuf.c [moved from fixedjitterbuf.c with 100% similarity]
main/fixedjitterbuf.h [moved from fixedjitterbuf.h with 100% similarity]
main/frame.c [moved from frame.c with 100% similarity]
main/fskmodem.c [moved from fskmodem.c with 100% similarity]
main/http.c [moved from http.c with 100% similarity]
main/image.c [moved from image.c with 100% similarity]
main/indications.c [moved from indications.c with 100% similarity]
main/io.c [moved from io.c with 100% similarity]
main/jitterbuf.c [moved from jitterbuf.c with 100% similarity]
main/jitterbuf.h [moved from jitterbuf.h with 100% similarity]
main/loader.c [new file with mode: 0644]
main/logger.c [moved from logger.c with 100% similarity]
main/manager.c [moved from manager.c with 100% similarity]
main/md5.c [moved from md5.c with 100% similarity]
main/netsock.c [moved from netsock.c with 100% similarity]
main/pbx.c [moved from pbx.c with 100% similarity]
main/plc.c [moved from plc.c with 100% similarity]
main/poll.c [moved from poll.c with 100% similarity]
main/privacy.c [moved from privacy.c with 100% similarity]
main/rtp.c [moved from rtp.c with 100% similarity]
main/say.c [moved from say.c with 100% similarity]
main/sched.c [moved from sched.c with 100% similarity]
main/sha1.c [moved from sha1.c with 100% similarity]
main/slinfactory.c [moved from slinfactory.c with 100% similarity]
main/srv.c [moved from srv.c with 100% similarity]
main/stdtime/Makefile [moved from stdtime/Makefile with 100% similarity]
main/stdtime/localtime.c [moved from stdtime/localtime.c with 100% similarity]
main/stdtime/private.h [moved from stdtime/private.h with 100% similarity]
main/stdtime/test.c [moved from stdtime/test.c with 100% similarity]
main/stdtime/tzfile.h [moved from stdtime/tzfile.h with 100% similarity]
main/strcompat.c [moved from strcompat.c with 100% similarity]
main/tdd.c [moved from tdd.c with 100% similarity]
main/term.c [moved from term.c with 100% similarity]
main/translate.c [moved from translate.c with 98% similarity]
main/udptl.c [moved from udptl.c with 100% similarity]
main/ulaw.c [moved from ulaw.c with 100% similarity]
main/utils.c [moved from utils.c with 100% similarity]
makeopts.in
pbx/Makefile
pbx/pbx_ael.c
pbx/pbx_config.c
pbx/pbx_dundi.c
pbx/pbx_loopback.c
pbx/pbx_realtime.c
pbx/pbx_spool.c
res/Makefile
res/res_adsi.c
res/res_agi.c
res/res_clioriginate.c
res/res_config_odbc.c
res/res_config_pgsql.c
res/res_convert.c
res/res_crypto.c
res/res_features.c
res/res_indications.c
res/res_jabber.c
res/res_monitor.c
res/res_musiconhold.c
res/res_odbc.c
res/res_smdi.c
res/res_snmp.c
res/res_speech.c
sounds.txt [deleted file]
sounds/Makefile
utils/Makefile
utils/ael_main.c
utils/muted.c [moved from muted.c with 100% similarity]

index aabe6ec..2bd5a0a 100644 (file)
@@ -1 +1 @@
-21
+22
index 1f52edb..a42993d 100644 (file)
--- a/Makefile
+++ b/Makefile
 
 .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
-
-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=-I../include -I../main
+OTHER_SUBDIR_CFLAGS=-I../include
 
-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
-       @echo "****"
-       @echo "**** The configure script was just executed, so 'make' needs to be"
-       @echo "**** restarted."
-       @echo "****"
-       @exit 1
-
-makeopts: 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
 
-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
-
-ifneq ($(wildcard TAGS),)
-all: TAGS
-endif
-
-editline/config.h:
-       cd editline && unset CFLAGS AST_LIBS && CFLAGS="$(OPTIMIZE)" ./configure ; \
-
-editline/libedit.a:
-       cd editline && unset CFLAGS AST_LIBS && test -f config.h || CFLAGS="$(OPTIMIZE)" ./configure
-       $(MAKE) -C editline libedit.a
-
-db1-ast/libdb1.a:
-       $(MAKE) -C db1-ast libdb1.a
-
-ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),)
- ifneq ($(wildcard .depend),)
-  include .depend
- endif
-endif
-
-ifeq ($(strip $(foreach var,clean distclean dist-clean update,$(findstring $(var),$(MAKECMDGOALS)))),)
- ifneq ($(wildcard .tags-depend),)
-  include .tags-depend
- endif
-endif
+$(MOD_SUBDIRS_EMBED_LDSCRIPT):
+       @echo "EMBED_LDSCRIPTS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldscript=) SUBDIR=$(@:-embed-ldscript=) __embed_ldscript` >> makeopts.embed_rules
 
-ast_expr2.c ast_expr2.h:
-       bison -o $@ -d --name-prefix=ast_yy ast_expr2.y
+$(MOD_SUBDIRS_EMBED_LDFLAGS):
+       @echo "EMBED_LDFLAGS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-ldflags=) SUBDIR=$(@:-embed-ldflags=) __embed_ldflags` >> makeopts.embed_rules
 
-ast_expr2f.c:
-       flex -o $@ --full ast_expr2.fl
+$(MOD_SUBDIRS_EMBED_LIBS):
+       @echo "EMBED_LIBS+="`$(MAKE) --quiet --no-print-directory -C $(@:-embed-libs=) SUBDIR=$(@:-embed-libs=) __embed_libs` >> makeopts.embed_rules
 
-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
+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)
 
-asterisk.pdf: asterisk.sgml
-       docbook2pdf asterisk.sgml
+$(SUBDIRS): depend makeopts.embed_rules
 
-asterisk.ps: asterisk.sgml
-       docbook2ps asterisk.sgml
+# 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))
 
-asterisk.html: asterisk.sgml
-       docbook2html asterisk.sgml
-       mv r1.html asterisk.html
+$(MOD_SUBDIRS):
+       @CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) --no-print-directory -C $@ SUBDIR=$@ all
 
-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)
index 0a82471..8e9c082 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Asterisk -- A telephony toolkit for Linux.
 # 
-# Makefile rules
+# Makefile rules for subdirectories containing modules
 #
 # Copyright (C) 2006, Digium, Inc.
 #
 # 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))
-endef
+comma:=,
 
-define module_oo_cc_template
-$(1).oo: $(1).cc
-$(1).oo: CFLAGS+=$$(MENUSELECT_OPTS_$(1):%=-D%) $(foreach dep,$(MENUSELECT_DEPENDS_$(1)),$$(value $(dep)_INCLUDE))
+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_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`
index 47a92a5..0c2b97d 100644 (file)
@@ -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))
index 34eefe8..1bd0937 100644 (file)
@@ -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],
index df5f60a..0373a3b 100644 (file)
@@ -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
index e8ab878..04b9000 100644 (file)
@@ -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");
index faa2c6a..5b745d0 100644 (file)
@@ -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");
index 1ffc463..2f7148b 100644 (file)
@@ -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,
+              );
index 0e6b8eb..03bc5ed 100644 (file)
@@ -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");
index 8d20fb0..e8f76a6 100644 (file)
@@ -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");
index c23aa6e..c6931d8 100644 (file)
@@ -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");
index ada6230..a8eedf9 100644 (file)
@@ -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");
index a4fcb0b..1f8a9f0 100644 (file)
@@ -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");
index a2e3929..8a5a845 100644 (file)
@@ -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");
index fc8c52b..73d092a 100644 (file)
@@ -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");
index 99392ab..13b5b33 100644 (file)
@@ -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");
index b77a389..0c46118 100644 (file)
@@ -51,7 +51,6 @@ static char *synopsis = "Virtual Dictation Machine";
 static char *desc = "  Dictate([<base_dir>[|<filename>]])\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");
index c79bad2..e45c876 100644 (file)
@@ -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");
index 55e91ce..6f660e3 100644 (file)
@@ -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");
index 12019ac..1ec0531 100644 (file)
@@ -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");
index 8a06bae..426ba4e 100644 (file)
@@ -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");
index 85df130..19a8638 100644 (file)
@@ -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");
index d0c2591..0aafac3 100644 (file)
@@ -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 <expr> is true, but <app> 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");
index 787cc36..e81f4f3 100644 (file)
@@ -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");
index caec727..f6e1d75 100644 (file)
@@ -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");
index d237fbc..446b2a1 100644 (file)
@@ -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");
 
index 09fb451..24f134d 100644 (file)
@@ -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";
+       return ast_register_application(app, app_exec, synopsis, descrip);
 }
 
-static int reload(void *mod)
+static int reload(void)
 {
        reload_followme();
-       return 0;       
-}
 
-static const char *key(void)
-{
-       return ASTERISK_GPL_KEY;
+       return 0;       
 }
 
-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,
+              );
index 6201486..d9c5b29 100644 (file)
@@ -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");
index be0e065..7dbd5f6 100644 (file)
@@ -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");
index 22a5d3f..33204bb 100644 (file)
@@ -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.");
index 67b107e..9d93dab 100644 (file)
@@ -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");
index b6308f0..f5f3271 100644 (file)
@@ -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");
index d3dd2e9..933ae90 100644 (file)
@@ -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");
index b0f3a41..2eb1e54 100644 (file)
@@ -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");
index 711ca5b..5a0042a 100644 (file)
@@ -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");
index 13db5ce..5adc0a0 100644 (file)
@@ -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-<macroname>', 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");
index 4abfdb3..1f2ffc5 100644 (file)
@@ -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,
+              );
 
index 8c7fbe4..08a96f9 100644 (file)
@@ -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");
index 35511c4..2aaf7d6 100644 (file)
@@ -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");
index 9bb0247..cd42112 100644 (file)
@@ -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(<string>) - 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");
index 3a48e7e..667de67 100644 (file)
@@ -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");
index 188aa3c..3465843 100644 (file)
@@ -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");
index 88d90a9..c700e81 100644 (file)
@@ -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;
+       return 0;
 }
 
-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,
+               );
index 0d89659..93146c9 100644 (file)
@@ -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");
 
index 1b30a49..66203b1 100644 (file)
@@ -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");
index 32114ca..f3788c3 100644 (file)
@@ -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,
+              );
index 45c80ac..277ffba 100644 (file)
@@ -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");
index 3e2f153..448e8ca 100644 (file)
@@ -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,
+              );
 
index 60ac2c1..8484f65 100644 (file)
@@ -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)} > <number>]?<label>)\n";
 
-LOCAL_USER_DECL;
 
 static int random_exec(struct ast_channel *chan, void *data)
 {
        int res=0;
-       struct localuser *u;
+       struct ast_module_user *u;
 
        char *s;
        char *prob;
@@ -69,7 +66,7 @@ static int random_exec(struct ast_channel *chan, void *data)
                return -1;
        }
        
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
 
        s = ast_strdupa(data);
 
@@ -88,34 +85,24 @@ static int random_exec(struct ast_channel *chan, void *data)
                        ast_verbose( VERBOSE_PREFIX_3 "Random branches to (%s,%s,%d)\n",
                                chan->context,chan->exten, chan->priority+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;
        
        res = ast_unregister_application(app_random);
        
-       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_random, random_exec, random_synopsis, random_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, "Random goto");
index f9c1f48..262bbbb 100644 (file)
@@ -57,8 +57,6 @@ AST_APP_OPTIONS(read_app_options, {
        AST_APP_OPTION('n', OPT_NOANSWER),
 });
 
-static char *tdesc = "Read Variable Application";
-
 static char *app = "Read";
 
 static char *synopsis = "Read a variable";
@@ -82,14 +80,13 @@ static char *descrip =
 "  timeout    -- if greater than 0, that value will override the default timeout.\n\n"
 "Read should disconnect if the function fails or errors out.\n";
 
-LOCAL_USER_DECL;
 
 #define ast_next_data(instr,ptr,delim) if((ptr=strchr(instr,delim))) { *(ptr) = '\0' ; ptr++;}
 
 static int read_exec(struct ast_channel *chan, void *data)
 {
        int res = 0;
-       struct localuser *u;
+       struct ast_module_user *u;
        char tmp[256];
        int maxdigits=255;
        int tries = 1;
@@ -113,7 +110,7 @@ static int read_exec(struct ast_channel *chan, void *data)
                return -1;
        }
 
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
        
        argcopy = ast_strdupa(data);
 
@@ -149,7 +146,7 @@ static int read_exec(struct ast_channel *chan, void *data)
        }
        if (ast_strlen_zero(arglist.variable)) {
                ast_log(LOG_WARNING, "Invalid! Usage: Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])\n\n");
-               LOCAL_USER_REMOVE(u);
+               ast_module_user_remove(u);
                return -1;
        }
        ts=NULL;
@@ -162,7 +159,7 @@ static int read_exec(struct ast_channel *chan, void *data)
                if (ast_test_flag(&flags,OPT_SKIP)) {
                        /* At the user's option, skip if the line is not up */
                        pbx_builtin_setvar_helper(chan, arglist.variable, "\0");
-                       LOCAL_USER_REMOVE(u);
+                       ast_module_user_remove(u);
                        return 0;
                } else if (!ast_test_flag(&flags,OPT_NOANSWER)) {
                        /* Otherwise answer unless we're supposed to read while on-hook */
@@ -214,34 +211,24 @@ static int read_exec(struct ast_channel *chan, void *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, read_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, "Read Variable Application");
index 8c5c4b1..7e43a38 100644 (file)
@@ -42,8 +42,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/app.h"
 #include "asterisk/module.h"
 
-static char *tdesc = "Stores output of file into a variable";
-
 static char *app_readfile = "ReadFile";
 
 static char *readfile_synopsis = "ReadFile(varname=file,length)";
@@ -54,12 +52,11 @@ static char *readfile_descrip =
 "  File - The name of the file to read.\n"
 "  Length - Maximum number of characters to capture.\n";
 
-LOCAL_USER_DECL;
 
 static int readfile_exec(struct ast_channel *chan, void *data)
 {
        int res=0;
-       struct localuser *u;
+       struct ast_module_user *u;
        char *s, *varname=NULL, *file=NULL, *length=NULL, *returnvar=NULL;
        int len=0;
 
@@ -68,7 +65,7 @@ static int readfile_exec(struct ast_channel *chan, void *data)
                return -1;
        }
 
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
 
        s = ast_strdupa(data);
 
@@ -78,7 +75,7 @@ static int readfile_exec(struct ast_channel *chan, void *data)
 
        if (!varname || !file) {
                ast_log(LOG_ERROR, "No file or variable specified!\n");
-               LOCAL_USER_REMOVE(u);
+               ast_module_user_remove(u);
                return -1;
        }
 
@@ -99,35 +96,25 @@ static int readfile_exec(struct ast_channel *chan, void *data)
                pbx_builtin_setvar_helper(chan, varname, returnvar);
                free(returnvar);
        }
-       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_readfile);
        
-       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_readfile, readfile_exec, readfile_synopsis, readfile_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, "Stores output of file into a variable");
index 3a974b6..cc7ad7d 100644 (file)
@@ -49,7 +49,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #define next_one(var) var = var->next
 #define crop_data(str) { *(str) = '\0' ; (str)++; }
 
-static char *tdesc = "Realtime Data Lookup/Rewrite";
 static char *app = "RealTime";
 static char *uapp = "RealTimeUpdate";
 static char *synopsis = "Realtime Data Lookup";
@@ -69,7 +68,6 @@ static char *udesc = "Use the RealTime config handler system to update a value\n
 "updated to <newval>.  REALTIMECOUNT will be set with the number of rows\n"
 "updated or -1 if an error occurs.\n";
 
-LOCAL_USER_DECL;
 
 static int cli_load_realtime(int fd, int argc, char **argv) 
 {
@@ -136,7 +134,7 @@ static struct ast_cli_entry cli_update_realtime_cmd = {
 static int realtime_update_exec(struct ast_channel *chan, void *data) 
 {
        char *family=NULL, *colmatch=NULL, *value=NULL, *newcol=NULL, *newval=NULL;
-       struct localuser *u;
+       struct ast_module_user *u;
        int res = 0, count = 0;
        char countc[13];
 
@@ -147,7 +145,7 @@ static int realtime_update_exec(struct ast_channel *chan, void *data)
                return -1;
        }
        
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
 
        family = ast_strdupa(data);
        if ((colmatch = strchr(family,'|'))) {
@@ -171,7 +169,7 @@ static int realtime_update_exec(struct ast_channel *chan, void *data)
        snprintf(countc, sizeof(countc), "%d", count);
        pbx_builtin_setvar_helper(chan, "REALTIMECOUNT", countc);
 
-       LOCAL_USER_REMOVE(u);
+       ast_module_user_remove(u);
        
        return res;
 }
@@ -180,7 +178,7 @@ static int realtime_update_exec(struct ast_channel *chan, void *data)
 static int realtime_exec(struct ast_channel *chan, void *data)
 {
        int res=0, count=0;
-       struct localuser *u;
+       struct ast_module_user *u;
        struct ast_variable *var, *itt;
        char *family=NULL, *colmatch=NULL, *value=NULL, *prefix=NULL, *vname=NULL;
        char countc[13];
@@ -193,7 +191,7 @@ static int realtime_exec(struct ast_channel *chan, void *data)
                return -1;
        }
        
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
 
        family = ast_strdupa(data);
        if ((colmatch = strchr(family,'|'))) {
@@ -230,11 +228,11 @@ static int realtime_exec(struct ast_channel *chan, void *data)
        snprintf(countc, sizeof(countc), "%d", count);
        pbx_builtin_setvar_helper(chan, "REALTIMECOUNT", countc);
        
-       LOCAL_USER_REMOVE(u);
+       ast_module_user_remove(u);
        return res;
 }
 
-static int unload_module(void *mod)
+static int unload_module(void)
 {
        int res;
 
@@ -243,12 +241,12 @@ static int unload_module(void *mod)
        res |= ast_unregister_application(uapp);
        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;
 
@@ -260,14 +258,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, "Realtime Data Lookup/Rewrite");
index d30a3a7..243977f 100644 (file)
@@ -72,7 +72,6 @@ static char *descrip =
 "If the user should hangup during a recording, all data will be lost and the\n"
 "application will teminate. \n";
 
-LOCAL_USER_DECL;
 
 static int record_exec(struct ast_channel *chan, void *data)
 {
@@ -85,7 +84,7 @@ static int record_exec(struct ast_channel *chan, void *data)
        char tmp[256];
 
        struct ast_filestream *s = '\0';
-       struct localuser *u;
+       struct ast_module_user *u;
        struct ast_frame *f = NULL;
        
        struct ast_dsp *sildet = NULL;          /* silence detector dsp */
@@ -111,7 +110,7 @@ static int record_exec(struct ast_channel *chan, void *data)
                return -1;
        }
 
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
 
        /* Yay for strsep being easy */
        vdata = ast_strdupa(data);
@@ -135,7 +134,7 @@ static int record_exec(struct ast_channel *chan, void *data)
        }
        if (!ext) {
                ast_log(LOG_WARNING, "No extension specified to filename!\n");
-               LOCAL_USER_REMOVE(u);
+               ast_module_user_remove(u);
                return -1;
        }
        if (silstr) {
@@ -194,7 +193,7 @@ static int record_exec(struct ast_channel *chan, void *data)
        if (chan->_state != AST_STATE_UP) {
                if (option_skip) {
                        /* At the user's option, skip if the line is not up */
-                       LOCAL_USER_REMOVE(u);
+                       ast_module_user_remove(u);
                        return 0;
                } else if (!option_noanswer) {
                        /* Otherwise answer unless we're supposed to record while on-hook */
@@ -225,13 +224,13 @@ static int record_exec(struct ast_channel *chan, void *data)
                res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
                if (res < 0) {
                        ast_log(LOG_WARNING, "Unable to set to linear mode, giving up\n");
-                       LOCAL_USER_REMOVE(u);
+                       ast_module_user_remove(u);
                        return -1;
                }
                sildet = ast_dsp_new();
                if (!sildet) {
                        ast_log(LOG_WARNING, "Unable to create silence detector :(\n");
-                       LOCAL_USER_REMOVE(u);
+                       ast_module_user_remove(u);
                        return -1;
                }
                ast_dsp_set_threshold(sildet, 256);
@@ -335,35 +334,25 @@ static int record_exec(struct ast_channel *chan, void *data)
                        ast_dsp_free(sildet);
        }
 
-       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, record_exec, synopsis, descrip);
 }
 
-static const char *description(void)
-{
-       return "Trivial Record Application";
-}
-
-static const char *key(void)
-{
-       return ASTERISK_GPL_KEY;
-}
-
-STD_MOD1;
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial Record Application");
index 8449bd4..e1da544 100644 (file)
@@ -1,4 +1,3 @@
-/* #define OLD_ASTERISK */
 /*
  * Asterisk -- An open source telephony toolkit.
  *
@@ -243,8 +242,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/say.h"
 #include "asterisk/localtime.h"
 
-static  char *tdesc = "Radio Repeater / Remote Base  version 0.48  06/13/2006";
-
 static char *app = "Rpt";
 
 static char *synopsis = "Radio Repeater/Remote Base Control System";
@@ -284,6 +281,9 @@ static char *descrip =
 "            available to the phone user.\n"
 "\n";
 
+static unsigned int vmajor = 0;
+static unsigned int vminor = 47;
+
 static int debug = 0;  /* FIXME Set this >0 for extra debug output */
 static int nrpts = 0;
 
@@ -295,7 +295,6 @@ static char *remote_rig_rbi="rbi";
 STANDARD_LOCAL_USER;
 #endif
 
-LOCAL_USER_DECL;
 
 #define        MSWAIT 200
 #define        HANGTIME 5000
@@ -1960,7 +1959,6 @@ struct  rpt_tele *tlist;
 struct rpt *myrpt;
 struct rpt_link *l,*m,linkbase;
 struct ast_channel *mychannel;
-int vmajor, vminor;
 char *p,*ct,*ct_copy,*ident, *nodename;
 time_t t;
 struct tm localtm;
@@ -2454,11 +2452,6 @@ struct tm localtm;
                imdone = 1;
                break;
            case STATS_VERSION:
-               p = strstr(tdesc, "version");   
-               if(!p)
-                       break;  
-               if(sscanf(p, "version %d.%d", &vmajor, &vminor) != 2)
-                       break;
                wait_interval(myrpt, DLY_TELEM, mychannel); /* Wait a little bit */
                /* Say "version" */
                if (sayfile(mychannel,"rpt/version") == -1)
@@ -7275,7 +7268,7 @@ char *this,*val;
 static int rpt_exec(struct ast_channel *chan, void *data)
 {
        int res=-1,i,rem_totx,n,phone_mode = 0;
-       struct localuser *u;
+       struct ast_module_user *u;
        char tmp[256], keyed = 0;
        char *options,*stringp,*tele,c;
        struct  rpt *myrpt;
@@ -7644,7 +7637,7 @@ static int rpt_exec(struct ast_channel *chan, void *data)
                ast_log(LOG_WARNING, "Cant get io permission on IO port %x hex\n",myrpt->p.iobase);
                return -1;
        }
-       LOCAL_USER_ADD(u);
+       u = ast_module_user_add(chan);
        rpt_mutex_unlock(&myrpt->lock);
        /* find our index, and load the vars initially */
        for(i = 0; i < nrpts; i++)
@@ -8009,19 +8002,15 @@ static int rpt_exec(struct ast_channel *chan, void *data)
        myrpt->remoteon = 0;
        rpt_mutex_unlock(&myrpt->lock);
        closerem(myrpt);
-       LOCAL_USER_REMOVE(u);
+       ast_module_user_remove(u);
        return res;
 }
 
-#ifdef OLD_ASTERISK
-int unload_module()
-#else
-static int unload_module(void* mod)
-#endif
+static int unload_module(void)
 {
        int i;
 
-       STANDARD_HANGUP_LOCALUSERS;
+       ast_module_user_hangup_all();
        for(i = 0; i < nrpts; i++) {
                if (!strcmp(rpt_vars[i].name,rpt_vars[i].p.nodes)) continue;
                 ast_mutex_destroy(&rpt_vars[i].lock);
@@ -8039,11 +8028,7 @@ static int unload_module(void* mod)
        return i;
 }
 
-#ifdef OLD_ASTERISK
-int load_module()
-#else
-static int load_module(void *mod)
-#endif
+static int load_module(void)
 {
        ast_pthread_create(&rpt_master_thread,NULL,rpt_master,NULL);
 
@@ -8058,45 +8043,16 @@ static int load_module(void *mod)
        return ast_register_application(app, rpt_exec, synopsis, descrip);
 }
 
-#ifdef OLD_ASTERISK
-char *description()
-#else
-static const char *description(void)
-#endif
-{
-       return tdesc;
-}
-
-#ifdef OLD_ASTERISK
-int usecount(void)
-{
-       int res;
-       STANDARD_USECOUNT(res);
-       return res;
-}
-#endif
-
-#ifdef OLD_ASTERISK
-char *key()
-#else
-static const char *key(void)
-#endif
+static int reload(void)
 {
-       return ASTERISK_GPL_KEY;
-}
-
-#ifdef OLD_ASTERISK
-int reload()
-#else
-static int reload(void *mod)
-#endif
-{
-int    n;
+       int n;
 
        for(n = 0; n < nrpts; n++) rpt_vars[n].reload = 1;
        return(0);
 }
 
-#ifndef        OLD_ASTERISK
-STD_MOD(MOD_1, reload, NULL, NULL);
-#endif
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Radio Repeater / Remote Base",
+               .load = load_module,
+               .unload = unload_module,
+               .reload = reload,
+              );