[asterisk-commits] branch oej/multiparking r27340 - in /team/oej/multiparking: ./ apps/ build_to...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue May 16 06:43:04 MST 2006


Author: oej
Date: Tue May 16 08:43:03 2006
New Revision: 27340

URL: http://svn.digium.com/view/asterisk?rev=27340&view=rev
Log:
Reset automerge

Added:
    team/oej/multiparking/build_tools/make_buildopts_h
      - copied unchanged from r27306, trunk/build_tools/make_buildopts_h
    team/oej/multiparking/funcs/func_realtime.c
      - copied unchanged from r27306, trunk/funcs/func_realtime.c
    team/oej/multiparking/sounds/vm-tempgreetactive.gsm
      - copied unchanged from r27306, trunk/sounds/vm-tempgreetactive.gsm
Modified:
    team/oej/multiparking/   (props changed)
    team/oej/multiparking/.cleancount
    team/oej/multiparking/Makefile
    team/oej/multiparking/UPGRADE.txt
    team/oej/multiparking/app.c
    team/oej/multiparking/apps/Makefile
    team/oej/multiparking/apps/app_amd.c
    team/oej/multiparking/apps/app_authenticate.c
    team/oej/multiparking/apps/app_chanspy.c
    team/oej/multiparking/apps/app_db.c
    team/oej/multiparking/apps/app_dial.c
    team/oej/multiparking/apps/app_dictate.c
    team/oej/multiparking/apps/app_directory.c
    team/oej/multiparking/apps/app_disa.c
    team/oej/multiparking/apps/app_exec.c
    team/oej/multiparking/apps/app_externalivr.c
    team/oej/multiparking/apps/app_festival.c
    team/oej/multiparking/apps/app_hasnewvoicemail.c
    team/oej/multiparking/apps/app_image.c
    team/oej/multiparking/apps/app_macro.c
    team/oej/multiparking/apps/app_meetme.c
    team/oej/multiparking/apps/app_mixmonitor.c
    team/oej/multiparking/apps/app_osplookup.c
    team/oej/multiparking/apps/app_page.c
    team/oej/multiparking/apps/app_playback.c
    team/oej/multiparking/apps/app_privacy.c
    team/oej/multiparking/apps/app_queue.c
    team/oej/multiparking/apps/app_random.c
    team/oej/multiparking/apps/app_read.c
    team/oej/multiparking/apps/app_readfile.c
    team/oej/multiparking/apps/app_realtime.c
    team/oej/multiparking/apps/app_record.c
    team/oej/multiparking/apps/app_sayunixtime.c
    team/oej/multiparking/apps/app_senddtmf.c
    team/oej/multiparking/apps/app_sendtext.c
    team/oej/multiparking/apps/app_setcallerid.c
    team/oej/multiparking/apps/app_skel.c
    team/oej/multiparking/apps/app_speech_utils.c
    team/oej/multiparking/apps/app_stack.c
    team/oej/multiparking/apps/app_talkdetect.c
    team/oej/multiparking/apps/app_transfer.c
    team/oej/multiparking/apps/app_url.c
    team/oej/multiparking/apps/app_userevent.c
    team/oej/multiparking/apps/app_verbose.c
    team/oej/multiparking/apps/app_voicemail.c
    team/oej/multiparking/apps/app_while.c
    team/oej/multiparking/apps/app_zapras.c
    team/oej/multiparking/apps/app_zapscan.c
    team/oej/multiparking/asterisk.c
    team/oej/multiparking/build_tools/Makefile
    team/oej/multiparking/build_tools/cflags.xml
    team/oej/multiparking/build_tools/make_version
    team/oej/multiparking/build_tools/menuselect.c
    team/oej/multiparking/build_tools/menuselect.h
    team/oej/multiparking/build_tools/menuselect_curses.c
    team/oej/multiparking/build_tools/prep_moduledeps
    team/oej/multiparking/callerid.c
    team/oej/multiparking/channel.c
    team/oej/multiparking/channels/Makefile
    team/oej/multiparking/channels/chan_agent.c
    team/oej/multiparking/channels/chan_alsa.c
    team/oej/multiparking/channels/chan_features.c
    team/oej/multiparking/channels/chan_h323.c
    team/oej/multiparking/channels/chan_iax2.c
    team/oej/multiparking/channels/chan_local.c
    team/oej/multiparking/channels/chan_mgcp.c
    team/oej/multiparking/channels/chan_misdn.c
    team/oej/multiparking/channels/chan_nbs.c
    team/oej/multiparking/channels/chan_oss.c
    team/oej/multiparking/channels/chan_phone.c
    team/oej/multiparking/channels/chan_sip.c
    team/oej/multiparking/channels/chan_skinny.c
    team/oej/multiparking/channels/chan_vpb.c
    team/oej/multiparking/channels/chan_zap.c
    team/oej/multiparking/channels/iax2.h
    team/oej/multiparking/channels/misdn/chan_misdn_config.h
    team/oej/multiparking/channels/misdn/isdn_lib.c
    team/oej/multiparking/channels/misdn/isdn_lib.h
    team/oej/multiparking/channels/misdn_config.c
    team/oej/multiparking/cli.c
    team/oej/multiparking/codecs/codec_a_mu.c
    team/oej/multiparking/codecs/codec_alaw.c
    team/oej/multiparking/codecs/codec_ulaw.c
    team/oej/multiparking/configs/func_odbc.conf.sample
    team/oej/multiparking/configs/iax.conf.sample
    team/oej/multiparking/configs/manager.conf.sample
    team/oej/multiparking/configs/misdn.conf.sample
    team/oej/multiparking/configs/queues.conf.sample
    team/oej/multiparking/configs/say.conf.sample
    team/oej/multiparking/configs/sip.conf.sample
    team/oej/multiparking/configs/voicemail.conf.sample
    team/oej/multiparking/configure.ac
    team/oej/multiparking/dnsmgr.c
    team/oej/multiparking/doc/channelvariables.txt
    team/oej/multiparking/doc/cliprompt.txt
    team/oej/multiparking/doc/iax.txt
    team/oej/multiparking/doc/manager.txt
    team/oej/multiparking/doc/queuelog.txt
    team/oej/multiparking/dsp.c
    team/oej/multiparking/enum.c
    team/oej/multiparking/file.c
    team/oej/multiparking/frame.c
    team/oej/multiparking/funcs/func_cdr.c
    team/oej/multiparking/funcs/func_channel.c
    team/oej/multiparking/funcs/func_cut.c
    team/oej/multiparking/funcs/func_logic.c
    team/oej/multiparking/funcs/func_odbc.c
    team/oej/multiparking/image.c
    team/oej/multiparking/include/   (props changed)
    team/oej/multiparking/include/asterisk/   (props changed)
    team/oej/multiparking/include/asterisk/ael_structs.h
    team/oej/multiparking/include/asterisk/app.h
    team/oej/multiparking/include/asterisk/astosp.h
    team/oej/multiparking/include/asterisk/cdr.h
    team/oej/multiparking/include/asterisk/channel.h
    team/oej/multiparking/include/asterisk/devicestate.h
    team/oej/multiparking/include/asterisk/frame.h
    team/oej/multiparking/include/asterisk/linkedlists.h
    team/oej/multiparking/include/asterisk/lock.h
    team/oej/multiparking/include/asterisk/manager.h
    team/oej/multiparking/include/asterisk/module.h
    team/oej/multiparking/include/asterisk/options.h
    team/oej/multiparking/include/asterisk/pbx.h
    team/oej/multiparking/include/asterisk/rtp.h
    team/oej/multiparking/include/asterisk/translate.h
    team/oej/multiparking/include/asterisk/utils.h
    team/oej/multiparking/indications.c
    team/oej/multiparking/loader.c
    team/oej/multiparking/logger.c
    team/oej/multiparking/makeopts.in
    team/oej/multiparking/manager.c
    team/oej/multiparking/mxml/   (props changed)
    team/oej/multiparking/netsock.c
    team/oej/multiparking/pbx.c
    team/oej/multiparking/pbx/ael/   (props changed)
    team/oej/multiparking/pbx/ael/ael.tab.c
    team/oej/multiparking/pbx/ael/ael.y
    team/oej/multiparking/pbx/pbx_config.c
    team/oej/multiparking/pbx/pbx_dundi.c
    team/oej/multiparking/pbx/pbx_realtime.c
    team/oej/multiparking/pbx/pbx_spool.c
    team/oej/multiparking/redhat/asterisk.spec
    team/oej/multiparking/res/res_agi.c
    team/oej/multiparking/res/res_clioriginate.c
    team/oej/multiparking/res/res_config_odbc.c
    team/oej/multiparking/res/res_config_pgsql.c
    team/oej/multiparking/res/res_convert.c
    team/oej/multiparking/res/res_features.c
    team/oej/multiparking/res/res_monitor.c
    team/oej/multiparking/res/res_smdi.c
    team/oej/multiparking/rtp.c
    team/oej/multiparking/say.c
    team/oej/multiparking/sched.c
    team/oej/multiparking/sounds.txt
    team/oej/multiparking/static-http/ajamdemo.html
    team/oej/multiparking/strcompat.c
    team/oej/multiparking/utils.c
    team/oej/multiparking/utils/Makefile

Propchange: team/oej/multiparking/
------------------------------------------------------------------------------
    automerge = http://edvina.net/training/

Propchange: team/oej/multiparking/
------------------------------------------------------------------------------
Binary property 'branch-1.2-blocked' - no diff available.

Propchange: team/oej/multiparking/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.

Propchange: team/oej/multiparking/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue May 16 08:43:03 2006
@@ -19,9 +19,4 @@
 config.status
 config.log
 makeopts.xml
-install-sh
-configure
-mkinstalldirs
 autom4te.cache
-missing
-aclocal.m4

Propchange: team/oej/multiparking/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue May 16 08:43:03 2006
@@ -1,1 +1,1 @@
-/trunk:1-24229
+/trunk:1-27339

Modified: team/oej/multiparking/.cleancount
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking/.cleancount?rev=27340&r1=27339&r2=27340&view=diff
==============================================================================
--- team/oej/multiparking/.cleancount (original)
+++ team/oej/multiparking/.cleancount Tue May 16 08:43:03 2006
@@ -1,1 +1,1 @@
-15
+16

Modified: team/oej/multiparking/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking/Makefile?rev=27340&r1=27339&r2=27340&view=diff
==============================================================================
--- team/oej/multiparking/Makefile (original)
+++ team/oej/multiparking/Makefile Tue May 16 08:43:03 2006
@@ -24,18 +24,6 @@
 #CROSS_PROC=arm
 #SUB_PROC=xscale # or maverick
 
-# Pentium Pro Optimize
-#PROC=i686
-
-# Pentium & VIA processors optimize
-#PROC=i586
-
-#PROC=k6
-#PROC=ppc
-
-CC=$(CROSS_COMPILE)gcc
-HOST_CC=gcc
-
 ifeq ($(CROSS_COMPILE),)
   OSARCH=$(shell uname -s)
   PROC?=$(shell uname -m)
@@ -69,37 +57,7 @@
 OVERWRITE=y
 
 # Include debug and macro symbols in the executables (-g) and profiling info (-pg)
-DEBUG=-g3 #-pg
-
-# Set NOCRYPTO to yes if you do not want to have crypto support or dependencies
-#NOCRYPTO=yes
-
-# If you are running a radio application, define RADIO_RELAX so that the DTMF
-# will be received more reliably
-#OPTIONS += -DRADIO_RELAX
-
-# If you don't have a lot of memory (e.g. embedded Asterisk), define LOW_MEMORY
-# to reduce the size of certain static buffers
-#ifneq ($(CROSS_COMPILE),)
-#OPTIONS += -DLOW_MEMORY
-#endif
-
-# Asterisk SMDI integration
-WITH_SMDI = 1
-
-# Optional debugging parameters
-DEBUG_THREADS = #-DDUMP_SCHEDULER #-DDEBUG_SCHEDULER #-DDEBUG_THREADS #-DDO_CRASH #-DDETECT_DEADLOCKS
-
-# If you want to debug channel locking, try this (depends on code using
-# ast_channel_lock and companions to work)
-DEBUG_THREADS += #-DDEBUG_CHANNEL_LOCKS
-
-# Uncomment next one to enable ast_frame tracing (for debugging)
-TRACE_FRAMES = #-DTRACE_FRAMES
-
-# Where to install asterisk after compiling
-# Default -> leave empty
-INSTALL_PREFIX?=
+DEBUG=-g3
 
 # Staging directory
 # Files are copied here temporarily during the install process
@@ -110,16 +68,16 @@
 #DESTDIR?=/tmp/asterisk
 
 # Original busydetect routine
-BUSYDETECT = #-DBUSYDETECT
+#BUSYDETECT = -DBUSYDETECT
 
 # Improved busydetect routine, comment the previous one if you use this one
-BUSYDETECT+= #-DBUSYDETECT_MARTIN 
+#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
+#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
+#BUSYDETECT+= -DBUSYDETECT_COMPARE_TONE_AND_SILENCE
 
 # Define standard directories for various platforms
 # These apply if they are not redefined in asterisk.conf 
@@ -195,14 +153,13 @@
   include makeopts
 endif
 
-ASTCFLAGS+=$(MENUSELECT_CFLAGS)
 TOPDIR_CFLAGS=-include include/autoconfig.h -Iinclude
 MOD_SUBDIR_CFLAGS=-include ../include/autoconfig.h -I../include -I..
 OTHER_SUBDIR_CFLAGS=-include ../include/autoconfig.h -I../include -I..
 
 #   *CLI> show memory allocations [filename]
 #   *CLI> show memory summary [filename]
-ifneq ($(findstring -DMALLOC_DEBUG,$(ASTCFLAGS)),)
+ifneq ($(findstring MALLOC_DEBUG,$(MENUSELECT_CFLAGS)),)
   TOPDIR_CFLAGS+=-include include/asterisk/astmm.h
   MOD_SUBDIR_CFLAGS+=-include ../include/asterisk/astmm.h
 endif
@@ -252,7 +209,7 @@
   ID=/usr/xpg4/bin/id
 endif
 
-ASTCFLAGS+=-pipe  -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) #-DMAKE_VALGRIND_HAPPY
+ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
 ASTCFLAGS+=$(OPTIMIZE)
 
 ifeq ($(AST_DEVMODE),yes)
@@ -260,7 +217,7 @@
 endif
 
 ifeq ($(shell gcc -v 2>&1 | grep 'gcc version' | cut -f3 -d' ' | cut -f1 -d.),4)
-ASTCFLAGS+= -Wno-pointer-sign
+ASTCFLAGS+=-Wno-pointer-sign
 endif
 ASTOBJ=-o asterisk
 
@@ -287,8 +244,7 @@
 endif # FreeBSD
 
 ifeq ($(OSARCH),NetBSD)
-  ASTCFLAGS+=-pthread
-  INCLUDE+=-I$(CROSS_COMPILE_TARGET)/usr/pkg/include
+  AST_CFLAGS+=-pthread -I$(CROSS_COMPILE_TARGET)/usr/pkg/include
   MPG123TARG=netbsd
 endif
 
@@ -297,8 +253,7 @@
 endif
 
 ifeq ($(OSARCH),SunOS)
-  ASTCFLAGS+=-Wcast-align -DSOLARIS
-  INCLUDE+=-Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include
+  ASTCFLAGS+=-Wcast-align -DSOLARIS -Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include
 endif
 
 LIBEDIT=editline/libedit.a
@@ -323,13 +278,9 @@
   endif
 endif
 
-ASTCFLAGS+= $(DEBUG_THREADS)
-ASTCFLAGS+= $(TRACE_FRAMES)
-ASTCFLAGS+= $(MALLOC_DEBUG)
-ASTCFLAGS+= $(BUSYDETECT)
-ASTCFLAGS+= $(OPTIONS)
+ASTCFLAGS+=$(MALLOC_DEBUG)$(BUSYDETECT)$(OPTIONS)
 ifeq ($(findstring dont-optimize,$(MAKECMDGOALS)),)
-ASTCFLAGS+= -fomit-frame-pointer 
+ASTCFLAGS+=-fomit-frame-pointer
 endif
 
 MOD_SUBDIRS=res channels pbx apps codecs formats cdr funcs
@@ -348,11 +299,11 @@
 # 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
+OBJS+=stdtime/localtime.o
 
 # At the moment say.o is an optional component which can be overridden
 # by a module.
-OBJS+= say.o
+OBJS+=say.o
 
 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
   OBJS+= poll.o
@@ -365,9 +316,9 @@
 endif
 
 ifeq ($(OSARCH),Linux)
-  LIBS+=-ldl -lpthread -lncurses -lm -lresolv  #-lnjamd
+  LIBS+=-ldl -lpthread $(EDITLINE_LIBS) -lm -lresolv  #-lnjamd
 else
-  LIBS+=-lncurses -lm
+  LIBS+=$(EDITLINE_LIBS) -lm
 endif
 
 ifeq ($(OSARCH),Darwin)
@@ -395,22 +346,23 @@
 endif
 
 ifeq ($(OSARCH),NetBSD)
-  LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib -lncurses
+  LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib $(EDITLINE_LIBS)
 endif
 
 ifeq ($(OSARCH),OpenBSD)
-  LIBS+=-lcrypto -lpthread -lm -lncurses
+  LIBS+=-lcrypto -lpthread -lm $(EDITLINE_LIBS)
 endif
 
 ifeq ($(OSARCH),SunOS)
   LIBS+=-lpthread -ldl -lnsl -lsocket -lresolv -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
   OBJS+=strcompat.o
+  MENUSELECT_OBJS+=strcompat.o
   ASTLINK=
   SOLINK=-shared -fpic -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
 endif
 
 ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
-  CFLAGS+=$(ASTCFLAGS) $(TOPDIR_CFLAGS)
+  CFLAGS+=$(TOPDIR_CFLAGS)$(ASTCFLAGS)
 endif
 
 # This is used when generating the doxygen documentation
@@ -431,12 +383,9 @@
 	@echo " +               make install                +"  
 	@echo " +-------------------------------------------+"  
 
-all: include/autoconfig.h menuselect.makeopts cleantest depend asterisk subdirs
-
-configure:
-	- at ./bootstrap.sh
-
-include/autoconfig.h: configure
+all: cleantest config.status menuselect.makeopts depend asterisk subdirs
+
+config.status: configure
 	@CFLAGS="" ./configure
 	@echo "****"
 	@echo "**** The configure script was just executed, so 'make' needs to be"
@@ -481,11 +430,11 @@
   include .tags-depend
 endif
 
-ast_expr2.c:
-	bison -d --name-prefix=ast_yy ast_expr2.y -o ast_expr2.c
+ast_expr2.c ast_expr2.h:
+	bison -o $@ -d --name-prefix=ast_yy ast_expr2.y
 
 ast_expr2f.c:
-	flex --full ast_expr2.fl
+	flex -o $@ --full ast_expr2.fl
 
 testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
 	gcc -g -c -DSTANDALONE ast_expr2f.c
@@ -514,23 +463,30 @@
 	docbook2txt asterisk.sgml
 
 defaults.h: makeopts
-	build_tools/make_defaults_h > $@.tmp
-	if cmp -s $@.tmp $@ ; then echo ; else \
+	@build_tools/make_defaults_h > $@.tmp
+	@if cmp -s $@.tmp $@ ; then echo ; else \
 		mv $@.tmp $@ ; \
 	fi
-	rm -f $@.tmp
+	@rm -f $@.tmp
 
 include/asterisk/version.h:
-	build_tools/make_version_h > $@.tmp
-	if cmp -s $@.tmp $@ ; then echo; else \
+	@build_tools/make_version_h > $@.tmp
+	@if cmp -s $@.tmp $@ ; then echo; else \
 		mv $@.tmp $@ ; \
 	fi
-	rm -f $@.tmp
+	@rm -f $@.tmp
+
+include/asterisk/buildopts.h: menuselect.makeopts
+	@build_tools/make_buildopts_h > $@.tmp
+	@if cmp -s $@.tmp $@ ; then echo; else \
+		mv $@.tmp $@ ; \
+	fi
+	@rm -f $@.tmp
 
 stdtime/libtime.a:
-	CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C stdtime libtime.a
-
-asterisk: editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
+	CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C stdtime libtime.a
+
+asterisk: include/asterisk/buildopts.h editline/libedit.a db1-ast/libdb1.a stdtime/libtime.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 ; \
@@ -543,16 +499,16 @@
 	$(CC) $(AUDIO_LIBS) -o muted muted.o
 
 subdirs: 
-	for x in $(MOD_SUBDIRS); do CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C $$x || exit 1 ; done
-	CFLAGS="$(ASTCFLAGS) $(OTHER_SUBDIR_CFLAGS)" $(MAKE) -C utils
-	CFLAGS="$(ASTCFLAGS) $(OTHER_SUBDIR_CFLAGS)" $(MAKE) -C agi
+	@for x in $(MOD_SUBDIRS); do CFLAGS="$(MOD_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C $$x || exit 1 ; done
+	@CFLAGS="$(OTHER_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C utils
+	@CFLAGS="$(OTHER_SUBDIR_CFLAGS)$(ASTCFLAGS)" $(MAKE) -C agi
 
 clean-depend:
-	for x in $(SUBDIRS); do $(MAKE) -C $$x clean-depend || exit 1 ; done
+	@for x in $(SUBDIRS); do $(MAKE) -C $$x clean-depend || exit 1 ; done
 	rm -f .depend .tags-depend
 
 clean: clean-depend
-	for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
+	@for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
 	rm -f *.o *.so asterisk
 	rm -f defaults.h
 	rm -f include/asterisk/build.h
@@ -569,6 +525,7 @@
 	rm -f menuselect.makeopts makeopts makeopts.xml
 	rm -f config.log config.status
 	rm -f include/autoconfig.h
+	rm -f include/asterisk/buildopts.h
 	$(MAKE) -C mxml clean
 	$(MAKE) -C build_tools dist-clean
 
@@ -677,7 +634,7 @@
 	if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi
 	ln -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
 	$(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
-	$(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/	
+	$(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
 	if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
 		cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
 		chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
@@ -708,7 +665,7 @@
 	if [ -f mpg123-0.59r/mpg123 ]; then $(MAKE) -C mpg123-0.59r install; fi
 
 install-subdirs:
-	for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
+	@for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
 
 NEWMODS=$(notdir $(wildcard */*.so))
 OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
@@ -864,7 +821,7 @@
 
 rpm: __rpm
 
-__rpm: include/asterisk/version.h spec
+__rpm: include/asterisk/version.h include/asterisk/buildopts.h spec
 	rm -rf /tmp/asterisk ; \
 	mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
 	$(MAKE) DESTDIR=/tmp/asterisk install ; \
@@ -884,21 +841,39 @@
 	$(MAKE) -C mpg123-0.59r $(MPG123TARG)
 
 config:
-	if [ -d /etc/rc.d/init.d ]; then \
-		$(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \
-		/sbin/chkconfig --add asterisk; \
-	elif [ -d /etc/init.d ]; then \
-		$(INSTALL) -m 755 init.asterisk /etc/init.d/asterisk; \
-	fi 
+	@if [ "${OSARCH}" = "Linux" ]; 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; \
+		elif [ -f /etc/debian_version ]; then \
+			$(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk; \
+			/usr/sbin/update-rc.d asterisk start 10 2 3 4 5 . stop 91 2 3 4 5 .; \
+		elif [ -f /etc/gentoo-release ]; then \
+			$(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk /etc/init.d/asterisk; \
+			/sbin/rc-update add asterisk default; \
+		elif [ -f /etc/mandrake-release ]; then \
+			$(INSTALL) -m 755 contrib/init.d/rc.mandrake.asterisk /etc/rc.d/init.d/asterisk; \
+			/sbin/chkconfig --add asterisk; \
+		elif [ -f /etc/SuSE-release -o -f /etc/novell-release ]; then \
+			$(INSTALL) -m 755 contrib/init.d/rc.suse.asterisk /etc/init.d/asterisk; \
+			/sbin/chkconfig --add asterisk; \
+		elif [ -f /etc/slackware-version ]; then \
+			echo "Slackware is not currently supported, although an init script does exist for it." \
+		else \
+			echo "We could not install init scripts for your distribution."; \
+		fi \
+	else \
+		echo "We could not install init scripts for your operating system."; \
+	fi
 
 dont-optimize: _all
 
 valgrind: dont-optimize
 
-depend: include/asterisk/version.h .depend defaults.h 
-	for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
-
-.depend: include/asterisk/version.h defaults.h
+depend: include/asterisk/version.h include/asterisk/buildopts.h .depend defaults.h 
+	@for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
+
+.depend: include/asterisk/version.h include/asterisk/buildopts.h defaults.h
 	build_tools/mkdep $(CFLAGS) $(wildcard *.c)
 
 .tags-depend:
@@ -941,7 +916,7 @@
 # last clean count we had
 
 cleantest:
-	if cmp -s .cleancount .lastclean ; then echo ; else \
+	@if cmp -s .cleancount .lastclean ; then echo ; else \
 		$(MAKE) clean; cp -f .cleancount .lastclean;\
 	fi
 
@@ -981,7 +956,7 @@
 menuselect: build_tools/menuselect makeopts.xml
 	- at build_tools/menuselect ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!"
 
-build_tools/menuselect: build_tools/menuselect.c build_tools/menuselect_curses.c build_tools/menuselect.h include/autoconfig.h strcompat.o mxml/libmxml.a
+build_tools/menuselect: build_tools/menuselect.c build_tools/menuselect_curses.c build_tools/menuselect.h config.status mxml/libmxml.a $(MENUSELECT_OBJS)
 	$(MAKE) -C build_tools menuselect
 
 mxml/libmxml.a:

Modified: team/oej/multiparking/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking/UPGRADE.txt?rev=27340&r1=27339&r2=27340&view=diff
==============================================================================
--- team/oej/multiparking/UPGRADE.txt (original)
+++ team/oej/multiparking/UPGRADE.txt Tue May 16 08:43:03 2006
@@ -68,6 +68,45 @@
 
 * OSPAuth is added to authenticate OSP tokens in in_bound call setup messages.
 
+* The CONNECT event in the queue_log from app_queue now has a second field 
+  in addition to the holdtime field. It contains the unique ID of the 
+  queue member channel that is taking the call. This is useful when trying 
+  to link recording filenames back to a particular call from the queue.  
+
+* The old/current behavior of app_queue has a serial type behavior
+  in that the queue will make all waiting callers wait in the queue
+  even if there is more than one available member ready to take
+  calls until the head caller is connected with the member they
+  were trying to get to. The next waiting caller in line then
+  becomes the head caller, and they are then connected with the
+  next available member and all available members and waiting callers
+  waits while this happens. This cycle continues until there are
+  no more available members or waiting callers, whichever comes first.
+  The new behavior, enabled by setting autofill=yes in queues.conf
+  either at the [general] level to default for all queues or 
+  to set on a per-queue level, makes sure that when the waiting 
+  callers are connecting with available members in a parallel fashion 
+  until there are no more available members or no more waiting callers,
+  whichever comes first. This is probably more along the lines of how
+  one would expect a queue should work and in most cases, you will want 
+  to enable this new behavior. If you do not specify or comment out this 
+  option, it will default to "no" to keep backward compatability with the old 
+  behavior.
+
+* The app_queue application now has the ability to use MixMonitor to 
+  record conversations queue members are having with queue callers. Please
+  see configs/queues.conf.sample for more information on this option.
+
+* ast_play_and_record would attempt to cancel the recording if a DTMF
+  '0' was received.  This behavior was not documented in most of the
+  applications that used ast_play_and_record and the return codes from
+  ast_play_and_record weren't checked for properly.
+  ast_play_and_record has been changed so that '0' no longer cancels a
+  recording.  If you want to allow DTMF digits to cancel an
+  in-progress recording use ast_play_and_record_full which allows you
+  to specify which DTMF digits can be used to accept a recording and
+  which digits can be used to cancel a recording.
+
 Manager:
 
 * After executing the 'status' manager action, the "Status" manager events
@@ -76,6 +115,11 @@
   "CallerIDNum".  For compatibility purposes, the CallerID parameter will remain
   until after the release of 1.4, when it will be removed.  Please use the time
   during the 1.4 release to make this transition.
+
+* The AgentConnect event now has an additional field called "BridgedChannel" 
+  which contains the unique ID of the queue member channel that is taking the 
+  call. This is useful when trying to link recording filenames back to 
+  a particular call from the queue.
 
 Variables:
 
@@ -104,6 +148,11 @@
 
 * The ENUMLOOKUP() function with the 'c' option (for counting the number of records),
   but the lookup fails to match any records, the returned value will now be "0" instead of blank.
+
+* The REALTIME() function is now available in version 1.4 and app_realtime has
+  been deprecated in favor of the new function. app_realtime will be removed
+  completely with the version 1.6 release so please take the time between
+  releases to make any necessary changes
 
 The IAX2 channel:
 

Modified: team/oej/multiparking/app.c
URL: http://svn.digium.com/view/asterisk/team/oej/multiparking/app.c?rev=27340&r1=27339&r2=27340&view=diff
==============================================================================
--- team/oej/multiparking/app.c (original)
+++ team/oej/multiparking/app.c Tue May 16 08:43:03 2006
@@ -144,86 +144,6 @@
 	return res;
 }
 
-int ast_app_getvoice(struct ast_channel *c, char *dest, char *dstfmt, char *prompt, int silence, int maxsec)
-{
-	int res;
-	struct ast_filestream *writer;
-	int rfmt;
-	int totalms=0, total;
-	
-	struct ast_frame *f;
-	struct ast_dsp *sildet;
-	/* Play prompt if requested */
-	if (prompt) {
-		res = ast_stream_and_wait(c, prompt, c->language, "");
-		if (res < 0)
-			return res;
-	}
-	rfmt = c->readformat;
-	res = ast_set_read_format(c, AST_FORMAT_SLINEAR);
-	if (res < 0) {
-		ast_log(LOG_WARNING, "Unable to set to linear mode, giving up\n");
-		return -1;
-	}
-	sildet = ast_dsp_new();
-	if (!sildet) {
-		ast_log(LOG_WARNING, "Unable to create silence detector :(\n");
-		return -1;
-	}
-	writer = ast_writefile(dest, dstfmt, "Voice file", 0, 0, 0666);
-	if (!writer) {
-		ast_log(LOG_WARNING, "Unable to open file '%s' in format '%s' for writing\n", dest, dstfmt);
-		ast_dsp_free(sildet);
-		return -1;
-	}
-	for(;;) {
-		if ((res = ast_waitfor(c, 2000)) < 0) {
-			ast_log(LOG_NOTICE, "Waitfor failed while recording file '%s' format '%s'\n", dest, dstfmt);
-			break;
-		}
-		if (res) {
-			f = ast_read(c);
-			if (!f) {
-				ast_log(LOG_NOTICE, "Hungup while recording file '%s' format '%s'\n", dest, dstfmt);
-				break;
-			}
-			if ((f->frametype == AST_FRAME_DTMF) && (f->subclass == '#')) {
-				/* Ended happily with DTMF */
-				ast_frfree(f);
-				break;
-			} else if (f->frametype == AST_FRAME_VOICE) {
-				ast_dsp_silence(sildet, f, &total); 
-				if (total > silence) {
-					/* Ended happily with silence */
-					ast_frfree(f);
-					break;
-				}
-				totalms += f->samples / 8;
-				if (totalms > maxsec * 1000) {
-					/* Ended happily with too much stuff */
-					ast_log(LOG_NOTICE, "Constraining voice on '%s' to %d seconds\n", c->name, maxsec);
-					ast_frfree(f);
-					break;
-				}
-				res = ast_writestream(writer, f);
-				if (res < 0) {
-					ast_log(LOG_WARNING, "Failed to write to stream at %s!\n", dest);
-					ast_frfree(f);
-					break;
-				}
-					
-			}
-			ast_frfree(f);
-		}
-	}
-	res = ast_set_read_format(c, rfmt);
-	if (res)
-		ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", c->name);
-	ast_dsp_free(sildet);
-	ast_closestream(writer);
-	return 0;
-}
-
 static int (*ast_has_voicemail_func)(const char *mailbox, const char *folder) = NULL;
 static int (*ast_messagecount_func)(const char *mailbox, int *newmsgs, int *oldmsgs) = NULL;
 
@@ -535,22 +455,37 @@
 static int global_silence_threshold = 128;
 static int global_maxsilence = 0;
 
-int ast_play_and_record(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime, const char *fmt, int *duration, int silencethreshold, int maxsilence, const char *path)
-{
-	int d;
+/*! Optionally play a sound file or a beep, then record audio and video from the channel.
+ * @param chan Channel to playback to/record from.
+ * @param playfile Filename of sound to play before recording begins.
+ * @param recordfile Filename to record to.
+ * @param maxtime Maximum length of recording (in milliseconds).
+ * @param fmt Format(s) to record message in. Multiple formats may be specified by separating them with a '|'.
+ * @param duration Where to store actual length of the recorded message (in milliseconds).
+ * @param beep Whether to play a beep before starting to record.
+ * @param silencethreshold 
+ * @param maxsilence Length of silence that will end a recording (in milliseconds).
+ * @param path Optional filesystem path to unlock.
+ * @param prepend If true, prepend the recorded audio to an existing file.
+ * @param acceptdtmf DTMF digits that will end the recording.
+ * @param canceldtmf DTMF digits that will cancel the recording.
+ */
+
+static int __ast_play_and_record(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime, const char *fmt, int *duration, int beep, int silencethreshold, int maxsilence, const char *path, int prepend, const char *acceptdtmf, const char *canceldtmf)
+{
+	int d = 0;
 	char *fmts;
 	char comment[256];
-	int x, fmtcnt=1, res=-1,outmsg=0;
-	struct ast_frame *f;
+	int x, fmtcnt = 1, res = -1, outmsg = 0;
 	struct ast_filestream *others[MAX_OTHER_FORMATS];
 	char *sfmt[MAX_OTHER_FORMATS];
-	char *stringp=NULL;
+	char *stringp = NULL;
 	time_t start, end;
-	struct ast_dsp *sildet=NULL;   	/* silence detector dsp */
+	struct ast_dsp *sildet = NULL;   /* silence detector dsp */
 	int totalsilence = 0;
-	int dspsilence = 0;
-	int rfmt=0;
+	int rfmt = 0;
 	struct ast_silence_generator *silgen = NULL;
+	char prependfile[80];
 
 	if (silencethreshold < 0)
 		silencethreshold = global_silence_threshold;
@@ -565,24 +500,30 @@
 	}
 
 	ast_log(LOG_DEBUG,"play_and_record: %s, %s, '%s'\n", playfile ? playfile : "<None>", recordfile, fmt);
-	snprintf(comment,sizeof(comment),"Playing %s, Recording to: %s on %s\n", playfile ? playfile : "<None>", recordfile, chan->name);
-
-	if (playfile) {
-		d = ast_play_and_wait(chan, playfile);
+	snprintf(comment, sizeof(comment), "Playing %s, Recording to: %s on %s\n", playfile ? playfile : "<None>", recordfile, chan->name);
+
+	if (playfile || beep) {
+		if (!beep)
+			d = ast_play_and_wait(chan, playfile);
 		if (d > -1)
 			d = ast_stream_and_wait(chan, "beep", chan->language, "");
 		if (d < 0)
 			return -1;
 	}
 
+	if (prepend) {
+		ast_copy_string(prependfile, recordfile, sizeof(prependfile));	
+		strncat(prependfile, "-prepend", sizeof(prependfile) - strlen(prependfile) - 1);
+	}
+
 	fmts = ast_strdupa(fmt);
 
-	stringp=fmts;
+	stringp = fmts;
 	strsep(&stringp, "|");
 	ast_log(LOG_DEBUG,"Recording Formats: sfmts=%s\n", fmts);
 	sfmt[0] = ast_strdupa(fmts);
 
-	while((fmt = strsep(&stringp, "|"))) {
+	while ((fmt = strsep(&stringp, "|"))) {
 		if (fmtcnt > MAX_OTHER_FORMATS - 1) {
 			ast_log(LOG_WARNING, "Please increase MAX_OTHER_FORMATS in app.c\n");
 			break;
@@ -591,10 +532,11 @@
 	}
 
 	time(&start);
-	end=start;  /* pre-initialize end to be same as start in case we never get into loop */
-	for (x=0;x<fmtcnt;x++) {
-		others[x] = ast_writefile(recordfile, sfmt[x], comment, O_TRUNC, 0, 0700);
-		ast_verbose( VERBOSE_PREFIX_3 "x=%d, open writing:  %s format: %s, %p\n", x, recordfile, sfmt[x], others[x]);
+	end = start;  /* pre-initialize end to be same as start in case we never get into loop */
+	for (x = 0; x < fmtcnt; x++) {
+		others[x] = ast_writefile(prepend ? prependfile : recordfile, sfmt[x], comment, O_TRUNC, 0, 0700);
+		if (option_verbose > 2)
+			ast_verbose(VERBOSE_PREFIX_3 "x=%d, open writing:  %s format: %s, %p\n", x, prepend ? prependfile : recordfile, sfmt[x], others[x]);
 
 		if (!others[x]) {
 			break;
@@ -620,17 +562,19 @@
 		}
 	}
 
-	/* Request a video update */
-	ast_indicate(chan, AST_CONTROL_VIDUPDATE);
-
-	if (ast_opt_transmit_silence)
-		silgen = ast_channel_start_silence_generator(chan);
+	if (!prepend) {
+		/* Request a video update */
+		ast_indicate(chan, AST_CONTROL_VIDUPDATE);
+
+		if (ast_opt_transmit_silence)
+			silgen = ast_channel_start_silence_generator(chan);
+	}
 
 	if (x == fmtcnt) {
-	/* Loop forever, writing the packets we read to the writer(s), until
-	   we read a # or get a hangup */
-		f = NULL;
-		for(;;) {
+		/* Loop forever, writing the packets we read to the writer(s), until
+		   we read a digit or get a hangup */
+		struct ast_frame *f;
+		for (;;) {
 		 	res = ast_waitfor(chan, 2000);
 			if (!res) {
 				ast_log(LOG_DEBUG, "One waitfor failed, trying another\n");
@@ -651,13 +595,15 @@
 				break;
 			if (f->frametype == AST_FRAME_VOICE) {
 				/* write each format */
-				for (x=0;x<fmtcnt;x++) {
+				for (x = 0; x < fmtcnt; x++) {
+					if (prepend && !others[x])
+						break;
 					res = ast_writestream(others[x], f);
 				}
 
 				/* Silence Detection */
 				if (maxsilence > 0) {
-					dspsilence = 0;
+					int dspsilence = 0;
 					ast_dsp_silence(sildet, f, &dspsilence);
 					if (dspsilence)
 						totalsilence = dspsilence;
@@ -668,37 +614,40 @@
 						/* Ended happily with silence */
 						if (option_verbose > 2)
 							ast_verbose( VERBOSE_PREFIX_3 "Recording automatically stopped after a silence of %d seconds\n", totalsilence/1000);
-						ast_frfree(f);
 						res = 'S';
-						outmsg=2;
+						outmsg = 2;
 						break;
 					}
 				}
 				/* Exit on any error */
 				if (res) {
 					ast_log(LOG_WARNING, "Error writing frame\n");
-					ast_frfree(f);
 					break;
 				}
 			} else if (f->frametype == AST_FRAME_VIDEO) {
 				/* Write only once */
 				ast_writestream(others[0], f);
 			} else if (f->frametype == AST_FRAME_DTMF) {
-				if (f->subclass == '#') {
-					if (option_verbose > 2)
-						ast_verbose( VERBOSE_PREFIX_3 "User ended message by pressing %c\n", f->subclass);
-					res = '#';
+				if (prepend) {
+				/* stop recording with any digit */
+					if (option_verbose > 2) 
+						ast_verbose(VERBOSE_PREFIX_3 "User ended message by pressing %c\n", f->subclass);
+					res = 't';
 					outmsg = 2;
-					ast_frfree(f);
 					break;
 				}
-				if (f->subclass == '0') {
-				/* Check for a '0' during message recording also, in case caller wants operator */
+				if (strchr(acceptdtmf, f->subclass)) {
 					if (option_verbose > 2)
-						ast_verbose(VERBOSE_PREFIX_3 "User cancelled by pressing %c\n", f->subclass);
-					res = '0';
+						ast_verbose(VERBOSE_PREFIX_3 "User ended message by pressing %c\n", f->subclass);
+					res = f->subclass;
+					outmsg = 2;
+					break;
+				}
+				if (strchr(canceldtmf, f->subclass)) {
+					if (option_verbose > 2)
+						ast_verbose(VERBOSE_PREFIX_3 "User cancelled message by pressing %c\n", f->subclass);
+					res = f->subclass;
 					outmsg = 0;
-					ast_frfree(f);
 					break;
 				}
 			}
@@ -706,276 +655,95 @@
 				time(&end);
 				if (maxtime < (end - start)) {
 					if (option_verbose > 2)
-						ast_verbose( VERBOSE_PREFIX_3 "Took too long, cutting it short...\n");
+						ast_verbose(VERBOSE_PREFIX_3 "Took too long, cutting it short...\n");
+					res = 't';
 					outmsg = 2;
-					res = 't';
-					ast_frfree(f);
 					break;
 				}
 			}
 			ast_frfree(f);
 		}
-		if (end == start) time(&end);
 		if (!f) {
 			if (option_verbose > 2)
-				ast_verbose( VERBOSE_PREFIX_3 "User hung up\n");
+				ast_verbose(VERBOSE_PREFIX_3 "User hung up\n");
 			res = -1;
-			outmsg=1;
-		}
+			outmsg = 1;
+		} else {
+			ast_frfree(f);
+		}
+		if (end == start) time(&end);
 	} else {
 		ast_log(LOG_WARNING, "Error creating writestream '%s', format '%s'\n", recordfile, sfmt[x]);
 	}
 
-	if (silgen)
-		ast_channel_stop_silence_generator(chan, silgen);
-
+	if (!prepend) {
+		if (silgen)
+			ast_channel_stop_silence_generator(chan, silgen);
+	}
 	*duration = end - start;
 
-	for (x=0;x<fmtcnt;x++) {
-		if (!others[x])
-			break;
-		if (res > 0)
-			ast_stream_rewind(others[x], totalsilence ? totalsilence-200 : 200);
-		ast_truncstream(others[x]);
-		ast_closestream(others[x]);
-	}
-	if (rfmt && ast_set_read_format(chan, rfmt)) {
-		ast_log(LOG_WARNING, "Unable to restore format %s to channel '%s'\n", ast_getformatname(rfmt), chan->name);
-	}
-	if (outmsg > 1) {
-		/* Let them know recording is stopped */
-		ast_stream_and_wait(chan, "auth-thankyou", chan->language, "");
-	}
-	if (sildet)
-		ast_dsp_free(sildet);
-	return res;
-}
-
-int ast_play_and_prepend(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime, char *fmt, int *duration, int beep, int silencethreshold, int maxsilence)
-{
-	int d = 0;
-	char *fmts;
-	char comment[256];
-	int x, fmtcnt=1, res=-1,outmsg=0;
-	struct ast_frame *f;
-	struct ast_filestream *others[MAX_OTHER_FORMATS];
-	struct ast_filestream *realfiles[MAX_OTHER_FORMATS];
-	char *sfmt[MAX_OTHER_FORMATS];
-	char *stringp=NULL;
-	time_t start, end;
-	struct ast_dsp *sildet;   	/* silence detector dsp */
-	int totalsilence = 0;
-	int dspsilence = 0;
-	int rfmt=0;	
-	char prependfile[80];
-	
-	if (silencethreshold < 0)
-		silencethreshold = global_silence_threshold;
-
-	if (maxsilence < 0)
-		maxsilence = global_maxsilence;
-
-	/* barf if no pointer passed to store duration in */
-	if (duration == NULL) {
-		ast_log(LOG_WARNING, "Error play_and_prepend called without duration pointer\n");
-		return -1;
-	}
-
-	ast_log(LOG_DEBUG,"play_and_prepend: %s, %s, '%s'\n", playfile ? playfile : "<None>", recordfile, fmt);
-	snprintf(comment,sizeof(comment),"Playing %s, Recording to: %s on %s\n", playfile ? playfile : "<None>", recordfile, chan->name);
-
-	if (playfile || beep) {	
-		if (!beep)
-			d = ast_play_and_wait(chan, playfile);
-		if (d > -1)
-			d = ast_stream_and_wait(chan, "beep",chan->language, "");
-		if (d < 0)
-			return -1;
-	}
-	ast_copy_string(prependfile, recordfile, sizeof(prependfile));	

[... 21885 lines stripped ...]


More information about the asterisk-commits mailing list