[svn-commits] moy: branch moy/mfcr2 r151979 - in /team/moy/mfcr2: ./ agi/ apps/ autoconf/ b...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Oct 25 22:12:57 CDT 2008


Author: moy
Date: Sat Oct 25 22:12:54 2008
New Revision: 151979

URL: http://svn.digium.com/view/asterisk?view=rev&rev=151979
Log:
merged changes from trunk revision 151978

Added:
    team/moy/mfcr2/autoconf/
      - copied from r151978, trunk/autoconf/
    team/moy/mfcr2/autoconf/acx_pthread.m4
      - copied unchanged from r151978, trunk/autoconf/acx_pthread.m4
    team/moy/mfcr2/autoconf/ast_c_compile_check.m4
      - copied unchanged from r151978, trunk/autoconf/ast_c_compile_check.m4
    team/moy/mfcr2/autoconf/ast_c_define_check.m4
      - copied unchanged from r151978, trunk/autoconf/ast_c_define_check.m4
    team/moy/mfcr2/autoconf/ast_check_gnu_make.m4
      - copied unchanged from r151978, trunk/autoconf/ast_check_gnu_make.m4
    team/moy/mfcr2/autoconf/ast_check_mandatory.m4
      - copied unchanged from r151978, trunk/autoconf/ast_check_mandatory.m4
    team/moy/mfcr2/autoconf/ast_check_openh323.m4
      - copied unchanged from r151978, trunk/autoconf/ast_check_openh323.m4
    team/moy/mfcr2/autoconf/ast_check_pwlib.m4
      - copied unchanged from r151978, trunk/autoconf/ast_check_pwlib.m4
    team/moy/mfcr2/autoconf/ast_ext_lib.m4
      - copied unchanged from r151978, trunk/autoconf/ast_ext_lib.m4
    team/moy/mfcr2/autoconf/ast_ext_tool_check.m4
      - copied unchanged from r151978, trunk/autoconf/ast_ext_tool_check.m4
    team/moy/mfcr2/autoconf/ast_func_fork.m4
      - copied unchanged from r151978, trunk/autoconf/ast_func_fork.m4
    team/moy/mfcr2/autoconf/ast_gcc_attribute.m4
      - copied unchanged from r151978, trunk/autoconf/ast_gcc_attribute.m4
    team/moy/mfcr2/autoconf/ast_prog_egrep.m4
      - copied unchanged from r151978, trunk/autoconf/ast_prog_egrep.m4
    team/moy/mfcr2/autoconf/ast_prog_ld.m4
      - copied unchanged from r151978, trunk/autoconf/ast_prog_ld.m4
    team/moy/mfcr2/autoconf/ast_prog_ld_gnu.m4
      - copied unchanged from r151978, trunk/autoconf/ast_prog_ld_gnu.m4
    team/moy/mfcr2/autoconf/ast_prog_sed.m4
      - copied unchanged from r151978, trunk/autoconf/ast_prog_sed.m4
    team/moy/mfcr2/codecs/ex_adpcm.h
      - copied unchanged from r151978, trunk/codecs/ex_adpcm.h
    team/moy/mfcr2/codecs/ex_alaw.h
      - copied unchanged from r151978, trunk/codecs/ex_alaw.h
    team/moy/mfcr2/codecs/ex_g722.h
      - copied unchanged from r151978, trunk/codecs/ex_g722.h
    team/moy/mfcr2/codecs/ex_g726.h
      - copied unchanged from r151978, trunk/codecs/ex_g726.h
    team/moy/mfcr2/codecs/ex_gsm.h
      - copied unchanged from r151978, trunk/codecs/ex_gsm.h
    team/moy/mfcr2/codecs/ex_ilbc.h
      - copied unchanged from r151978, trunk/codecs/ex_ilbc.h
    team/moy/mfcr2/codecs/ex_lpc10.h
      - copied unchanged from r151978, trunk/codecs/ex_lpc10.h
    team/moy/mfcr2/codecs/ex_speex.h
      - copied unchanged from r151978, trunk/codecs/ex_speex.h
    team/moy/mfcr2/codecs/ex_ulaw.h
      - copied unchanged from r151978, trunk/codecs/ex_ulaw.h
    team/moy/mfcr2/contrib/scripts/live_ast
      - copied unchanged from r151978, trunk/contrib/scripts/live_ast
    team/moy/mfcr2/include/asterisk/slin.h
      - copied unchanged from r151978, trunk/include/asterisk/slin.h
Removed:
    team/moy/mfcr2/acinclude.m4
    team/moy/mfcr2/codecs/adpcm_slin_ex.h
    team/moy/mfcr2/codecs/g722_slin_ex.h
    team/moy/mfcr2/codecs/g726_slin_ex.h
    team/moy/mfcr2/codecs/gsm_slin_ex.h
    team/moy/mfcr2/codecs/ilbc_slin_ex.h
    team/moy/mfcr2/codecs/lpc10_slin_ex.h
    team/moy/mfcr2/codecs/slin_adpcm_ex.h
    team/moy/mfcr2/codecs/slin_g722_ex.h
    team/moy/mfcr2/codecs/slin_g726_ex.h
    team/moy/mfcr2/codecs/slin_gsm_ex.h
    team/moy/mfcr2/codecs/slin_ilbc_ex.h
    team/moy/mfcr2/codecs/slin_lpc10_ex.h
    team/moy/mfcr2/codecs/slin_resample_ex.h
    team/moy/mfcr2/codecs/slin_speex_ex.h
    team/moy/mfcr2/codecs/slin_ulaw_ex.h
    team/moy/mfcr2/codecs/speex_slin_ex.h
    team/moy/mfcr2/codecs/ulaw_slin_ex.h
Modified:
    team/moy/mfcr2/   (props changed)
    team/moy/mfcr2/CHANGES
    team/moy/mfcr2/Makefile
    team/moy/mfcr2/Makefile.moddir_rules
    team/moy/mfcr2/UPGRADE.txt
    team/moy/mfcr2/agi/Makefile
    team/moy/mfcr2/apps/app_authenticate.c
    team/moy/mfcr2/apps/app_dial.c
    team/moy/mfcr2/apps/app_echo.c
    team/moy/mfcr2/apps/app_externalivr.c
    team/moy/mfcr2/apps/app_fax.c
    team/moy/mfcr2/apps/app_meetme.c
    team/moy/mfcr2/apps/app_mixmonitor.c
    team/moy/mfcr2/apps/app_queue.c
    team/moy/mfcr2/apps/app_skel.c
    team/moy/mfcr2/apps/app_sms.c
    team/moy/mfcr2/apps/app_speech_utils.c
    team/moy/mfcr2/apps/app_stack.c
    team/moy/mfcr2/apps/app_voicemail.c
    team/moy/mfcr2/apps/app_waitforsilence.c
    team/moy/mfcr2/bootstrap.sh
    team/moy/mfcr2/build_tools/make_buildopts_h
    team/moy/mfcr2/build_tools/menuselect-deps.in
    team/moy/mfcr2/cdr/cdr_adaptive_odbc.c
    team/moy/mfcr2/cdr/cdr_odbc.c
    team/moy/mfcr2/channels/Makefile
    team/moy/mfcr2/channels/chan_console.c
    team/moy/mfcr2/channels/chan_dahdi.c
    team/moy/mfcr2/channels/chan_features.c
    team/moy/mfcr2/channels/chan_h323.c
    team/moy/mfcr2/channels/chan_iax2.c
    team/moy/mfcr2/channels/chan_local.c
    team/moy/mfcr2/channels/chan_misdn.c
    team/moy/mfcr2/channels/chan_oss.c
    team/moy/mfcr2/channels/chan_sip.c
    team/moy/mfcr2/channels/chan_skinny.c
    team/moy/mfcr2/channels/chan_unistim.c
    team/moy/mfcr2/channels/chan_usbradio.c
    team/moy/mfcr2/channels/console_gui.c
    team/moy/mfcr2/channels/console_video.c
    team/moy/mfcr2/channels/misdn/isdn_lib.c
    team/moy/mfcr2/channels/misdn/isdn_lib.h
    team/moy/mfcr2/channels/vcodecs.c
    team/moy/mfcr2/codecs/codec_a_mu.c
    team/moy/mfcr2/codecs/codec_adpcm.c
    team/moy/mfcr2/codecs/codec_alaw.c
    team/moy/mfcr2/codecs/codec_g722.c
    team/moy/mfcr2/codecs/codec_g726.c
    team/moy/mfcr2/codecs/codec_gsm.c
    team/moy/mfcr2/codecs/codec_ilbc.c
    team/moy/mfcr2/codecs/codec_lpc10.c
    team/moy/mfcr2/codecs/codec_resample.c
    team/moy/mfcr2/codecs/codec_speex.c
    team/moy/mfcr2/codecs/codec_ulaw.c
    team/moy/mfcr2/codecs/lpc10/lpcini.c
    team/moy/mfcr2/configs/agents.conf.sample
    team/moy/mfcr2/configs/chan_dahdi.conf.sample
    team/moy/mfcr2/configs/extensions.conf.sample
    team/moy/mfcr2/configs/func_odbc.conf.sample
    team/moy/mfcr2/configs/iax.conf.sample
    team/moy/mfcr2/configs/modules.conf.sample
    team/moy/mfcr2/configs/musiconhold.conf.sample
    team/moy/mfcr2/configs/phoneprov.conf.sample
    team/moy/mfcr2/configs/queues.conf.sample
    team/moy/mfcr2/configs/res_ldap.conf.sample
    team/moy/mfcr2/configs/sip.conf.sample
    team/moy/mfcr2/configs/sip_notify.conf.sample
    team/moy/mfcr2/configs/skinny.conf.sample
    team/moy/mfcr2/configs/voicemail.conf.sample
    team/moy/mfcr2/configure
    team/moy/mfcr2/configure.ac
    team/moy/mfcr2/contrib/init.d/rc.debian.asterisk
    team/moy/mfcr2/contrib/init.d/rc.mandriva.asterisk
    team/moy/mfcr2/contrib/init.d/rc.redhat.asterisk
    team/moy/mfcr2/contrib/init.d/rc.suse.asterisk
    team/moy/mfcr2/contrib/scripts/realtime_pgsql.sql
    team/moy/mfcr2/contrib/scripts/safe_asterisk
    team/moy/mfcr2/contrib/scripts/safe_asterisk_restart
    team/moy/mfcr2/contrib/scripts/vmdb.sql
    team/moy/mfcr2/doc/CODING-GUIDELINES
    team/moy/mfcr2/doc/manager_1_1.txt
    team/moy/mfcr2/doc/tex/channelvariables.tex
    team/moy/mfcr2/doc/tex/misdn.tex
    team/moy/mfcr2/funcs/func_callerid.c
    team/moy/mfcr2/funcs/func_cdr.c
    team/moy/mfcr2/funcs/func_curl.c
    team/moy/mfcr2/funcs/func_groupcount.c
    team/moy/mfcr2/funcs/func_math.c
    team/moy/mfcr2/funcs/func_odbc.c
    team/moy/mfcr2/funcs/func_strings.c
    team/moy/mfcr2/funcs/func_timeout.c
    team/moy/mfcr2/include/asterisk.h
    team/moy/mfcr2/include/asterisk/astmm.h
    team/moy/mfcr2/include/asterisk/audiohook.h
    team/moy/mfcr2/include/asterisk/autoconfig.h.in
    team/moy/mfcr2/include/asterisk/chanvars.h
    team/moy/mfcr2/include/asterisk/config.h
    team/moy/mfcr2/include/asterisk/endian.h
    team/moy/mfcr2/include/asterisk/features.h
    team/moy/mfcr2/include/asterisk/hashtab.h
    team/moy/mfcr2/include/asterisk/localtime.h
    team/moy/mfcr2/include/asterisk/options.h
    team/moy/mfcr2/include/asterisk/sched.h
    team/moy/mfcr2/include/asterisk/strings.h
    team/moy/mfcr2/include/asterisk/tcptls.h
    team/moy/mfcr2/include/asterisk/threadstorage.h
    team/moy/mfcr2/main/Makefile
    team/moy/mfcr2/main/ast_expr2.c
    team/moy/mfcr2/main/ast_expr2.fl
    team/moy/mfcr2/main/ast_expr2.h
    team/moy/mfcr2/main/ast_expr2.y
    team/moy/mfcr2/main/ast_expr2f.c
    team/moy/mfcr2/main/asterisk.c
    team/moy/mfcr2/main/astmm.c
    team/moy/mfcr2/main/astobj2.c
    team/moy/mfcr2/main/audiohook.c
    team/moy/mfcr2/main/chanvars.c
    team/moy/mfcr2/main/cli.c
    team/moy/mfcr2/main/config.c
    team/moy/mfcr2/main/cryptostub.c
    team/moy/mfcr2/main/dial.c
    team/moy/mfcr2/main/features.c
    team/moy/mfcr2/main/hashtab.c
    team/moy/mfcr2/main/http.c
    team/moy/mfcr2/main/manager.c
    team/moy/mfcr2/main/pbx.c
    team/moy/mfcr2/main/rtp.c
    team/moy/mfcr2/main/stdtime/localtime.c
    team/moy/mfcr2/main/taskprocessor.c
    team/moy/mfcr2/main/tcptls.c
    team/moy/mfcr2/main/tdd.c
    team/moy/mfcr2/main/term.c
    team/moy/mfcr2/main/translate.c
    team/moy/mfcr2/makeopts.in
    team/moy/mfcr2/pbx/pbx_ael.c
    team/moy/mfcr2/pbx/pbx_config.c
    team/moy/mfcr2/pbx/pbx_spool.c
    team/moy/mfcr2/phoneprov/000000000000.cfg
    team/moy/mfcr2/phoneprov/polycom.xml
    team/moy/mfcr2/res/ais/clm.c
    team/moy/mfcr2/res/ais/evt.c
    team/moy/mfcr2/res/res_agi.c
    team/moy/mfcr2/res/res_clioriginate.c
    team/moy/mfcr2/res/res_config_curl.c
    team/moy/mfcr2/res/res_config_ldap.c
    team/moy/mfcr2/res/res_config_odbc.c
    team/moy/mfcr2/res/res_config_pgsql.c
    team/moy/mfcr2/res/res_config_sqlite.c
    team/moy/mfcr2/res/res_http_post.c
    team/moy/mfcr2/res/res_indications.c
    team/moy/mfcr2/res/res_limit.c
    team/moy/mfcr2/res/res_musiconhold.c
    team/moy/mfcr2/res/res_odbc.c
    team/moy/mfcr2/res/res_phoneprov.c
    team/moy/mfcr2/res/res_realtime.c
    team/moy/mfcr2/res/res_smdi.c
    team/moy/mfcr2/sounds/Makefile
    team/moy/mfcr2/sounds/sounds.xml
    team/moy/mfcr2/utils/Makefile
    team/moy/mfcr2/utils/ael_main.c
    team/moy/mfcr2/utils/astman.c
    team/moy/mfcr2/utils/extconf.c
    team/moy/mfcr2/utils/muted.c

Propchange: team/moy/mfcr2/
------------------------------------------------------------------------------
Binary property 'branch-1.4-blocked' - no diff available.

Propchange: team/moy/mfcr2/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: team/moy/mfcr2/CHANGES
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/CHANGES?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/CHANGES (original)
+++ team/moy/mfcr2/CHANGES Sat Oct 25 22:12:54 2008
@@ -1,18 +1,51 @@
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2  -------------
 ------------------------------------------------------------------------------
+
+SIP Changes
+-----------
+ * Added support for SUBSCRIBE/NOTIFY with dialog-info based call pickups.
+   Snom phones use this for call pickup of extensions that the phone is
+   subscribed to.
+ * Added support for subscribing to a voice mailbox on a remote server and
+   making the new/old message count available to local devices.
+ * Added support for setting the domain in the URI for caller of an
+   outbound call by using the SIPFROMDOMAIN channel variable.
+
+Skinny Changes
+--------------
+ * The configuration file now holds seperate sections for devices and lines.
+   Please have a look at configs/skinny.conf.sample and change your skinny.conf
+   accordingly.
 
 Dialplan Functions
 ------------------
  * Added a new dialplan function, CURLOPT, which permits setting various
    options that may be useful with the CURL dialplan function, such as
    cookies, proxies, connection timeouts, passwords, etc.
+ * Permit the syntax and synopsis fields of the corresponding dialplan
+   functions to be individually set from func_odbc.conf.
+ * Added debugging CLI functions to func_odbc, 'odbc read' and 'odbc write'.
+
+Applications
+------------
+ * Scheduled meetme conferences may now have their end times extended by
+   using MeetMeAdmin.
+ * app_authenticate now gives the ability to select a prompt other than
+   the default.
 
 Miscellaneous
 -------------
  * res_jabber: autoprune has been disabled by default, to avoid misconfiguration 
    that would end up being interpreted as a bug once Asterisk started removing 
    the contacts from a user list.
+ * extensions.conf now allows you to use keyword "same" to define an extension
+   without actually specifying an extension.  It uses exactly the same pattern
+   as previously used on the last "exten" line.  For example:
+     exten => 123,1,NoOp(something)
+     same  =>     n,SomethingElse()
+ * musiconhold.conf classes of type 'files' can now use relative directory paths,
+   which are interpreted as relative to the astvarlibdir setting in asterisk.conf.
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.6.0 to Asterisk 1.6.1  -------------
@@ -104,6 +137,8 @@
  * ExternalIVR now takes several options that affect the way it performs, as
    well as having several new commands.  Please see doc/externalivr.txt for the
    complete documentation.
+ * Added ability to communicate over a TCP socket instead of forking a child process for the 
+   ExternalIVR application.
  * ChanIsAvail has a new option, 'a', which will return all available channels instead
    of just the first one if you give the function more then one channel to check.
  * PrivacyManager now takes an option where you can specify a context where the 
@@ -123,6 +158,8 @@
    'UNSUPPORTED'.  This change makes SendImage() more consistent with other
    applications.
  * Park has a new option, 's', which silences the announcement of the parking space number.
+ * A non-numeric, zero, or negative timeout specified to Dial() will now be interpreted as
+   invalid input and will be assumed to mean that no timeout is desired.
 
 SIP Changes
 -----------
@@ -184,6 +221,7 @@
 --------------------------------
   * The Status command now takes an optional list of variables to display
     along with channel status.
+  * The QueueEntry event now also includes the channel's uniqueid
 
 ODBC Changes
 ------------
@@ -282,6 +320,8 @@
   * Originate now accepts codec settings with "Codecs: alaw, ulaw, h264" 
   * New command: Atxfer. See doc/manager_1_1.txt for more details or 
     manager show command Atxfer from the CLI
+  * New command: IAXregistry. See doc/manager_1_1.txt for more details or
+    manager show command IAXregistry from the CLI
 
 Dialplan functions
 ------------------
@@ -336,6 +376,8 @@
     currently scheduled for each. Gives you a feel for how busy the sip channel
     driver is.
   * Added 'skinny show lines verbose' CLI command. This will show the subs for every channel.
+  * Cleanup another bunch of CLI commands. Now all modules follow the same schema.
+    (Done by lmadsen, junky and mvanbaak during the devcon 2008)
 
 SIP changes
 -----------
@@ -446,8 +488,8 @@
 ----------------------
   * The ackcall and endcall options are now supplemented with options acceptdtmf
     and enddtmf. These allow for the DTMF keypress to be configurable. The options
-	default to their old hard-coded values ('#' and '*' respectively) so this should
-	not break any existing agent installations.
+    default to their old hard-coded values ('#' and '*' respectively) so this should
+    not break any existing agent installations.
 
 DAHDI channel driver (chan_dahdi) Changes
 ----------------------------------------
@@ -590,6 +632,10 @@
     when a realtime queue member is removed. Since there is no calling channel associated
     with these events, the string "REALTIME" is placed where the channel's unique id
     is typically placed.
+  * The configuration method for the "joinempty" and "leavewhenempty" options has
+    changed to a comma-separated list of methods of determining member availability
+	instead of vague terms such as "yes," "loose," "no," and "strict." These old four
+	values are still accepted for backwards-compatibility, though.
 
 MeetMe Changes
 --------------
@@ -634,7 +680,7 @@
      WaitForRing() now takes floating pt timeout arg.
      SpeechBackground() -- clarified in the docstrings that the timeout is an integer seconds.
   * Added 's' option to Page application.
-  * Added 'E' and 'V' commands to ExternalIVR.
+  * Added 'E', 'V', and 'P' commands to ExternalIVR.
   * Added 'o' and 'X' options to Chanspy.
   * Added a new dialplan application, Bridge, which allows you to bridge the
      calling channel to any other active channel on the system.
@@ -654,8 +700,6 @@
      or NOCHANNEL if the given channel was not found.
   * The silencethreshold setting that was previously configurable in multiple
      applications is now settable globally via dsp.conf.
-  * Added ability to communicate over a TCP socket instead of forking a child process for the 
-    ExternalIVR application.
 
 Music On Hold Changes
 ---------------------
@@ -867,7 +911,7 @@
     allocation of additional extensions which will reach the specified user.
   * A new option for the configure script, --enable-internal-poll, has been added
     for use with systems which may have a buggy implementation of the poll system
-	call. If you notice odd behavior such as the CLI being unresponsive on remote
-	consoles, you may want to try using this option. This option is enabled by default
-	on Darwin systems since it is known that the Darwin poll() implementation has
-	odd issues.
+    call. If you notice odd behavior such as the CLI being unresponsive on remote
+    consoles, you may want to try using this option. This option is enabled by default
+    on Darwin systems since it is known that the Darwin poll() implementation has
+    odd issues.

Modified: team/moy/mfcr2/Makefile
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/Makefile (original)
+++ team/moy/mfcr2/Makefile Sat Oct 25 22:12:54 2008
@@ -232,8 +232,6 @@
 
 ASTCFLAGS+=-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
 
-ASTCFLAGS+=-include $(ASTTOPDIR)/include/asterisk/autoconfig.h
-
 ifeq ($(AST_DEVMODE),yes)
   ASTCFLAGS+=-Werror -Wunused -Wundef $(AST_DECLARATION_AFTER_STATEMENT) -Wmissing-format-attribute -Wformat-security #-Wformat=2
 endif
@@ -264,7 +262,7 @@
 endif
 
 ifeq ($(OSARCH),OpenBSD)
-  ASTCFLAGS+=-pthread
+  ASTCFLAGS+=-pthread -ftrampolines
 endif
 
 ifeq ($(OSARCH),SunOS)
@@ -298,11 +296,11 @@
 MOD_SUBDIRS_MENUSELECT_TREE:=$(MOD_SUBDIRS:%=%-menuselect-tree)
 
 ifneq ($(findstring darwin,$(OSARCH)),)
-  ASTCFLAGS+=-D__Darwin__
+  ASTCFLAGS+=-D__Darwin__ -fnested-functions
   SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
 else
 # These are used for all but Darwin
-  SOLINK=-shared -Xlinker -x
+  SOLINK=-shared
   ifneq ($(findstring BSD,$(OSARCH)),)
     LDFLAGS+=-L/usr/local/lib
   endif
@@ -310,6 +308,10 @@
 
 ifeq ($(OSARCH),SunOS)
   SOLINK=-shared -fpic -L/usr/local/ssl/lib -lrt
+endif
+
+ifeq ($(OSARCH),OpenBSD)
+  SOLINK=-shared -fpic
 endif
 
 # comment to print directories during submakes
@@ -600,6 +602,8 @@
 	@echo " + doxygen installed on your local system    +"
 	@echo " +-------------------------------------------+"
 	@$(MAKE) -s oldmodcheck
+
+isntall: install
 
 upgrade: bininstall
 

Modified: team/moy/mfcr2/Makefile.moddir_rules
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile.moddir_rules?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/Makefile.moddir_rules (original)
+++ team/moy/mfcr2/Makefile.moddir_rules Sat Oct 25 22:12:54 2008
@@ -17,12 +17,6 @@
 # (remember that they apply recursively to prerequisites).
 # Also note that we can only set one variable per rule, so we have to
 # repeat the left hand side to set multiple variables.
-
-ifneq ($(findstring MALLOC_DEBUG,$(MENUSELECT_CFLAGS)),)
- ifeq ($(findstring astmm.h,$(ASTCFLAGS)),)
-  ASTCFLAGS+=-include $(ASTTOPDIR)/include/asterisk/astmm.h
- endif
-endif
 
 ifeq ($(findstring LOADABLE_MODULES,$(MENUSELECT_CFLAGS)),)
   ASTCFLAGS+=${GC_CFLAGS}

Modified: team/moy/mfcr2/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/UPGRADE.txt?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/UPGRADE.txt (original)
+++ team/moy/mfcr2/UPGRADE.txt Sat Oct 25 22:12:54 2008
@@ -77,6 +77,13 @@
   had any significance).  Since this violates the Principle of Least Surprise,
   it has been changed.
 
+* The default console now will use colors according to the default background
+  color, instead of forcing the background color to black.  If you are using a
+  light colored background for your console, you may wish to use the option
+  flag '-W' to present better color choices for the various messages.  However,
+  if you'd prefer the old method of forcing colors to white text on a black
+  background, the compatiblity option -B is provided for this purpose.
+
 Voicemail:
 
 * The voicemail configuration values 'maxmessage' and 'minmessage' have
@@ -258,6 +265,10 @@
   to differentiate your variable from the append operator.  This potential
   conflict is unlikely, but is documented here to be thorough.
 
+* skinny.conf now has seperate sections for lines and devices.
+  Please have a look at configs/skinny.conf.sample and update
+  your skinny.conf.
+
 Manager:
 
 * Manager has been upgraded to version 1.1 with a lot of changes. 

Modified: team/moy/mfcr2/agi/Makefile
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/agi/Makefile?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/agi/Makefile (original)
+++ team/moy/mfcr2/agi/Makefile Sat Oct 25 22:12:54 2008
@@ -29,8 +29,13 @@
 
 strcompat.c: ../main/strcompat.c
 	@cp $< $@
+strcompat.o: ASTCFLAGS+=-DSTANDALONE
+
+eagi-test.o: ASTCFLAGS+=-DSTANDALONE
 
 eagi-test: eagi-test.o strcompat.o
+
+eagi-sphinx-test.o: ASTCFLAGS+=-DSTANDALONE
 
 eagi-sphinx-test: eagi-sphinx-test.o
 

Modified: team/moy/mfcr2/apps/app_authenticate.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_authenticate.c?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/apps/app_authenticate.c (original)
+++ team/moy/mfcr2/apps/app_authenticate.c Sat Oct 25 22:12:54 2008
@@ -58,7 +58,7 @@
 static char *synopsis = "Authenticate a user";
 
 static char *descrip =
-"  Authenticate(password[,options[,maxdigits]]): This application asks the caller\n"
+"  Authenticate(password[,options[,maxdigits[,prompt]]]): This application asks the caller\n"
 "to enter a given password in order to continue dialplan execution. If the password\n"
 "begins with the '/' character, it is interpreted as a file which contains a list of\n"
 "valid passwords, listed 1 password per line in the file.\n"
@@ -76,6 +76,8 @@
 "         maxdigits have been entered (without requiring the user to\n"
 "         press the '#' key).\n"
 "         Defaults to 0 - no limit - wait for the user press the '#' key.\n"
+"     prompt - Override the agent-pass prompt file.\n"
+ ;
 ;
 
 static int auth_exec(struct ast_channel *chan, void *data)
@@ -88,6 +90,7 @@
 		AST_APP_ARG(password);
 		AST_APP_ARG(options);
 		AST_APP_ARG(maxdigits);
+		AST_APP_ARG(prompt);
 	);
 
 	if (ast_strlen_zero(data)) {
@@ -115,6 +118,12 @@
 		maxdigits = sizeof(passwd) - 2;
 	}
 
+	if (!ast_strlen_zero(arglist.prompt)) {
+		prompt = arglist.prompt;
+	} else {
+		prompt = "agent-pass";
+	}
+   
 	/* Start asking for password */
 	for (retries = 0; retries < 3; retries++) {
 		if ((res = ast_app_getdata(chan, prompt, passwd, maxdigits, 0)) < 0)

Modified: team/moy/mfcr2/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_dial.c?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/apps/app_dial.c (original)
+++ team/moy/mfcr2/apps/app_dial.c Sat Oct 25 22:12:54 2008
@@ -1589,8 +1589,10 @@
 		to = atoi(args.timeout);
 		if (to > 0)
 			to *= 1000;
-		else
-			ast_log(LOG_WARNING, "Invalid timeout specified: '%s'\n", args.timeout);
+		else {
+			ast_log(LOG_WARNING, "Invalid timeout specified: '%s'. Setting timeout to infinite\n", args.timeout);
+			to = -1;
+		}
 	}
 
 	if (!outgoing) {
@@ -1926,11 +1928,7 @@
 				res = -1;
 				goto done;
 			}
-			if (opermode && !strncmp(chan->tech->type, "DAHDI", 3) && !strncmp(peer->name, "DAHDI", 3)) {
-				/* what's this special handling for dahdi <-> dahdi ?
-				 * A: dahdi to dahdi calls are natively bridged at the kernel driver
-				 * level, so we need to ensure that this mode gets propagated
-				 * all the way down. */
+			if (opermode) {
 				struct oprmode oprmode;
 
 				oprmode.peer = peer;

Modified: team/moy/mfcr2/apps/app_echo.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_echo.c?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/apps/app_echo.c (original)
+++ team/moy/mfcr2/apps/app_echo.c Sat Oct 25 22:12:54 2008
@@ -54,8 +54,9 @@
 
 	while (ast_waitfor(chan, -1) > -1) {
 		struct ast_frame *f = ast_read(chan);
-		if (!f)
+		if (!f) {
 			break;
+		}
 		f->delivery.tv_sec = 0;
 		f->delivery.tv_usec = 0;
 		if (ast_write(chan, f)) {

Modified: team/moy/mfcr2/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_externalivr.c?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/apps/app_externalivr.c (original)
+++ team/moy/mfcr2/apps/app_externalivr.c Sat Oct 25 22:12:54 2008
@@ -46,6 +46,7 @@
 #include "asterisk/app.h"
 #include "asterisk/utils.h"
 #include "asterisk/tcptls.h"
+#include "asterisk/astobj2.h"
 
 static const char *app = "ExternalIVR";
 
@@ -419,7 +420,7 @@
 	}
 
 	if (!strncmp(app_args[0], "ivr://", 6)) {
-		struct server_args ivr_desc = {
+		struct ast_tcptls_session_args ivr_desc = {
 			.accept_fd = -1,
 			.name = "IVR",
 		};
@@ -438,9 +439,9 @@
 		}
 
 		ast_gethostbyname(hostname, &hp);
-		ivr_desc.sin.sin_family = AF_INET;
-		ivr_desc.sin.sin_port = htons(port);
-		memmove(&ivr_desc.sin.sin_addr.s_addr, hp.hp.h_addr, hp.hp.h_length);
+		ivr_desc.local_address.sin_family = AF_INET;
+		ivr_desc.local_address.sin_port = htons(port);
+		memcpy(&ivr_desc.local_address.sin_addr.s_addr, hp.hp.h_addr, hp.hp.h_length);
 		ser = ast_tcptls_client_start(&ivr_desc);
 
 		if (!ser) {

Modified: team/moy/mfcr2/apps/app_fax.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_fax.c?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/apps/app_fax.c (original)
+++ team/moy/mfcr2/apps/app_fax.c Sat Oct 25 22:12:54 2008
@@ -29,6 +29,7 @@
 #include <tiffio.h>
 
 #include <spandsp.h>
+#include <spandsp/version.h>
 
 #include "asterisk/lock.h"
 #include "asterisk/file.h"
@@ -310,6 +311,7 @@
 	int original_read_fmt = AST_FORMAT_SLINEAR;
 	int original_write_fmt = AST_FORMAT_SLINEAR;
 	fax_state_t fax;
+	t30_state_t *t30state;
 	struct ast_dsp *dsp = NULL;
 	int detect_tone = 0;
 	struct ast_frame *inf = NULL;
@@ -318,6 +320,14 @@
 	struct timeval now, start, state_change;
 	enum ast_control_t38 t38control;
 
+#if SPANDSP_RELEASE_DATE >= 20081012
+        /* for spandsp shaphots 0.0.6 and higher */
+        t30state = &fax.t30;
+#else
+        /* for spandsp release 0.0.5 */
+        t30state = &fax.t30_state;
+#endif
+
 	original_read_fmt = s->chan->readformat;
 	if (original_read_fmt != AST_FORMAT_SLINEAR) {
 		res = ast_set_read_format(s->chan, AST_FORMAT_SLINEAR);
@@ -341,16 +351,16 @@
 
 	/* Setup logging */
 	set_logging(&fax.logging);
-	set_logging(&fax.t30_state.logging);
+	set_logging(&t30state->logging);
 
 	/* Configure terminal */
-	set_local_info(&fax.t30_state, s);
-	set_file(&fax.t30_state, s);
-	set_ecm(&fax.t30_state, TRUE);
+	set_local_info(t30state, s);
+	set_file(t30state, s);
+	set_ecm(t30state, TRUE);
 
 	fax_set_transmit_on_idle(&fax, TRUE);
 
-	t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, s);
+	t30_set_phase_e_handler(t30state, phase_e_handler, s);
 
 	if (s->t38state == T38_STATE_UNAVAILABLE) {
 		ast_debug(1, "T38 is unavailable on %s\n", s->chan->name);
@@ -415,9 +425,9 @@
 			}
 
 			/* Watchdog */
-			if (last_state != fax.t30_state.state) {
+			if (last_state != t30state->state) {
 				state_change = ast_tvnow();
-				last_state = fax.t30_state.state;
+				last_state = t30state->state;
 			}
 		} else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass == AST_CONTROL_T38 &&
 				inf->datalen == sizeof(enum ast_control_t38)) {
@@ -456,10 +466,10 @@
 	   by t30_terminate, display diagnostics and set status variables although no transmittion
 	   has taken place yet. */
 	if (res > 0) {
-		t30_set_phase_e_handler(&fax.t30_state, NULL, NULL);
-	}
-
-	t30_terminate(&fax.t30_state);
+		t30_set_phase_e_handler(t30state, NULL, NULL);
+	}
+
+	t30_terminate(t30state);
 	fax_release(&fax);
 
 done:
@@ -486,6 +496,19 @@
 	struct timeval now, start, state_change, last_frame;
 	enum ast_control_t38 t38control;
 
+	t30_state_t *t30state;
+	t38_core_state_t *t38state;
+
+#if SPANDSP_RELEASE_DATE >= 20081012
+	/* for spandsp shaphots 0.0.6 and higher */
+	t30state = &t38.t30;
+	t38state = &t38.t38_fe.t38;
+#else
+	/* for spandsp releases 0.0.5 */
+	t30state = &t38.t30_state;
+	t38state = &t38.t38;
+#endif
+
 	/* Initialize terminal */
 	memset(&t38, 0, sizeof(t38));
 	if (t38_terminal_init(&t38, s->caller_mode, t38_tx_packet_handler, s->chan) == NULL) {
@@ -495,15 +518,15 @@
 
 	/* Setup logging */
 	set_logging(&t38.logging);
-	set_logging(&t38.t30_state.logging);
-	set_logging(&t38.t38.logging);
+	set_logging(&t30state->logging);
+	set_logging(&t38state->logging);
 
 	/* Configure terminal */
-	set_local_info(&t38.t30_state, s);
-	set_file(&t38.t30_state, s);
-	set_ecm(&t38.t30_state, TRUE);
-
-	t30_set_phase_e_handler(&t38.t30_state, phase_e_handler, s);
+	set_local_info(t30state, s);
+	set_file(t30state, s);
+	set_ecm(t30state, TRUE);
+
+	t30_set_phase_e_handler(t30state, phase_e_handler, s);
 
 	now = start = state_change = ast_tvnow();
 
@@ -529,12 +552,12 @@
 		ast_debug(10, "frame %d/%d, len=%d\n", inf->frametype, inf->subclass, inf->datalen);
 
 		if (inf->frametype == AST_FRAME_MODEM && inf->subclass == AST_MODEM_T38) {
-			t38_core_rx_ifp_packet(&t38.t38, inf->data.ptr, inf->datalen, inf->seqno);
+			t38_core_rx_ifp_packet(t38state, inf->data.ptr, inf->datalen, inf->seqno);
 
 			/* Watchdog */
-			if (last_state != t38.t30_state.state) {
+			if (last_state != t30state->state) {
 				state_change = ast_tvnow();
-				last_state = t38.t30_state.state;
+				last_state = t30state->state;
 			}
 		} else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass == AST_CONTROL_T38 &&
 				inf->datalen == sizeof(enum ast_control_t38)) {
@@ -564,7 +587,7 @@
 	if (inf)
 		ast_frfree(inf);
 
-	t30_terminate(&t38.t30_state);
+	t30_terminate(t30state);
 	t38_terminal_release(&t38);
 
 	return res;

Modified: team/moy/mfcr2/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_meetme.c?view=diff&rev=151979&r1=151978&r2=151979
==============================================================================
--- team/moy/mfcr2/apps/app_meetme.c (original)
+++ team/moy/mfcr2/apps/app_meetme.c Sat Oct 25 22:12:54 2008
@@ -219,6 +219,7 @@
 static int fuzzystart;
 static int earlyalert;
 static int endalert;
+static int extendby;
 
 /* Log participant count to the RealTime backend */
 static int rt_log_members;
@@ -297,6 +298,7 @@
 static const char *descrip3 = 
 "  MeetMeAdmin(confno,command[,user]): Run admin command for conference\n"
 "      'e' -- Eject last user that joined\n"
+"      'E' -- Extend conference end time, if scheduled\n"
 "      'k' -- Kick one user out of conference\n"
 "      'K' -- Kick all users out of conference\n"
 "      'l' -- Unlock conference\n"
@@ -315,6 +317,12 @@
 "      'U' -- Raise one user's listen volume\n"
 "      'v' -- Lower entire conference listening volume\n"
 "      'V' -- Raise entire conference listening volume\n"
+"  MeetMeAdmin will additionally set the variable MEETMEADMINSTATUS with one\n"
+"of the following values:\n"
+"      'NOPARSE'  -- Invalid arguments\n"
+"      'NOTFOUND' -- User specified was not found\n"
+"      'FAILED'   -- Another failure occurred\n"
+"      'OK'       -- The operation was completed successfully\n"
 "";
 
 static const char *descrip4 = 
@@ -352,6 +360,7 @@
 
 #define MAX_CONFNUM 80
 #define MAX_PIN     80
+#define OPTIONS_LEN 32
 
 /*! \brief The MeetMe Conference object */
 struct ast_conference {
@@ -380,6 +389,9 @@
 	char pinadmin[MAX_PIN];                 /*!< If protected by a admin PIN */
 	char uniqueid[32];
 	long endtime;                           /*!< When to end the conf if scheduled */
+	const char *useropts;                   /*!< RealTime user flags */
+	const char *adminopts;                  /*!< RealTime moderator flags */
+	const char *bookid;                     /*!< RealTime conference id */
 	struct ast_frame *transframe[32];
 	struct ast_frame *origframe;
 	struct ast_trans_pvt *transpath[32];
@@ -883,7 +895,6 @@
 	return cnf;
 }
 
-
 static char *complete_meetmecmd(const char *line, const char *word, int pos, int state)
 {
 	static char *cmds[] = {"concise", "lock", "unlock", "mute", "unmute", "kick", "list", NULL};
@@ -939,18 +950,17 @@
 			}
 			AST_LIST_UNLOCK(&confs);
 			return usr ? ast_strdup(usrno) : NULL;
-		} else if (strstr(line, "list") && (state == 0))
-			return ast_strdup("concise");
+		}
 	}
 
 	return NULL;
 }
 
-static char *meetme_cmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+static char *meetme_show_cmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
 {
 	/* Process the command */
+	struct ast_conf_user *user;
 	struct ast_conference *cnf;
-	struct ast_conf_user *user;
 	int hr, min, sec;
 	int i = 0, total = 0;
 	time_t now;
@@ -960,17 +970,15 @@
 
 	switch (cmd) {
 	case CLI_INIT:
-		e->command = "meetme";
+		e->command = "meetme list [concise]";
 		e->usage =
-			"Usage: meetme (un)lock|(un)mute|kick|list [concise] <confno> <usernumber>\n"
-			"       Executes a command for the conference or on a conferee\n";
+			"Usage: meetme list [concise] <confno> \n"
+			"       List all or a specific conference.\n";
 		return NULL;
 	case CLI_GENERATE:
 		return complete_meetmecmd(a->line, a->word, a->pos, a->n);
 	}
 
-	if (a->argc > 8)
-		ast_cli(a->fd, "Invalid Arguments.\n");
 	/* Check for length so no buffer will overflow... */
 	for (i = 0; i < a->argc; i++) {
 		if (strlen(a->argv[i]) > 100)
@@ -982,9 +990,9 @@
 		return CLI_FAILURE;
 	}
 
-	if (a->argc == 1 || (a->argc == 2 && !strcasecmp(a->argv[1], "concise"))) {
-		/* 'MeetMe': List all the conferences */	
-		int concise = (a->argc == 2 && !strcasecmp(a->argv[1], "concise"));
+	if (a->argc == 2 || (a->argc == 3 && !strcasecmp(a->argv[2], "concise"))) {
+		/* List all the conferences */	
+		int concise = (a->argc == 3 && !strcasecmp(a->argv[2], "concise"));
 		now = time(NULL);
 		AST_LIST_LOCK(&confs);
 		if (AST_LIST_EMPTY(&confs)) {
@@ -1027,59 +1035,12 @@
 		}
 		ast_free(cmdline);
 		return CLI_SUCCESS;
-	}
-	if (a->argc < 3) {
-		ast_free(cmdline);
-		return CLI_SHOWUSAGE;
-	}
-
-	ast_str_set(&cmdline, 0, "%s", a->argv[2]);	/* Argv 2: conference number */
-	if (strstr(a->argv[1], "lock")) {
-		if (strcmp(a->argv[1], "lock") == 0) {
-			/* Lock */
-			ast_str_append(&cmdline, 0, ",L");
-		} else {
-			/* Unlock */
-			ast_str_append(&cmdline, 0, ",l");
-		}
-	} else if (strstr(a->argv[1], "mute")) { 
-		if (a->argc < 4) {
-			ast_free(cmdline);
-			return CLI_SHOWUSAGE;
-		}
-		if (strcmp(a->argv[1], "mute") == 0) {
-			/* Mute */
-			if (strcmp(a->argv[3], "all") == 0) {
-				ast_str_append(&cmdline, 0, ",N");
-			} else {
-				ast_str_append(&cmdline, 0, ",M,%s", a->argv[3]);	
-			}
-		} else {
-			/* Unmute */
-			if (strcmp(a->argv[3], "all") == 0) {
-				ast_str_append(&cmdline, 0, ",n");
-			} else {
-				ast_str_append(&cmdline, 0, ",m,%s", a->argv[3]);
-			}
-		}
-	} else if (strcmp(a->argv[1], "kick") == 0) {
-		if (a->argc < 4) {
-			ast_free(cmdline);
-			return CLI_SHOWUSAGE;
-		}
-		if (strcmp(a->argv[3], "all") == 0) {
-			/* Kick all */
-			ast_str_append(&cmdline, 0, ",K");
-		} else {
-			/* Kick a single user */
-			ast_str_append(&cmdline, 0, ",k,%s", a->argv[3]);
-		}
 	} else if (strcmp(a->argv[1], "list") == 0) {
 		int concise = (a->argc == 4 && (!strcasecmp(a->argv[3], "concise")));
 		/* List all the users in a conference */
 		if (AST_LIST_EMPTY(&confs)) {
 			if (!concise) {
-				ast_cli(a->fd, "No active conferences.\n");
+				ast_cli(a->fd, "No active MeetMe conferences.\n");
 			}
 			ast_free(cmdline);
 			return CLI_SUCCESS;	
@@ -1134,6 +1095,97 @@
 		AST_LIST_UNLOCK(&confs);
 		ast_free(cmdline);
 		return CLI_SUCCESS;
+	}
+	if (a->argc < 2) {
+		ast_free(cmdline);
+		return CLI_SHOWUSAGE;
+	}
+
+	ast_debug(1, "Cmdline: %s\n", cmdline->str);
+
+	admin_exec(NULL, cmdline->str);
+	ast_free(cmdline);
+
+	return CLI_SUCCESS;
+}
+
+
+static char *meetme_cmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+	/* Process the command */
+	struct ast_str *cmdline = NULL;
+	int i = 0;
+
+	switch (cmd) {
+	case CLI_INIT:
+		e->command = "meetme {lock|unlock|mute|unmute|kick}";
+		e->usage =
+			"Usage: meetme (un)lock|(un)mute|kick <confno> <usernumber>\n"
+			"       Executes a command for the conference or on a conferee\n";
+		return NULL;
+	case CLI_GENERATE:
+		return complete_meetmecmd(a->line, a->word, a->pos, a->n);
+	}
+
+	if (a->argc > 8)
+		ast_cli(a->fd, "Invalid Arguments.\n");
+	/* Check for length so no buffer will overflow... */
+	for (i = 0; i < a->argc; i++) {
+		if (strlen(a->argv[i]) > 100)
+			ast_cli(a->fd, "Invalid Arguments.\n");
+	}
+
+	/* Max confno length */
+	if (!(cmdline = ast_str_create(MAX_CONFNUM))) {
+		return CLI_FAILURE;
+	}
+
+	if (a->argc < 1) {
+		ast_free(cmdline);
+		return CLI_SHOWUSAGE;
+	}
+
+	ast_str_set(&cmdline, 0, "%s", a->argv[2]);	/* Argv 2: conference number */
+	if (strstr(a->argv[1], "lock")) {
+		if (strcmp(a->argv[1], "lock") == 0) {
+			/* Lock */
+			ast_str_append(&cmdline, 0, ",L");
+		} else {
+			/* Unlock */
+			ast_str_append(&cmdline, 0, ",l");
+		}
+	} else if (strstr(a->argv[1], "mute")) { 
+		if (a->argc < 4) {
+			ast_free(cmdline);
+			return CLI_SHOWUSAGE;
+		}
+		if (strcmp(a->argv[1], "mute") == 0) {
+			/* Mute */
+			if (strcmp(a->argv[3], "all") == 0) {
+				ast_str_append(&cmdline, 0, ",N");
+			} else {
+				ast_str_append(&cmdline, 0, ",M,%s", a->argv[3]);	
+			}
+		} else {
+			/* Unmute */
+			if (strcmp(a->argv[3], "all") == 0) {
+				ast_str_append(&cmdline, 0, ",n");
+			} else {
+				ast_str_append(&cmdline, 0, ",m,%s", a->argv[3]);
+			}
+		}
+	} else if (strcmp(a->argv[1], "kick") == 0) {

[... 20558 lines stripped ...]



More information about the svn-commits mailing list