FSCORE-446
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14958 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
fee3c78712
commit
c1c3b65a21
|
@ -545,6 +545,13 @@ SWITCH_DECLARE(const char *) switch_cut_path(const char *in);
|
||||||
SWITCH_DECLARE(char *) switch_string_replace(const char *string, const char *search, const char *replace);
|
SWITCH_DECLARE(char *) switch_string_replace(const char *string, const char *search, const char *replace);
|
||||||
SWITCH_DECLARE(switch_status_t) switch_string_match(const char *string, size_t string_len, const char *search, size_t search_len);
|
SWITCH_DECLARE(switch_status_t) switch_string_match(const char *string, size_t string_len, const char *search, size_t search_len);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Quote shell argument
|
||||||
|
\param string the string to quote (example: a ' b"' c)
|
||||||
|
\return the quoted string (gives: 'a '\'' b"'\'' c' for unices, "a ' b ' c" for MS Windows)
|
||||||
|
*/
|
||||||
|
SWITCH_DECLARE(char *) switch_util_quote_shell_arg(const char *string);
|
||||||
|
|
||||||
#define SWITCH_READ_ACCEPTABLE(status) (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK)
|
#define SWITCH_READ_ACCEPTABLE(status) (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK)
|
||||||
SWITCH_DECLARE(size_t) switch_url_encode(const char *url, char *buf, size_t len);
|
SWITCH_DECLARE(size_t) switch_url_encode(const char *url, char *buf, size_t len);
|
||||||
SWITCH_DECLARE(char *) switch_url_decode(char *s);
|
SWITCH_DECLARE(char *) switch_url_decode(char *s);
|
||||||
|
|
|
@ -32,8 +32,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
|
|
||||||
SWITCH_DECLARE(char *) switch_escape_shell_arg(char *string);
|
|
||||||
|
|
||||||
SWITCH_MODULE_LOAD_FUNCTION(mod_tts_commandline_load);
|
SWITCH_MODULE_LOAD_FUNCTION(mod_tts_commandline_load);
|
||||||
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_tts_commandline_shutdown);
|
SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_tts_commandline_shutdown);
|
||||||
SWITCH_MODULE_DEFINITION(mod_tts_commandline, mod_tts_commandline_load, mod_tts_commandline_shutdown, NULL);
|
SWITCH_MODULE_DEFINITION(mod_tts_commandline, mod_tts_commandline_load, mod_tts_commandline_shutdown, NULL);
|
||||||
|
@ -56,62 +54,6 @@ struct tts_commandline_data {
|
||||||
typedef struct tts_commandline_data tts_commandline_t;
|
typedef struct tts_commandline_data tts_commandline_t;
|
||||||
|
|
||||||
|
|
||||||
SWITCH_DECLARE(char *) switch_quote_shell_arg(char *string)
|
|
||||||
{
|
|
||||||
size_t string_len = strlen(string);
|
|
||||||
size_t i;
|
|
||||||
size_t n = 0;
|
|
||||||
size_t dest_len = string_len + 1; /* +1 for the opening quote */
|
|
||||||
char *dest, *tmp;
|
|
||||||
|
|
||||||
dest = (char *) malloc(sizeof(char) * dest_len);
|
|
||||||
switch_assert(dest);
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
dest[n++] = '"';
|
|
||||||
#else
|
|
||||||
dest[n++] = '\'';
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (i = 0; i < string_len; i++) {
|
|
||||||
switch (string[i]) {
|
|
||||||
#ifdef WIN32
|
|
||||||
case '"':
|
|
||||||
case '%':
|
|
||||||
dest[n++] = ' ';
|
|
||||||
break;
|
|
||||||
#else
|
|
||||||
case '\'':
|
|
||||||
/* We replace ' by '\'' */
|
|
||||||
dest_len+=3;
|
|
||||||
tmp = (char *) realloc(dest, sizeof(char) * (dest_len));
|
|
||||||
switch_assert(tmp);
|
|
||||||
dest = tmp;
|
|
||||||
dest[n++] = '\'';
|
|
||||||
dest[n++] = '\\';
|
|
||||||
dest[n++] = '\'';
|
|
||||||
dest[n++] = '\'';
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
dest[n++] = string[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dest_len += 2; /* +2 for the closing quote and the null character */
|
|
||||||
tmp = (char *) realloc(dest, sizeof(char) * (dest_len));
|
|
||||||
switch_assert(tmp);
|
|
||||||
dest = tmp;
|
|
||||||
#ifdef WIN32
|
|
||||||
dest[n++] = '"';
|
|
||||||
#else
|
|
||||||
dest[n++] = '\'';
|
|
||||||
#endif
|
|
||||||
dest[n++] = 0;
|
|
||||||
switch_assert(n == dest_len);
|
|
||||||
return dest;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int load_tts_commandline_config(void)
|
static int load_tts_commandline_config(void)
|
||||||
{
|
{
|
||||||
char *cf = "tts_commandline.conf";
|
char *cf = "tts_commandline.conf";
|
||||||
|
@ -190,16 +132,16 @@ static switch_status_t tts_commandline_speech_feed_tts(switch_speech_handle_t *s
|
||||||
|
|
||||||
message = switch_core_strdup(sh->memory_pool, globals.command);
|
message = switch_core_strdup(sh->memory_pool, globals.command);
|
||||||
|
|
||||||
tmp = switch_quote_shell_arg(text);
|
tmp = switch_util_quote_shell_arg(text);
|
||||||
message = switch_string_replace(message, "${text}", tmp);
|
message = switch_string_replace(message, "${text}", tmp);
|
||||||
|
|
||||||
tmp = switch_quote_shell_arg(info->voice_name);
|
tmp = switch_util_quote_shell_arg(info->voice_name);
|
||||||
message = switch_string_replace(message, "${voice}", tmp);
|
message = switch_string_replace(message, "${voice}", tmp);
|
||||||
|
|
||||||
rate = switch_core_sprintf(sh->memory_pool, "%d", info->rate);
|
rate = switch_core_sprintf(sh->memory_pool, "%d", info->rate);
|
||||||
message = switch_string_replace(message, "${rate}", rate);
|
message = switch_string_replace(message, "${rate}", rate);
|
||||||
|
|
||||||
tmp = switch_quote_shell_arg(info->file);
|
tmp = switch_util_quote_shell_arg(info->file);
|
||||||
message = switch_string_replace(message, "${file}", tmp);
|
message = switch_string_replace(message, "${file}", tmp);
|
||||||
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Executing: %s\n", message);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Executing: %s\n", message);
|
||||||
|
|
|
@ -1661,6 +1661,62 @@ SWITCH_DECLARE(char *) switch_string_replace(const char *string, const char *sea
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SWITCH_DECLARE(char *) switch_util_quote_shell_arg(const char *string)
|
||||||
|
{
|
||||||
|
size_t string_len = strlen(string);
|
||||||
|
size_t i;
|
||||||
|
size_t n = 0;
|
||||||
|
size_t dest_len = string_len + 1; /* +1 for the opening quote */
|
||||||
|
char *dest, *tmp;
|
||||||
|
|
||||||
|
dest = (char *) malloc(sizeof(char) * dest_len);
|
||||||
|
switch_assert(dest);
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
dest[n++] = '"';
|
||||||
|
#else
|
||||||
|
dest[n++] = '\'';
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (i = 0; i < string_len; i++) {
|
||||||
|
switch (string[i]) {
|
||||||
|
#ifdef WIN32
|
||||||
|
case '"':
|
||||||
|
case '%':
|
||||||
|
dest[n++] = ' ';
|
||||||
|
break;
|
||||||
|
#else
|
||||||
|
case '\'':
|
||||||
|
/* We replace ' by '\'' */
|
||||||
|
dest_len+=3;
|
||||||
|
tmp = (char *) realloc(dest, sizeof(char) * (dest_len));
|
||||||
|
switch_assert(tmp);
|
||||||
|
dest = tmp;
|
||||||
|
dest[n++] = '\'';
|
||||||
|
dest[n++] = '\\';
|
||||||
|
dest[n++] = '\'';
|
||||||
|
dest[n++] = '\'';
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
dest[n++] = string[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dest_len += 2; /* +2 for the closing quote and the null character */
|
||||||
|
tmp = (char *) realloc(dest, sizeof(char) * (dest_len));
|
||||||
|
switch_assert(tmp);
|
||||||
|
dest = tmp;
|
||||||
|
#ifdef WIN32
|
||||||
|
dest[n++] = '"';
|
||||||
|
#else
|
||||||
|
dest[n++] = '\'';
|
||||||
|
#endif
|
||||||
|
dest[n++] = 0;
|
||||||
|
switch_assert(n == dest_len);
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
SWITCH_DECLARE(int) switch_socket_waitfor(switch_pollfd_t *poll, int ms)
|
SWITCH_DECLARE(int) switch_socket_waitfor(switch_pollfd_t *poll, int ms)
|
||||||
{
|
{
|
||||||
int nsds = 0;
|
int nsds = 0;
|
||||||
|
|
Loading…
Reference in New Issue