[commit] r4501 - in freeswitch/trunk/src: . include
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,
participants (1)
-
Freeswitch SVN