[asterisk-commits] tilghman: branch tilghman/kill_stubs r274726 - in /team/tilghman/kill_stubs: ...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jul 7 16:53:33 CDT 2010


Author: tilghman
Date: Wed Jul  7 16:53:29 2010
New Revision: 274726

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=274726
Log:
Initialized merge tracking via "svnmerge" with revisions "1-274724" from 
https://origsvn.digium.com/svn/asterisk/trunk

Removed:
    team/tilghman/kill_stubs/main/adsistub.c
    team/tilghman/kill_stubs/main/cryptostub.c
Modified:
    team/tilghman/kill_stubs/   (props changed)
    team/tilghman/kill_stubs/include/asterisk/adsi.h
    team/tilghman/kill_stubs/include/asterisk/crypto.h
    team/tilghman/kill_stubs/main/Makefile
    team/tilghman/kill_stubs/main/asterisk.dynamics
    team/tilghman/kill_stubs/res/res_adsi.c
    team/tilghman/kill_stubs/res/res_adsi.exports.in
    team/tilghman/kill_stubs/res/res_crypto.c
    team/tilghman/kill_stubs/tests/test_utils.c

Propchange: team/tilghman/kill_stubs/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/tilghman/kill_stubs/
------------------------------------------------------------------------------
    automerge-email = tilghman at meg.abyt.es

Propchange: team/tilghman/kill_stubs/
------------------------------------------------------------------------------
    svnmerge-integrated = /trunk:1-274724

Modified: team/tilghman/kill_stubs/include/asterisk/adsi.h
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/kill_stubs/include/asterisk/adsi.h?view=diff&rev=274726&r1=274725&r2=274726
==============================================================================
--- team/tilghman/kill_stubs/include/asterisk/adsi.h (original)
+++ team/tilghman/kill_stubs/include/asterisk/adsi.h Wed Jul  7 16:53:29 2010
@@ -24,6 +24,8 @@
 #define _ASTERISK_ADSI_H
 
 #include "asterisk/callerid.h"
+#include "asterisk/optional_api.h"
+
 /*! \name ADSI parameters */
 /*@{ */
 
@@ -121,44 +123,35 @@
 
 /*@} */
 
-/*! Perform Asterisk ADSI initialization (for channel drivers that want 
- *    to support ADSI when the handset is first lifted) 
- * \param chan Channel to initialize for ADSI (if supported)
- *
- * \retval 0 on success (or adsi unavailable.
- * \retval -1 on hangup.
- */
-extern int (*ast_adsi_channel_init)(struct ast_channel *chan);
-
-extern int (*ast_adsi_begin_download)(struct ast_channel *chan, char *service, unsigned char *fdn, unsigned char *sec, int version);
-
-extern int (*ast_adsi_end_download)(struct ast_channel *chan);
-
-/*! Restore ADSI initialization (for applications that play with ADSI 
- *   and want to restore it to normal.  If you touch "INFO" then you 
- *   have to use the ast_adsi_channel_init again instead. 
+AST_OPTIONAL_API(int, ast_adsi_begin_download, (struct ast_channel *chan, char *service, unsigned char *fdn, unsigned char *sec, int version), { return 0; });
+
+AST_OPTIONAL_API(int, ast_adsi_end_download, (struct ast_channel *chan), { return 0; });
+
+/*! Restore ADSI initialization (for applications that play with ADSI
+ *   and want to restore it to normal.  If you touch "INFO" then you
+ *   have to use the ast_adsi_channel_init again instead.
  * \param chan Channel to restore
  *
  * \retval 0 on success (or adsi unavailable)
  * \retval -1 on hangup
  */
-extern int (*ast_adsi_channel_restore)(struct ast_channel *chan);
-
-/*! 
- * \brief Display some stuff on the screen 
+AST_OPTIONAL_API(int, ast_adsi_channel_restore, (struct ast_channel *chan), { return 0; });
+
+/*!
+ * \brief Display some stuff on the screen
  * \param chan Channel to display on
  * \param lines NULL-terminated list of things to print (no more than 4 recommended)
  * \param align list of alignments to use (ADSI_JUST_LEFT, ADSI_JUST_RIGHT, ADSI_JUST_CEN, etc..)
  * \param voice whether to jump into voice mode when finished
  *
- * \retval 0 on success (or adsi unavailable) 
+ * \retval 0 on success (or adsi unavailable)
  * \retval -1 on hangup
  */
-extern int (*ast_adsi_print)(struct ast_channel *chan, char **lines, int *align, int voice);
-
-/*! 
+AST_OPTIONAL_API(int, ast_adsi_print, (struct ast_channel *chan, char **lines, int *align, int voice), { return 0; });
+
+/*!
  * \brief Check if scripts for a given app are already loaded.
- * Version may be -1, if any version is okay, or 0-255 for a specific version. 
+ * Version may be -1, if any version is okay, or 0-255 for a specific version.
  * \param chan Channel to test for loaded app
  * \param app Four character app name (must be unique to your application)
  * \param ver optional version number
@@ -168,22 +161,21 @@
  * \retval -1 on hangup
  * \retval 1 if script already loaded.
  */
-extern int (*ast_adsi_load_session)(struct ast_channel *chan, unsigned char *app, int ver, int data);
-extern int (*ast_adsi_unload_session)(struct ast_channel *chan);
+AST_OPTIONAL_API(int, ast_adsi_load_session, (struct ast_channel *chan, unsigned char *app, int ver, int data), { return 0; });
+AST_OPTIONAL_API(int, ast_adsi_unload_session, (struct ast_channel *chan), { return 0; });
 
 /* ADSI Layer 2 transmission functions */
-extern int (*ast_adsi_transmit_messages)(struct ast_channel *chan, unsigned char **msg, int *msglen, int *msgtype);
-extern int (*ast_adsi_transmit_message)(struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype);
-extern int (*ast_adsi_transmit_message_full)(struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype, int dowait);
-/*! Read some encoded DTMF data. 
+AST_OPTIONAL_API(int, ast_adsi_transmit_message, (struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype), { return 0; });
+AST_OPTIONAL_API(int, ast_adsi_transmit_message_full, (struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype, int dowait), { return 0; });
+/*! Read some encoded DTMF data.
  * Returns number of bytes received
  */
-extern int (*ast_adsi_read_encoded_dtmf)(struct ast_channel *chan, unsigned char *buf, int maxlen);
+AST_OPTIONAL_API(int, ast_adsi_read_encoded_dtmf, (struct ast_channel *chan, unsigned char *buf, int maxlen), { return 0; });
 
 /* ADSI Layer 3 creation functions */
 
-/*! 
- * \brief Connects an ADSI Display Session 
+/*!
+ * \brief Connects an ADSI Display Session
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param fdn Optional 4 byte Feature Download Number (for loading soft keys)
  * \param ver Optional version number (0-255, or -1 to omit)
@@ -192,25 +184,25 @@
  * \retval -1 on error.
  */
 
-extern int (*ast_adsi_connect_session)(unsigned char *buf, unsigned char *fdn, int ver);
-
-/*! Build Query CPE ID of equipment. 
+AST_OPTIONAL_API(int, ast_adsi_connect_session, (unsigned char *buf, unsigned char *fdn, int ver), { return 0; });
+
+/*! Build Query CPE ID of equipment.
  *  Returns number of bytes added to message
  */
-extern int (*ast_adsi_query_cpeid)(unsigned char *buf);
-extern int (*ast_adsi_query_cpeinfo)(unsigned char *buf);
-
-/*! Get CPE ID from an attached ADSI compatible CPE. 
+AST_OPTIONAL_API(int, ast_adsi_query_cpeid, (unsigned char *buf), { return 0; });
+AST_OPTIONAL_API(int, ast_adsi_query_cpeinfo, (unsigned char *buf), { return 0; });
+
+/*! Get CPE ID from an attached ADSI compatible CPE.
  * Returns 1 on success, storing 4 bytes of CPE ID at buf
  * or -1 on hangup, or 0 if there was no hangup but it failed to find the
  * device ID.  Returns to voice mode if "voice" is non-zero.
  */
-extern int (*ast_adsi_get_cpeid)(struct ast_channel *chan, unsigned char *cpeid, int voice);
-
-extern int (*ast_adsi_get_cpeinfo)(struct ast_channel *chan, int *width, int *height, int *buttons, int voice);
-
-/*! 
- * \brief Begin an ADSI script download 
+AST_OPTIONAL_API(int, ast_adsi_get_cpeid, (struct ast_channel *chan, unsigned char *cpeid, int voice), { return 0; });
+
+AST_OPTIONAL_API(int, ast_adsi_get_cpeinfo, (struct ast_channel *chan, int *width, int *height, int *buttons, int voice), { return 0; });
+
+/*!
+ * \brief Begin an ADSI script download
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param service a 1-18 byte name of the feature
  * \param fdn 4 byte Feature Download Number (for loading soft keys)
@@ -221,38 +213,38 @@
  * \retval -1 on error.
  */
 
-extern int (*ast_adsi_download_connect)(unsigned char *buf, char *service, unsigned char *fdn, unsigned char *sec, int ver);
-
-/*! 
+AST_OPTIONAL_API(int, ast_adsi_download_connect, (unsigned char *buf, char *service, unsigned char *fdn, unsigned char *sec, int ver), { return 0; });
+
+/*!
  * \brief Disconnects a running session.
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  *
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_disconnect_session)(unsigned char *buf);
-
-/*! 
- * \brief Disconnects (and hopefully saves) a downloaded script 
- * \param buf Character buffer to create parameter in (must have at least 256 free)
- *
- * \retval number of bytes added to buffer
- * \retval -1 on error.
- */
-extern int (*ast_adsi_download_disconnect)(unsigned char *buf);
-
-/*! 
+AST_OPTIONAL_API(int, ast_adsi_disconnect_session, (unsigned char *buf), { return 0; });
+
+/*!
+ * \brief Disconnects (and hopefully saves) a downloaded script
+ * \param buf Character buffer to create parameter in (must have at least 256 free)
+ *
+ * \retval number of bytes added to buffer
+ * \retval -1 on error.
+ */
+AST_OPTIONAL_API(int, ast_adsi_download_disconnect, (unsigned char *buf), { return 0; });
+
+/*!
  * \brief Puts CPE in data mode.
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  *
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_data_mode)(unsigned char *buf);
-extern int (*ast_adsi_clear_soft_keys)(unsigned char *buf);
-extern int (*ast_adsi_clear_screen)(unsigned char *buf);
-
-/*! 
+AST_OPTIONAL_API(int, ast_adsi_data_mode, (unsigned char *buf), { return 0; });
+AST_OPTIONAL_API(int, ast_adsi_clear_soft_keys, (unsigned char *buf), { return 0; });
+AST_OPTIONAL_API(int, ast_adsi_clear_screen, (unsigned char *buf), { return 0; });
+
+/*!
  * \brief Puts CPE in voice mode.
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param when (a time in seconds) to make the switch
@@ -260,15 +252,15 @@
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_voice_mode)(unsigned char *buf, int when);
-
-/*! 
- * \brief Returns non-zero if Channel does or might support ADSI 
+AST_OPTIONAL_API(int, ast_adsi_voice_mode, (unsigned char *buf, int when), { return 0; });
+
+/*!
+ * \brief Returns non-zero if Channel does or might support ADSI
  * \param chan Channel to check
  */
-extern int (*ast_adsi_available)(struct ast_channel *chan);
-
-/*! 
+AST_OPTIONAL_API(int, ast_adsi_available, (struct ast_channel *chan), { return 0; });
+
+/*!
  * \brief Loads a line of info into the display.
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param page Page to load (ADSI_COMM_PAGE or ADSI_INFO_PAGE)
@@ -282,10 +274,10 @@
  * \retval -1 on error.
  */
 
-extern int (*ast_adsi_display)(unsigned char *buf, int page, int line, int just, int wrap, char *col1, char *col2);
-
-/*! 
- * \brief Sets the current line and page. 
+AST_OPTIONAL_API(int, ast_adsi_display, (unsigned char *buf, int page, int line, int just, int wrap, char *col1, char *col2), { return 0; });
+
+/*!
+ * \brief Sets the current line and page.
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param page Which page (ADSI_COMM_PAGE or ADSI_INFO_PAGE)
  * \param line Line number (1-33 for info page, 1-4 for comm page)
@@ -294,9 +286,9 @@
  * \retval -1 on error.
  */
 
-extern int (*ast_adsi_set_line)(unsigned char *buf, int page, int line);
-
-/*! 
+AST_OPTIONAL_API(int, ast_adsi_set_line, (unsigned char *buf, int page, int line), { return 0; });
+
+/*!
  * \brief Creates "load soft key" parameters
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param key Key code from 2 to 33, for which key we are loading
@@ -308,10 +300,10 @@
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_load_soft_key)(unsigned char *buf, int key, const char *llabel, const char *slabel, char *ret, int data);
-
-/*! 
- * \brief Set which soft keys should be displayed 
+AST_OPTIONAL_API(int, ast_adsi_load_soft_key, (unsigned char *buf, int key, const char *llabel, const char *slabel, char *ret, int data), { return 0; });
+
+/*!
+ * \brief Set which soft keys should be displayed
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param keys Array of 8 unsigned chars with the key numbers, may be OR'd with ADSI_KEY_HILITE
  *             But remember, the last two keys aren't real keys, they're for scrolling
@@ -319,10 +311,10 @@
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_set_keys)(unsigned char *buf, unsigned char *keys);
-
-/*! 
- * \brief Set input information 
+AST_OPTIONAL_API(int, ast_adsi_set_keys, (unsigned char *buf, unsigned char *keys), { return 0; });
+
+/*!
+ * \brief Set input information
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param page Which page to input on (ADSI_COMM_PAGE or ADSI_INFO_PAGE)
  * \param line Line number to input on
@@ -333,10 +325,10 @@
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_input_control)(unsigned char *buf, int page, int line, int display, int format, int just);
-
-/*! 
- * \brief Set input format 
+AST_OPTIONAL_API(int, ast_adsi_input_control, (unsigned char *buf, int page, int line, int display, int format, int just), { return 0; });
+
+/*!
+ * \brief Set input format
  * \param buf Character buffer to create parameter in (must have at least 256 free)
  * \param num Which format we are setting
  * \param dir Which direction (ADSI_DIR_FROM_LEFT or ADSI_DIR_FROM_RIGHT)
@@ -347,7 +339,7 @@
  * \retval number of bytes added to buffer
  * \retval -1 on error.
  */
-extern int (*ast_adsi_input_format)(unsigned char *buf, int num, int dir, int wrap, char *format1, char *format2);
+AST_OPTIONAL_API(int, ast_adsi_input_format, (unsigned char *buf, int num, int dir, int wrap, char *format1, char *format2), { return 0; });
 
 #endif /* _ASTERISK_ADSI_H */
 

Modified: team/tilghman/kill_stubs/include/asterisk/crypto.h
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/kill_stubs/include/asterisk/crypto.h?view=diff&rev=274726&r1=274725&r2=274726
==============================================================================
--- team/tilghman/kill_stubs/include/asterisk/crypto.h (original)
+++ team/tilghman/kill_stubs/include/asterisk/crypto.h Wed Jul  7 16:53:29 2010
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2010, Digium, Inc.
  *
  * Mark Spencer <markster at digium.com>
  *
@@ -27,12 +27,14 @@
 extern "C" {
 #endif
 
+#include "asterisk/optional_api.h"
+
 #define AST_KEY_PUBLIC	(1 << 0)
 #define AST_KEY_PRIVATE	(1 << 1)
 
 struct ast_key;
 
-/*! 
+/*!
  * \brief Retrieve a key
  * \param name of the key we are retrieving
  * \param int type of key (AST_KEY_PUBLIC or AST_KEY_PRIVATE)
@@ -40,9 +42,9 @@
  * \retval the key on success.
  * \retval NULL on failure.
  */
-extern struct ast_key *(*ast_key_get)(const char *key, int type);
+AST_OPTIONAL_API(struct ast_key *, ast_key_get, (const char *key, int type), { return NULL; });
 
-/*! 
+/*!
  * \brief Check the authenticity of a message signature using a given public key
  * \param key a public key to use to verify
  * \param msg the message that has been signed
@@ -52,9 +54,9 @@
  * \retval -1 otherwise.
  *
  */
-extern int (*ast_check_signature)(struct ast_key *key, const char *msg, const char *sig);
+AST_OPTIONAL_API(int, ast_check_signature, (struct ast_key *key, const char *msg, const char *sig), { return -1; });
 
-/*! 
+/*!
  * \brief Check the authenticity of a message signature using a given public key
  * \param key a public key to use to verify
  * \param msg the message that has been signed
@@ -64,7 +66,7 @@
  * \retval -1 otherwise.
  *
  */
-extern int (*ast_check_signature_bin)(struct ast_key *key, const char *msg, int msglen, const unsigned char *sig);
+AST_OPTIONAL_API(int, ast_check_signature_bin, (struct ast_key *key, const char *msg, int msglen, const unsigned char *sig), { return -1; });
 
 /*!
  * \brief Sign a message signature using a given private key
@@ -77,7 +79,7 @@
  * \retval -1 on failure.
  *
  */
-extern int (*ast_sign)(struct ast_key *key, char *msg, char *sig);
+AST_OPTIONAL_API(int, ast_sign, (struct ast_key *key, char *msg, char *sig), { return -1; });
 
 /*!
  * \brief Sign a message signature using a given private key
@@ -90,7 +92,7 @@
  * \retval -1 on failure.
  *
  */
-extern int (*ast_sign_bin)(struct ast_key *key, const char *msg, int msglen, unsigned char *sig);
+AST_OPTIONAL_API(int, ast_sign_bin, (struct ast_key *key, const char *msg, int msglen, unsigned char *sig), { return -1; });
 
 /*!
  * \brief Encrypt a message using a given private key
@@ -104,7 +106,7 @@
  * \retval -1 on failure.
  *
  */
-extern int (*ast_encrypt_bin)(unsigned char *dst, const unsigned char *src, int srclen, struct ast_key *key);
+AST_OPTIONAL_API(int, ast_encrypt_bin, (unsigned char *dst, const unsigned char *src, int srclen, struct ast_key *key), { return -1; });
 
 /*!
  * \brief Decrypt a message using a given private key
@@ -118,7 +120,10 @@
  * \retval -1 on failure.
  *
  */
-extern int (*ast_decrypt_bin)(unsigned char *dst, const unsigned char *src, int srclen, struct ast_key *key);
+AST_OPTIONAL_API(int, ast_decrypt_bin, (unsigned char *dst, const unsigned char *src, int srclen, struct ast_key *key), { return -1; });
+
+AST_OPTIONAL_API(int, ast_crypto_loaded, (void), { return 0; });
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif

Modified: team/tilghman/kill_stubs/main/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/kill_stubs/main/Makefile?view=diff&rev=274726&r1=274725&r2=274726
==============================================================================
--- team/tilghman/kill_stubs/main/Makefile (original)
+++ team/tilghman/kill_stubs/main/Makefile Wed Jul  7 16:53:29 2010
@@ -92,7 +92,7 @@
 endif
 
 ifeq ($(GNU_LD),1)
-ASTLINK+=-Wl,--version-script,asterisk.exports
+ASTLINK+=-Wl,--version-script,asterisk.exports,--dynamic-list,asterisk.dynamics
 endif
 
 CHECK_SUBDIR:	# do nothing, just make sure that we recurse in the subdir/

Modified: team/tilghman/kill_stubs/main/asterisk.dynamics
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/kill_stubs/main/asterisk.dynamics?view=diff&rev=274726&r1=274725&r2=274726
==============================================================================
--- team/tilghman/kill_stubs/main/asterisk.dynamics (original)
+++ team/tilghman/kill_stubs/main/asterisk.dynamics Wed Jul  7 16:53:29 2010
@@ -1,6 +1,14 @@
 {
-	ast_agi_*;
-	ast_pktccops_*;
-	ast_smdi_*;
-	ast_monitor_*;
+	*ast_adsi_*;
+	*ast_agi_*;
+	*ast_pktccops_*;
+	*ast_smdi_*;
+	*ast_monitor_*;
+	*ast_key_get;
+	*ast_check_signature;
+	*ast_check_signature_bin;
+	*ast_sign;
+	*ast_sign_bin;
+	*ast_encrypt_bin;
+	*ast_decrypt_bin;
 };

Modified: team/tilghman/kill_stubs/res/res_adsi.c
URL: http://svnview.digium.com/svn/asterisk/team/tilghman/kill_stubs/res/res_adsi.c?view=diff&rev=274726&r1=274725&r2=274726
==============================================================================
--- team/tilghman/kill_stubs/res/res_adsi.c (original)
+++ team/tilghman/kill_stubs/res/res_adsi.c Wed Jul  7 16:53:29 2010
@@ -20,9 +20,9 @@
 
 /*! \file
  *
- * \brief ADSI support 
+ * \brief ADSI support
  *
- * \author Mark Spencer <markster at digium.com> 
+ * \author Mark Spencer <markster at digium.com>
  *
  * \note this module is required by app_voicemail and app_getcpeid
  * \todo Move app_getcpeid into this module
@@ -37,6 +37,7 @@
 #include <time.h>
 #include <math.h>
 
+#define AST_API_MODULE
 #include "asterisk/adsi.h"
 #include "asterisk/ulaw.h"
 #include "asterisk/alaw.h"
@@ -73,20 +74,22 @@
 	/* Initial carrier (imaginary) */
 	float cr = 1.0, ci = 0.0, scont = 0.0;
 
-	if (msglen > 255)
+	if (msglen > 255) {
 		msglen = 255;
+	}
 
 	/* If first message, Send 150ms of MARK's */
 	if (msgnum == 1) {
-		for (x = 0; x < 150; x++)	/* was 150 */
+		for (x = 0; x < 150; x++) { /* was 150 */
 			PUT_CLID_MARKMS;
+		}
 	}
 
 	/* Put message type */
 	PUT_CLID(msgtype);
 	sum = msgtype;
 
-	/* Put message length (plus one  for the message number) */
+	/* Put message length (plus one for the message number) */
 	PUT_CLID(msglen + 1);
 	sum += msglen + 1;
 
@@ -106,8 +109,9 @@
 #if 0
 	if (last) {
 		/* Put trailing marks */
-		for (x = 0; x < 50; x++)
+		for (x = 0; x < 50; x++) {
 			PUT_CLID_MARKMS;
+		}
 	}
 #endif
 	return bytes;
@@ -128,10 +132,11 @@
 		amt = len;
 
 		/* Send remainder if provided */
-		if (amt > *remain)
+		if (amt > *remain) {
 			amt = *remain;
-		else
+		} else {
 			*remain = *remain - amt;
+		}
 		outf.frametype = AST_FRAME_VOICE;
 		outf.subclass.codec = AST_FORMAT_ULAW;
 		outf.data.ptr = buf;
@@ -146,32 +151,35 @@
 		len -= amt;
 	}
 
-	while(len) {
+	while (len) {
 		amt = len;
 		/* If we don't get anything at all back in a second, forget
 		   about it */
-		if (ast_waitfor(chan, 1000) < 1)
+		if (ast_waitfor(chan, 1000) < 1) {
 			return -1;
+		}
 		/* Detect hangup */
-		if (!(inf = ast_read(chan)))
+		if (!(inf = ast_read(chan))) {
 			return -1;
+		}
 
 		/* Drop any frames that are not voice */
 		if (inf->frametype != AST_FRAME_VOICE) {
 			ast_frfree(inf);
 			continue;
 		}
-		
+
 		if (inf->subclass.codec != AST_FORMAT_ULAW) {
 			ast_log(LOG_WARNING, "Channel not in ulaw?\n");
 			ast_frfree(inf);
 			return -1;
 		}
 		/* Send no more than they sent us */
-		if (amt > inf->datalen)
+		if (amt > inf->datalen) {
 			amt = inf->datalen;
-		else if (remain)
+		} else if (remain) {
 			*remain = inf->datalen - amt;
+		}
 		outf.frametype = AST_FRAME_VOICE;
 		outf.subclass.codec = AST_FORMAT_ULAW;
 		outf.data.ptr = buf;
@@ -204,23 +212,25 @@
 		return -1;
 	}
 
-	while(retries < maxretries) {
+	while (retries < maxretries) {
 		if (!(chan->adsicpe & ADSI_FLAG_DATAMODE)) {
 			/* Generate CAS (no SAS) */
 			ast_gen_cas(buf, 0, 680, AST_FORMAT_ULAW);
-		
+
 			/* Send CAS */
-			if (adsi_careful_send(chan, buf, 680, NULL))
+			if (adsi_careful_send(chan, buf, 680, NULL)) {
 				ast_log(LOG_WARNING, "Unable to send CAS\n");
+			}
 
 			/* Wait For DTMF result */
 			waittime = 500;
-			for(;;) {
+			for (;;) {
 				if (((res = ast_waitfor(chan, waittime)) < 1)) {
 					/* Didn't get back DTMF A in time */
 					ast_debug(1, "No ADSI CPE detected (%d)\n", res);
-					if (!chan->adsicpe)
+					if (!chan->adsicpe) {
 						chan->adsicpe = AST_ADSI_UNAVAILABLE;
+					}
 					errno = ENOSYS;
 					return -1;
 				}
@@ -232,16 +242,19 @@
 				if (f->frametype == AST_FRAME_DTMF) {
 					if (f->subclass.integer == 'A') {
 						/* Okay, this is an ADSI CPE.  Note this for future reference, too */
-						if (!chan->adsicpe)
+						if (!chan->adsicpe) {
 							chan->adsicpe = AST_ADSI_AVAILABLE;
+						}
 						break;
 					} else {
-						if (f->subclass.integer == 'D')
+						if (f->subclass.integer == 'D') {
 							ast_debug(1, "Off-hook capable CPE only, not ADSI\n");
-						else
+						} else {
 							ast_log(LOG_WARNING, "Unknown ADSI response '%c'\n", f->subclass.integer);
-						if (!chan->adsicpe)
+						}
+						if (!chan->adsicpe) {
 							chan->adsicpe = AST_ADSI_UNAVAILABLE;
+						}
 						errno =	ENOSYS;
 						ast_frfree(f);
 						return -1;
@@ -266,36 +279,39 @@
 				return -1;
 			}
 			ast_debug(1, "Message %d, of %d input bytes, %d output bytes\n", x + 1, msglen[x], res);
-			pos += res; 
+			pos += res;
 			x++;
 		}
 
 
 		rem = 0;
-		res = adsi_careful_send(chan, buf, pos, &rem); 
-		if (!def)
+		res = adsi_careful_send(chan, buf, pos, &rem);
+		if (!def) {
 			ast_channel_undefer_dtmf(chan);
-		if (res)
+		}
+		if (res) {
 			return -1;
+		}
 
 		ast_debug(1, "Sent total spill of %d bytes\n", pos);
 
 		memset(ack, 0, sizeof(ack));
 		/* Get real result and check for hangup */
-		if ((res = ast_readstring(chan, ack, 2, 1000, 1000, "")) < 0)
+		if ((res = ast_readstring(chan, ack, 2, 1000, 1000, "")) < 0) {
 			return -1;
+		}
 		if (ack[0] == 'D') {
 			ast_debug(1, "Acked up to message %d\n", atoi(ack + 1)); start += atoi(ack + 1);
-			if (start >= x)
+			if (start >= x) {
 				break;
-			else {
+			} else {
 				retries++;
 				ast_debug(1, "Retransmitting (%d), from %d\n", retries, start + 1);
 			}
 		} else {
 			retries++;
 			ast_log(LOG_WARNING, "Unexpected response to ack: %s (retry %d)\n", ack, retries);
-		} 
+		}
 	}
 	if (retries >= maxretries) {
 		ast_log(LOG_WARNING, "Maximum ADSI Retries (%d) exceeded\n", maxretries);
@@ -303,10 +319,9 @@
 		return -1;
 	}
 	return 0;
-	
-}
-
-static int _ast_adsi_begin_download(struct ast_channel *chan, char *service, unsigned char *fdn, unsigned char *sec, int version)
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_begin_download)(struct ast_channel *chan, char *service, unsigned char *fdn, unsigned char *sec, int version)
 {
 	int bytes = 0;
 	unsigned char buf[256];
@@ -315,30 +330,34 @@
 	/* Setup the resident soft key stuff, a piece at a time */
 	/* Upload what scripts we can for voicemail ahead of time */
 	bytes += ast_adsi_download_connect(buf + bytes, service, fdn, sec, version);
-	if (ast_adsi_transmit_message_full(chan, buf, bytes, ADSI_MSG_DOWNLOAD, 0))
-		return -1;
-	if (ast_readstring(chan, ack, 1, 10000, 10000, ""))
-		return -1;
-	if (ack[0] == 'B')
+	if (ast_adsi_transmit_message_full(chan, buf, bytes, ADSI_MSG_DOWNLOAD, 0)) {
+		return -1;
+	}
+	if (ast_readstring(chan, ack, 1, 10000, 10000, "")) {
+		return -1;
+	}
+	if (ack[0] == 'B') {
 		return 0;
+	}
 	ast_debug(1, "Download was denied by CPE\n");
 	return -1;
 }
 
-static int _ast_adsi_end_download(struct ast_channel *chan)
+int AST_OPTIONAL_API_NAME(ast_adsi_end_download)(struct ast_channel *chan)
 {
 	int bytes = 0;
 	unsigned char buf[256];
 
-        /* Setup the resident soft key stuff, a piece at a time */
-        /* Upload what scripts we can for voicemail ahead of time */
-        bytes += ast_adsi_download_disconnect(buf + bytes);
-	if (ast_adsi_transmit_message_full(chan, buf, bytes, ADSI_MSG_DOWNLOAD, 0))
-		return -1;
+	/* Setup the resident soft key stuff, a piece at a time */
+	/* Upload what scripts we can for voicemail ahead of time */
+	bytes += ast_adsi_download_disconnect(buf + bytes);
+	if (ast_adsi_transmit_message_full(chan, buf, bytes, ADSI_MSG_DOWNLOAD, 0)) {
+		return -1;
+	}
 	return 0;
 }
 
-static int _ast_adsi_transmit_message_full(struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype, int dowait)
+int AST_OPTIONAL_API_NAME(ast_adsi_transmit_message_full)(struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype, int dowait)
 {
 	unsigned char *msgs[5] = { NULL, NULL, NULL, NULL, NULL };
 	int msglens[5], msgtypes[5], newdatamode = (chan->adsicpe & ADSI_FLAG_DATAMODE), res, x, writeformat = chan->writeformat, readformat = chan->readformat, waitforswitch = 0;
@@ -349,7 +368,7 @@
 			waitforswitch++;
 			newdatamode = ADSI_FLAG_DATAMODE;
 		}
-		
+
 		if (msg[x] == ADSI_SWITCH_TO_VOICE) {
 			ast_debug(1, "Switch to voice is sent!\n");
 			waitforswitch++;
@@ -376,8 +395,9 @@
 	if (ast_set_read_format(chan, AST_FORMAT_ULAW)) {
 		ast_log(LOG_WARNING, "Unable to set read format to ULAW\n");
 		if (writeformat) {
-			if (ast_set_write_format(chan, writeformat)) 
+			if (ast_set_write_format(chan, writeformat)) {
 				ast_log(LOG_WARNING, "Unable to restore write format to %d\n", writeformat);
+			}
 		}
 		return -1;
 	}
@@ -385,26 +405,30 @@
 
 	if (dowait) {
 		ast_debug(1, "Wait for switch is '%d'\n", waitforswitch);
-		while (waitforswitch-- && ((res = ast_waitfordigit(chan, 1000)) > 0)) { 
-			res = 0; 
+		while (waitforswitch-- && ((res = ast_waitfordigit(chan, 1000)) > 0)) {
+			res = 0;
 			ast_debug(1, "Waiting for 'B'...\n");
 		}
 	}
-	
-	if (!res)
+
+	if (!res) {
 		chan->adsicpe = (chan->adsicpe & ~ADSI_FLAG_DATAMODE) | newdatamode;
-
-	if (writeformat)
+	}
+
+	if (writeformat) {
 		ast_set_write_format(chan, writeformat);
-	if (readformat)
+	}
+	if (readformat) {
 		ast_set_read_format(chan, readformat);
-
-	if (!res)
+	}
+
+	if (!res) {
 		res = ast_safe_sleep(chan, 100 );
+	}
 	return res;
 }
 
-static int _ast_adsi_transmit_message(struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype)
+int AST_OPTIONAL_API_NAME(ast_adsi_transmit_message)(struct ast_channel *chan, unsigned char *msg, int msglen, int msgtype)
 {
 	return ast_adsi_transmit_message_full(chan, msg, msglen, msgtype, 1);
 }
@@ -420,13 +444,14 @@
 	return x;
 }
 
-static int _ast_adsi_load_soft_key(unsigned char *buf, int key, const char *llabel, const char *slabel, char *ret, int data)
+int AST_OPTIONAL_API_NAME(ast_adsi_load_soft_key)(unsigned char *buf, int key, const char *llabel, const char *slabel, char *ret, int data)
 {
 	int bytes = 0;
 
 	/* Abort if invalid key specified */
-	if ((key < 2) || (key > 33))
-		return -1;
+	if ((key < 2) || (key > 33)) {
+		return -1;
+	}
 
 	buf[bytes++] = ADSI_LOAD_SOFTKEY;
 	/* Reserve for length */
@@ -448,8 +473,9 @@
 	if (ret) {
 		/* Place delimiter */
 		buf[bytes++] = 0xff;
-		if (data)
+		if (data) {
 			buf[bytes++] = ADSI_SWITCH_TO_DATA2;
+		}
 		/* Carefully copy return string */
 		bytes += ccopy(buf + bytes, (const unsigned char *)ret, 20);
 
@@ -457,10 +483,9 @@
 	/* Replace parameter length */
 	buf[1] = bytes - 2;
 	return bytes;
-	
-}
-
-static int _ast_adsi_connect_session(unsigned char *buf, unsigned char *fdn, int ver)
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_connect_session)(unsigned char *buf, unsigned char *fdn, int ver)
 {
 	int bytes = 0, x;
 
@@ -471,18 +496,20 @@
 	bytes++;
 
 	if (fdn) {
-		for (x = 0; x < 4; x++)
+		for (x = 0; x < 4; x++) {
 			buf[bytes++] = fdn[x];
-		if (ver > -1)
+		}
+		if (ver > -1) {
 			buf[bytes++] = ver & 0xff;
-	}
-
-	buf[1] = bytes - 2;
-	return bytes;
-
-}
-
-static int _ast_adsi_download_connect(unsigned char *buf, char *service,  unsigned char *fdn, unsigned char *sec, int ver)
+		}
+	}
+
+	buf[1] = bytes - 2;
+	return bytes;
+
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_download_connect)(unsigned char *buf, char *service,  unsigned char *fdn, unsigned char *sec, int ver)
 {
 	int bytes = 0, x;
 
@@ -497,12 +524,14 @@
 
 	/* Delimiter */
 	buf[bytes++] = 0xff;
-	
-	for (x = 0; x < 4; x++)
+
+	for (x = 0; x < 4; x++) {
 		buf[bytes++] = fdn[x];
-
-	for (x = 0; x < 4; x++)
+	}
+
+	for (x = 0; x < 4; x++) {
 		buf[bytes++] = sec[x];
+	}
 
 	buf[bytes++] = ver & 0xff;
 
@@ -512,7 +541,7 @@
 
 }
 
-static int _ast_adsi_disconnect_session(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_disconnect_session)(unsigned char *buf)
 {
 	int bytes = 0;
 
@@ -527,7 +556,7 @@
 
 }
 
-static int _ast_adsi_query_cpeid(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_query_cpeid)(unsigned char *buf)
 {
 	int bytes = 0;
 	buf[bytes++] = ADSI_QUERY_CPEID;
@@ -537,7 +566,7 @@
 	return bytes;
 }
 
-static int _ast_adsi_query_cpeinfo(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_query_cpeinfo)(unsigned char *buf)
 {
 	int bytes = 0;
 	buf[bytes++] = ADSI_QUERY_CONFIG;
@@ -547,27 +576,30 @@
 	return bytes;
 }
 
-static int _ast_adsi_read_encoded_dtmf(struct ast_channel *chan, unsigned char *buf, int maxlen)
+int AST_OPTIONAL_API_NAME(ast_adsi_read_encoded_dtmf)(struct ast_channel *chan, unsigned char *buf, int maxlen)
 {
 	int bytes = 0, res, gotstar = 0, pos = 0;
 	unsigned char current = 0;
 
 	memset(buf, 0, sizeof(buf));
 
-	while(bytes <= maxlen) {
+	while (bytes <= maxlen) {
 		/* Wait up to a second for a digit */
-		if (!(res = ast_waitfordigit(chan, 1000)))
+		if (!(res = ast_waitfordigit(chan, 1000))) {
 			break;
+		}
 		if (res == '*') {
-			gotstar = 1;	
+			gotstar = 1;
 			continue;
 		}
 		/* Ignore anything other than a digit */
-		if ((res < '0') || (res > '9'))
+		if ((res < '0') || (res > '9')) {
 			continue;
+		}
 		res -= '0';
-		if (gotstar)
+		if (gotstar) {
 			res += 9;
+		}
 		if (pos)  {
 			pos = 0;
 			buf[bytes++] = (res << 4) | current;
@@ -581,7 +613,7 @@
 	return bytes;
 }
 
-static int _ast_adsi_get_cpeid(struct ast_channel *chan, unsigned char *cpeid, int voice)
+int AST_OPTIONAL_API_NAME(ast_adsi_get_cpeid)(struct ast_channel *chan, unsigned char *cpeid, int voice)
 {
 	unsigned char buf[256] = "";
 	int bytes = 0, res;
@@ -612,7 +644,7 @@
 	return res;
 }
 
-static int _ast_adsi_get_cpeinfo(struct ast_channel *chan, int *width, int *height, int *buttons, int voice)
+int AST_OPTIONAL_API_NAME(ast_adsi_get_cpeinfo)(struct ast_channel *chan, int *width, int *height, int *buttons, int voice)
 {
 	unsigned char buf[256] = "";
 	int bytes = 0, res;
@@ -625,43 +657,49 @@
 	ast_adsi_transmit_message_full(chan, buf, bytes, ADSI_MSG_DISPLAY, 0);
 
 	/* Get width */
-	if ((res = ast_readstring(chan, (char *)buf, 2, 1000, 500, "")) < 0)
+	if ((res = ast_readstring(chan, (char *) buf, 2, 1000, 500, "")) < 0) {
 		return res;
-	if (strlen((char *)buf) != 2) {
+	}
+	if (strlen((char *) buf) != 2) {
 		ast_log(LOG_WARNING, "Got %d bytes of width, expecting 2\n", res);
 		res = 0;
 	} else {
 		res = 1;
 	}
-	if (width)
-		*width = atoi((char *)buf);
+	if (width) {
+		*width = atoi((char *) buf);
+	}
 	/* Get height */
 	memset(buf, 0, sizeof(buf));
 	if (res) {
-		if ((res = ast_readstring(chan, (char *)buf, 2, 1000, 500, "")) < 0)
+		if ((res = ast_readstring(chan, (char *) buf, 2, 1000, 500, "")) < 0) {
 			return res;
-		if (strlen((char *)buf) != 2) {
+		}
+		if (strlen((char *) buf) != 2) {
 			ast_log(LOG_WARNING, "Got %d bytes of height, expecting 2\n", res);
 			res = 0;
 		} else {
 			res = 1;
-		}	
-		if (height)
-			*height= atoi((char *)buf);
+		}
+		if (height) {
+			*height = atoi((char *) buf);
+		}
 	}
 	/* Get buttons */
 	memset(buf, 0, sizeof(buf));
 	if (res) {
-		if ((res = ast_readstring(chan, (char *)buf, 1, 1000, 500, "")) < 0)
+		if ((res = ast_readstring(chan, (char *) buf, 1, 1000, 500, "")) < 0) {
 			return res;
-		if (strlen((char *)buf) != 1) {
+		}
+		if (strlen((char *) buf) != 1) {
 			ast_log(LOG_WARNING, "Got %d bytes of buttons, expecting 1\n", res);
 			res = 0;
 		} else {
 			res = 1;
-		}	
-		if (buttons)
-			*buttons = atoi((char *)buf);
+		}
+		if (buttons) {
+			*buttons = atoi((char *) buf);
+		}
 	}
 	if (voice) {
 		bytes = 0;
@@ -673,7 +711,7 @@
 	return res;
 }
 
-static int _ast_adsi_data_mode(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_data_mode)(unsigned char *buf)
 {
 	int bytes = 0;
 
@@ -688,7 +726,7 @@
 
 }
 
-static int _ast_adsi_clear_soft_keys(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_clear_soft_keys)(unsigned char *buf)
 {
 	int bytes = 0;
 
@@ -703,7 +741,7 @@
 
 }
 
-static int _ast_adsi_clear_screen(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_clear_screen)(unsigned char *buf)
 {
 	int bytes = 0;
 
@@ -718,7 +756,7 @@
 
 }
 
-static int _ast_adsi_voice_mode(unsigned char *buf, int when)
+int AST_OPTIONAL_API_NAME(ast_adsi_voice_mode)(unsigned char *buf, int when)
 {
 	int bytes = 0;
 
@@ -735,16 +773,17 @@
 
 }
 
-static int _ast_adsi_available(struct ast_channel *chan)
+int AST_OPTIONAL_API_NAME(ast_adsi_available)(struct ast_channel *chan)
 {
 	int cpe = chan->adsicpe & 0xff;
 	if ((cpe == AST_ADSI_AVAILABLE) ||
-	    (cpe == AST_ADSI_UNKNOWN))
+	    (cpe == AST_ADSI_UNKNOWN)) {
 		return 1;
+	}
 	return 0;
 }
 
-static int _ast_adsi_download_disconnect(unsigned char *buf)
+int AST_OPTIONAL_API_NAME(ast_adsi_download_disconnect)(unsigned char *buf)
 {
 	int bytes = 0;
 
@@ -759,7 +798,7 @@
 
 }
 
-static int _ast_adsi_display(unsigned char *buf, int page, int line, int just, int wrap, 
+int AST_OPTIONAL_API_NAME(ast_adsi_display)(unsigned char *buf, int page, int line, int just, int wrap,
 		 char *col1, char *col2)
 {
 	int bytes = 0;
@@ -772,11 +811,12 @@
 		if (line > 33) return -1;
 	}
 
-	if (line < 1)
-		return -1;
+	if (line < 1) {
+		return -1;
+	}
 	/* Parameter type */
 	buf[bytes++] = ADSI_LOAD_VIRTUAL_DISP;
-	
+
 	/* Reserve space for size */
 	bytes++;
 
@@ -794,18 +834,18 @@
 
 	/* Delimiter */
 	buf[bytes++] = 0xff;
-	
+
 	/* Secondary column */
 	bytes += ccopy(buf + bytes, (unsigned char *)col2, 20);
 
 	/* Update length */
 	buf[1] = bytes - 2;
-	
-	return bytes;
-
-}
-
-static int _ast_adsi_input_control(unsigned char *buf, int page, int line, int display, int format, int just)
+
+	return bytes;
+
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_input_control)(unsigned char *buf, int page, int line, int display, int format, int just)
 {
 	int bytes = 0;
 
@@ -815,39 +855,40 @@
 		if (line > 33) return -1;
 	}
 
-	if (line < 1)
-		return -1;
+	if (line < 1) {
+		return -1;
+	}
 
 	buf[bytes++] = ADSI_INPUT_CONTROL;
 	bytes++;
 	buf[bytes++] = ((page & 1) << 7) | (line & 0x3f);
 	buf[bytes++] = ((display & 1) << 7) | ((just & 0x3) << 4) | (format & 0x7);
-	
-	buf[1] = bytes - 2;
-	return bytes;
-
-}
-
-static int _ast_adsi_input_format(unsigned char *buf, int num, int dir, int wrap, char *format1, char *format2)
-{
-	int bytes = 0;
-
-	if (!strlen((char *)format1))
-		return -1;
+
+	buf[1] = bytes - 2;
+	return bytes;
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_input_format)(unsigned char *buf, int num, int dir, int wrap, char *format1, char *format2)
+{
+	int bytes = 0;
+
+	if (ast_strlen_zero((char *) format1)) {
+		return -1;
+	}
 
 	buf[bytes++] = ADSI_INPUT_FORMAT;
 	bytes++;
 	buf[bytes++] = ((dir & 1) << 7) | ((wrap & 1) << 6) | (num & 0x7);
-	bytes += ccopy(buf + bytes, (unsigned char *)format1, 20);
+	bytes += ccopy(buf + bytes, (unsigned char *) format1, 20);
 	buf[bytes++] = 0xff;
-	if (format2 && strlen((char *)format2)) {
-		bytes += ccopy(buf + bytes, (unsigned char *)format2, 20);
-	}
-	buf[1] = bytes - 2;
-	return bytes;
-}
-
-static int _ast_adsi_set_keys(unsigned char *buf, unsigned char *keys)
+	if (!ast_strlen_zero(format2)) {
+		bytes += ccopy(buf + bytes, (unsigned char *) format2, 20);
+	}
+	buf[1] = bytes - 2;
+	return bytes;
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_set_keys)(unsigned char *buf, unsigned char *keys)
 {
 	int bytes = 0, x;
 
@@ -856,13 +897,14 @@
 	/* Space for size */
 	bytes++;
 	/* Key definitions */
-	for (x = 0; x < 6; x++)
+	for (x = 0; x < 6; x++) {
 		buf[bytes++] = (keys[x] & 0x3f) ? keys[x] : (keys[x] | 0x1);
-	buf[1] = bytes - 2;
-	return bytes;
-}
-
-static int _ast_adsi_set_line(unsigned char *buf, int page, int line)
+	}
+	buf[1] = bytes - 2;
+	return bytes;
+}
+
+int AST_OPTIONAL_API_NAME(ast_adsi_set_line)(unsigned char *buf, int page, int line)
 {
 	int bytes = 0;
 
@@ -874,11 +916,12 @@
 		if (line > 33) return -1;
 	}
 
-	if (line < 1)
-		return -1;
+	if (line < 1) {
+		return -1;
+	}
 	/* Parameter type */
 	buf[bytes++] = ADSI_LINE_CONTROL;
-	
+
 	/* Reserve space for size */
 	bytes++;
 
@@ -887,13 +930,12 @@
 
 	buf[1] = bytes - 2;
 	return bytes;
-
-};
+}
 
 static int total = 0;
 static int speeds = 0;
 
-static int _ast_adsi_channel_restore(struct ast_channel *chan)
+int AST_OPTIONAL_API_NAME(ast_adsi_channel_restore)(struct ast_channel *chan)
 {
 	unsigned char dsp[256] = "", keyd[6] = "";
 	int bytes, x;
@@ -905,8 +947,9 @@
 	/* Prepare key setup messages */
 
 	if (speeds) {
-		for (x = 0; x < speeds; x++)
+		for (x = 0; x < speeds; x++) {
 			keyd[x] = ADSI_SPEED_DIAL + x;
+		}
 		bytes += ast_adsi_set_keys(dsp + bytes, keyd);
 	}
 	ast_adsi_transmit_message_full(chan, dsp, bytes, ADSI_MSG_DISPLAY, 0);
@@ -914,24 +957,27 @@

[... 747 lines stripped ...]



More information about the asterisk-commits mailing list