]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5319 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 17 Apr 2013 20:33:07 +0000 (15:33 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 17 Apr 2013 20:33:07 +0000 (15:33 -0500)
src/include/switch_types.h
src/switch.c
src/switch_core.c
src/switch_xml.c

index 07b5b6da4799b536ace0911240875fedc9b7122a..1666d0a4f1215cc787f2b695225335f6731583fc 100644 (file)
@@ -493,6 +493,13 @@ struct switch_directories {
 typedef struct switch_directories switch_directories;
 SWITCH_DECLARE_DATA extern switch_directories SWITCH_GLOBAL_dirs;
 
+struct switch_filenames {
+    char *conf_name;
+};
+
+typedef struct switch_filenames switch_filenames;
+SWITCH_DECLARE_DATA extern switch_filenames SWITCH_GLOBAL_filenames;
+
 #define SWITCH_MAX_STACKS 16
 #define SWITCH_THREAD_STACKSIZE 240 * 1024
 #define SWITCH_SYSTEM_THREAD_STACKSIZE 8192 * 1024
index 68f6af341dd408125cddd7d1bf78a75d69276112..dbe9cadf02a2b9a6f0adfb22844d2f0661f94c61 100644 (file)
@@ -366,6 +366,7 @@ static const char usage[] =
        "\t-c                     -- output to a console and stay in the foreground\n"
        "\n\tOptions to control locations of files:\n"
        "\t-base [basedir]         -- alternate prefix directory\n"
+       "\t-cfgname [filename]     -- alternate filename for FreeSWITCH main configuration file\n"
        "\t-conf [confdir]         -- alternate directory for FreeSWITCH configuration files\n"
        "\t-log [logdir]           -- alternate directory for logfiles\n"
        "\t-run [rundir]           -- alternate directory for runtime files\n"
@@ -857,6 +858,21 @@ int main(int argc, char *argv[])
                        strcpy(SWITCH_GLOBAL_dirs.sounds_dir, local_argv[x]);
                }
 
+               else if (!strcmp(local_argv[x], "-cfgname")) {
+                       x++;
+                       if (switch_strlen_zero(local_argv[x]) || is_option(local_argv[x])) {
+                               fprintf(stderr, "When using -cfgname you must specify a filename\n");
+                               return 255;
+                       }
+
+                       SWITCH_GLOBAL_filenames.conf_name = (char *) malloc(strlen(local_argv[x]) + 1);
+                       if (!SWITCH_GLOBAL_filenames.conf_name) {
+                               fprintf(stderr, "Allocation error\n");
+                               return 255;
+                       }
+                       strcpy(SWITCH_GLOBAL_filenames.conf_name, local_argv[x]);
+               }
+
                /* Unknown option (always last!) */
                else {
                        fprintf(stderr, "Unknown option '%s', see '%s -help' for a list of valid options\n",
index 64ad73c685c50cd0113b5d6192bf556341cf324e..dfe43e8fcf6daf3b7d056aa7f5cdfc71a44a858f 100644 (file)
@@ -53,6 +53,7 @@
 
 
 SWITCH_DECLARE_DATA switch_directories SWITCH_GLOBAL_dirs = { 0 };
+SWITCH_DECLARE_DATA switch_filenames SWITCH_GLOBAL_filenames = { 0 };
 
 /* The main runtime obj we keep this hidden for ourselves */
 struct switch_runtime runtime = { 0 };
@@ -728,6 +729,10 @@ SWITCH_DECLARE(void) switch_core_set_globals(void)
 #endif
        }
 
+       if (!SWITCH_GLOBAL_filenames.conf_name && (SWITCH_GLOBAL_filenames.conf_name = (char *) malloc(BUFSIZE))) {
+               switch_snprintf(SWITCH_GLOBAL_filenames.conf_name, BUFSIZE, "%s", "freeswitch.xml");
+       }
+
        /* Do this last because it being empty is part of the above logic */
        if (!SWITCH_GLOBAL_dirs.base_dir && (SWITCH_GLOBAL_dirs.base_dir = (char *) malloc(BUFSIZE))) {
                switch_snprintf(SWITCH_GLOBAL_dirs.base_dir, BUFSIZE, "%s", base_dir);
@@ -746,6 +751,8 @@ SWITCH_DECLARE(void) switch_core_set_globals(void)
        switch_assert(SWITCH_GLOBAL_dirs.recordings_dir);
        switch_assert(SWITCH_GLOBAL_dirs.sounds_dir);
        switch_assert(SWITCH_GLOBAL_dirs.temp_dir);
+
+       switch_assert(SWITCH_GLOBAL_filenames.conf_name);
 }
 
 
index 7c47ebebec721d50a2547565c7f685463856ab34..f707ebae375e85e6318af3e620fe14e631c0dc67 100644 (file)
@@ -2167,7 +2167,7 @@ SWITCH_DECLARE_NONSTD(switch_xml_t) __switch_xml_open_root(uint8_t reload, const
                }
        }
 
-       switch_snprintf(path_buf, sizeof(path_buf), "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, "freeswitch.xml");
+       switch_snprintf(path_buf, sizeof(path_buf), "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, SWITCH_GLOBAL_filenames.conf_name);
        if ((new_main = switch_xml_parse_file(path_buf))) {
                *err = switch_xml_error(new_main);
                switch_copy_string(not_so_threadsafe_error_buffer, *err, sizeof(not_so_threadsafe_error_buffer));