From 5e60c62e08d055f11adb7a4bc73e08af668ba7f9 Mon Sep 17 00:00:00 2001
From: Moises Silva <moy@sangoma.com>
Date: Tue, 21 Sep 2010 13:56:11 -0400
Subject: [PATCH] freetdm: set conf and mod directory in runtime

---
 libs/freetdm/mod_freetdm/mod_freetdm.c |  4 ++++
 libs/freetdm/src/ftdm_config.c         | 18 ++++++++++++++++--
 libs/freetdm/src/include/freetdm.h     |  6 ++++++
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c
index b4a40f0bad..e5311468e3 100755
--- a/libs/freetdm/mod_freetdm/mod_freetdm.c
+++ b/libs/freetdm/mod_freetdm/mod_freetdm.c
@@ -4074,6 +4074,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_freetdm_load)
 
 	ftdm_global_set_logger(ftdm_logger);
 
+	ftdm_global_set_mod_directory(SWITCH_GLOBAL_dirs.mod_dir);
+
+	ftdm_global_set_config_directory(SWITCH_GLOBAL_dirs.conf_dir);
+
 	ftdm_cpu_monitor_disable();
 	
 	if (ftdm_global_init() != FTDM_SUCCESS) {
diff --git a/libs/freetdm/src/ftdm_config.c b/libs/freetdm/src/ftdm_config.c
index 291ca33109..1b023e93eb 100644
--- a/libs/freetdm/src/ftdm_config.c
+++ b/libs/freetdm/src/ftdm_config.c
@@ -41,8 +41,22 @@
 #define FTDM_MOD_DIR "." 
 #endif
 
-static char g_ftdm_config_dir[] = FTDM_CONFIG_DIR;
-static char g_ftdm_mod_dir[] = FTDM_MOD_DIR;
+#define FTDM_MAX_CONF_DIR 512
+
+static char g_ftdm_config_dir[FTDM_MAX_CONF_DIR] = FTDM_CONFIG_DIR;
+static char g_ftdm_mod_dir[FTDM_MAX_CONF_DIR] = FTDM_MOD_DIR;
+
+FT_DECLARE(void) ftdm_global_set_mod_directory(const char *path)
+{
+	snprintf(g_ftdm_mod_dir, sizeof(g_ftdm_mod_dir), "%s", path);
+	ftdm_log(FTDM_LOG_DEBUG, "New mod directory: %s\n", g_ftdm_mod_dir);
+}
+
+FT_DECLARE(void) ftdm_global_set_config_directory(const char *path)
+{
+	snprintf(g_ftdm_config_dir, sizeof(g_ftdm_config_dir), "%s", path);
+	ftdm_log(FTDM_LOG_DEBUG, "New config directory: %s\n", g_ftdm_config_dir);
+}
 
 int ftdm_config_open_file(ftdm_config_t *cfg, const char *file_path)
 {
diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h
index 1f50a2ccaa..3b847f821e 100644
--- a/libs/freetdm/src/include/freetdm.h
+++ b/libs/freetdm/src/include/freetdm.h
@@ -1301,6 +1301,12 @@ FT_DECLARE(void) ftdm_global_set_logger(ftdm_logger_t logger);
 /*! \brief Set the default logger level */
 FT_DECLARE(void) ftdm_global_set_default_logger(int level);
 
+/*! \brief Set the directory to look for modules */
+FT_DECLARE(void) ftdm_global_set_mod_directory(const char *path);
+
+/*! \brief Set the directory to look for configs */
+FT_DECLARE(void) ftdm_global_set_config_directory(const char *path);
+
 /*! \brief Check if the FTDM library is initialized and running */
 FT_DECLARE(ftdm_bool_t) ftdm_running(void);