Revision
14891
Author
anthm
Date
2009-09-16 15:46:36 -0500 (Wed, 16 Sep 2009)

Log Message

BOUNTY-9 (Thank you Xpander Communications) [part 2]

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_ivr_async.c (14890 => 14891)


--- freeswitch/trunk/src/switch_ivr_async.c	2009-09-16 20:28:48 UTC (rev 14890)
+++ freeswitch/trunk/src/switch_ivr_async.c	2009-09-16 20:46:36 UTC (rev 14891)
@@ -933,6 +933,32 @@
 	fh->channels = channels;
 	fh->pre_buffer_datalen = SWITCH_DEFAULT_FILE_BUFFER_LEN;
 
+
+	
+	if (!switch_is_file_path(file)) {
+		char *tfile = NULL;
+		char *e;
+		const char *prefix;
+
+		prefix = switch_channel_get_variable(channel, "sound_prefix");
+
+		if (!prefix) {
+			prefix = SWITCH_GLOBAL_dirs.base_dir;
+		}
+
+		if (*file == '[') {
+			tfile = switch_core_session_strdup(session, file);
+			if ((e = switch_find_end_paren(tfile, '[', ']'))) {
+				*e = '\0';
+				file = e + 1;
+			} else {
+				tfile = NULL;
+			}
+		}
+		
+		file = switch_core_session_sprintf(session, "%s%s%s%s", switch_str_nil(tfile), tfile ? "]" : "", prefix, SWITCH_PATH_SEPARATOR, file);
+	}
+	
 	if (switch_core_file_open(fh,
 							  file,
 							  channels,

Modified: freeswitch/trunk/src/switch_ivr_play_say.c (14890 => 14891)


--- freeswitch/trunk/src/switch_ivr_play_say.c	2009-09-16 20:28:48 UTC (rev 14890)
+++ freeswitch/trunk/src/switch_ivr_play_say.c	2009-09-16 20:46:36 UTC (rev 14891)
@@ -461,12 +461,26 @@
 		const char *prefix;
 
 		prefix = switch_channel_get_variable(channel, "sound_prefix");
+
 		if (!prefix) {
 			prefix = SWITCH_GLOBAL_dirs.base_dir;
 		}
 		
 		if (!switch_is_file_path(file)) {
-			file = switch_core_session_sprintf(session, "%s%s%s", prefix, SWITCH_PATH_SEPARATOR, file);
+			char *tfile = NULL;
+			char *e;
+
+			if (*file == '[') {
+				tfile = switch_core_session_strdup(session, file);
+				if ((e = switch_find_end_paren(tfile, '[', ']'))) {
+					*e = '\0';
+					file = e + 1;
+				} else {
+					tfile = NULL;
+				}
+			}
+			
+			file = switch_core_session_sprintf(session, "%s%s%s%s", switch_str_nil(tfile), tfile ? "]" : "", prefix, SWITCH_PATH_SEPARATOR, file);
 		}
 		if ((ext = strrchr(file, '.'))) {
 			ext++;
@@ -1001,7 +1015,20 @@
 
 		if (!strstr(file, SWITCH_URL_SEPARATOR)) {
 			if (!switch_is_file_path(file)) {
-				file = switch_core_session_sprintf(session, "%s%s%s", prefix, SWITCH_PATH_SEPARATOR, file);
+				char *tfile = NULL;
+				char *e;
+
+				if (*file == '[') {
+					tfile = switch_core_session_strdup(session, file);
+					if ((e = switch_find_end_paren(tfile, '[', ']'))) {
+						*e = '\0';
+						file = e + 1;
+					} else {
+						tfile = NULL;
+					}
+				}
+
+				file = switch_core_session_sprintf(session, "%s%s%s%s%s", switch_str_nil(tfile), tfile ? "]" : "", prefix, SWITCH_PATH_SEPARATOR, file);
 			}
 			if ((ext = strrchr(file, '.'))) {
 				ext++;