[Freeswitch-svn] [commit] r4501 - in freeswitch/trunk/src: . include
Freeswitch SVN
brian at freeswitch.org
Fri Mar 9 21:36:56 EST 2007
Author: brian
Date: Fri Mar 9 21:36:55 2007
New Revision: 4501
Modified:
freeswitch/trunk/src/include/switch_types.h
freeswitch/trunk/src/include/switch_utils.h
freeswitch/trunk/src/switch_core.c
freeswitch/trunk/src/switch_ivr.c
Log:
add url syntax for playback
Modified: freeswitch/trunk/src/include/switch_types.h
==============================================================================
--- freeswitch/trunk/src/include/switch_types.h (original)
+++ freeswitch/trunk/src/include/switch_types.h Fri Mar 9 21:36:55 2007
@@ -105,6 +105,8 @@
#define SWITCH_PATH_SEPARATOR "/"
#endif
+#define SWITCH_URL_SEPARATOR "://"
+
#ifndef SWITCH_PREFIX_DIR
#define SWITCH_PREFIX_DIR "."
#endif
Modified: freeswitch/trunk/src/include/switch_utils.h
==============================================================================
--- freeswitch/trunk/src/include/switch_utils.h (original)
+++ freeswitch/trunk/src/include/switch_utils.h Fri Mar 9 21:36:55 2007
@@ -54,9 +54,9 @@
codec->implementation->microseconds_per_frame / 1000)
#ifdef WIN32
-#define switch_is_file_path(file) (*(file +1) == ':' || *file == '/')
+#define switch_is_file_path(file) (*(file +1) == ':' || *file == '/' || strstr(file, SWITCH_URL_SEPARATOR))
#else
-#define switch_is_file_path(file) (*file == '/')
+#define switch_is_file_path(file) ((*file == '/') || strstr(file, SWITCH_URL_SEPARATOR))
#endif
/*!
Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c (original)
+++ freeswitch/trunk/src/switch_core.c Fri Mar 9 21:36:55 2007
@@ -1019,12 +1019,20 @@
{
char *ext;
switch_status_t status;
+ char stream_name[128] = "";
+ char *rhs = NULL;
- if ((ext = strrchr(file_path, '.')) == 0) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Format\n");
- return SWITCH_STATUS_FALSE;
+ if ((rhs = strstr(file_path, SWITCH_URL_SEPARATOR))) {
+ switch_copy_string(stream_name, file_path, (rhs+1) - file_path);
+ ext = stream_name;
+ file_path = rhs + 3;
+ } else {
+ if ((ext = strrchr(file_path, '.')) == 0) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Format\n");
+ return SWITCH_STATUS_FALSE;
+ }
+ ext++;
}
- ext++;
if ((fh->file_interface = switch_loadable_module_get_file_interface(ext)) == 0) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "invalid file format [%s]!\n", ext);
Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c (original)
+++ freeswitch/trunk/src/switch_ivr.c Fri Mar 9 21:36:55 2007
@@ -1112,15 +1112,19 @@
prefix = switch_channel_get_variable(channel, "sound_prefix");
timer_name = switch_channel_get_variable(channel, "timer_name");
- if (file) {
- if (prefix && *file != '/' && *file != '\\' && *(file+1) != ':') {
- char *new_file;
- uint32_t len;
- len = (uint32_t)strlen(file) + (uint32_t)strlen(prefix) + 10;
- new_file = switch_core_session_alloc(session, len);
- snprintf(new_file, len, "%s/%s", prefix, file);
- file = new_file;
- }
+ if (!file) {
+ return SWITCH_STATUS_FALSE;
+ }
+
+ if (!strstr(file, SWITCH_URL_SEPARATOR)) {
+ if (prefix && *file != '/' && *file != '\\' && *(file+1) != ':') {
+ char *new_file;
+ uint32_t len;
+ len = (uint32_t)strlen(file) + (uint32_t)strlen(prefix) + 10;
+ new_file = switch_core_session_alloc(session, len);
+ snprintf(new_file, len, "%s/%s", prefix, file);
+ file = new_file;
+ }
if ((ext = strrchr(file, '.'))) {
ext++;
@@ -1135,6 +1139,7 @@
asis = 1;
}
}
+
if (!fh) {
fh = &lfh;
@@ -1146,7 +1151,7 @@
sample_start = fh->samples;
fh->samples = 0;
}
-
+
if (switch_core_file_open(fh,
file,
SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,
More information about the Freeswitch-svn
mailing list