From ed6323cb7302b5cda151b19069c081a65925649b Mon Sep 17 00:00:00 2001
From: Mark Michelson <mmichelson@digium.com>
Date: Wed, 23 Jul 2008 19:48:03 +0000
Subject: [PATCH] Merged revisions 133169 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r133169 | mmichelson | 2008-07-23 14:39:47 -0500 (Wed, 23 Jul 2008) | 12 lines

As suggested by seanbright, the PSEUDO_CHAN_LEN in
app_chanspy should be set at load time, not at compile
time, since dahdi_chan_name is determined at load time.

Also changed the next_unique_id_to_use to have the
static qualifier.

Also added the dahdi_chan_name_len variable so that
strlen(dahdi_chan_name) isn't necessary. Thanks to
seanbright for the suggestion.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133171 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_chanspy.c         | 13 +++++++++----
 include/asterisk/options.h |  1 +
 main/asterisk.c            |  2 ++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 2646f56188..7615ad4c8b 100644
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -52,9 +52,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #define AST_NAME_STRLEN 256
 #define NUM_SPYGROUPS 128
 
- /* "DAHDI/pseudo" is twelve characters */
-#define PSEUDO_CHAN_LEN 12
-
 static const char *tdesc = "Listen to a channel, and optionally whisper into it";
 static const char *app_chan = "ChanSpy";
 static const char *desc_chan =
@@ -221,7 +218,14 @@ AST_APP_OPTIONS(spy_opts, {
 	AST_APP_OPTION('d', OPTION_DTMF_SWITCH_MODES),
 });
 
-int next_unique_id_to_use = 0;
+static int next_unique_id_to_use = 0;
+static int PSEUDO_CHAN_LEN;
+
+static void determine_pseudo_chan_len(void) 
+{
+	PSEUDO_CHAN_LEN = dahdi_chan_name_len + strlen("/pseudo");
+}
+
 
 struct chanspy_translation_helper {
 	/* spy data */
@@ -1105,6 +1109,7 @@ static int load_module(void)
 {
 	int res = 0;
 
+	determine_pseudo_chan_len();
 	res |= ast_register_application(app_chan, chanspy_exec, tdesc, desc_chan);
 	res |= ast_register_application(app_ext, extenspy_exec, tdesc, desc_ext);
 
diff --git a/include/asterisk/options.h b/include/asterisk/options.h
index c961d91750..3d6f89ceb1 100644
--- a/include/asterisk/options.h
+++ b/include/asterisk/options.h
@@ -142,6 +142,7 @@ extern pid_t ast_mainpid;
 
 extern char record_cache_dir[AST_CACHE_DIR_LEN];
 extern char dahdi_chan_name[AST_CHANNEL_NAME];
+extern int dahdi_chan_name_len;
 
 extern int ast_language_is_prefix;
 
diff --git a/main/asterisk.c b/main/asterisk.c
index 9cd52efb5a..21b6497738 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -165,6 +165,7 @@ int option_maxfiles;				/*!< Max number of open file handles (files, sockets) */
 long option_minmemfree;				/*!< Minimum amount of free system memory - stop accepting calls if free memory falls below this watermark */
 #endif
 char dahdi_chan_name[AST_CHANNEL_NAME] = "ZAP";
+int dahdi_chan_name_len = 3;
 
 /*! @} */
 
@@ -2794,6 +2795,7 @@ static void ast_readconfig(void)
 		} else if (!strcasecmp(v->name, "dahdichanname")) {
 			if (!strcasecmp(v->value, "yes")) {
 				ast_copy_string(dahdi_chan_name, "DAHDI", sizeof(dahdi_chan_name));
+				dahdi_chan_name_len = 5;
 			}
 		} else if (!strcasecmp(v->name, "entityid")) {
 			struct ast_eid tmp_eid;
-- 
GitLab