Revision
15764
Author
mrene
Date
2009-12-02 20:37:05 -0600 (Wed, 02 Dec 2009)

Log Message

add escape api command to escape a string

Modified Paths

Diff

Modified: freeswitch/trunk/src/include/switch_utils.h (15763 => 15764)


--- freeswitch/trunk/src/include/switch_utils.h	2009-12-02 20:47:46 UTC (rev 15763)
+++ freeswitch/trunk/src/include/switch_utils.h	2009-12-03 02:37:05 UTC (rev 15764)
@@ -557,6 +557,9 @@
 */
 SWITCH_DECLARE(char *) switch_escape_char(switch_memory_pool_t *pool, char *in, const char *delim, char esc);
 
+SWITCH_DECLARE(char *) switch_escape_string(const char *in, char *out, switch_size_t outlen);
+SWITCH_DECLARE(char*) switch_escape_string_pool(const char *in, switch_memory_pool_t *pool);
+
 /*!
   \brief Wait for a socket
   \param poll the pollfd to wait on

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c (15763 => 15764)


--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	2009-12-02 20:47:46 UTC (rev 15763)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	2009-12-03 02:37:05 UTC (rev 15764)
@@ -3697,6 +3697,17 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
+SWITCH_STANDARD_API(escape_function)
+{
+	int len = strlen(cmd)*2;
+	char *mycmd = malloc(strlen(cmd)*2);
+	
+	stream->write_function(stream, "%s", switch_escape_string(cmd, mycmd, len));
+	
+	switch_safe_free(mycmd);
+	return SWITCH_STATUS_SUCCESS;
+}
+
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_commands_shutdown)
 {
 	int x;
@@ -3856,6 +3867,7 @@
 	SWITCH_ADD_API(commands_api_interface, "host_lookup", "host_lookup", host_lookup_function, "<hostname>");
 	SWITCH_ADD_API(commands_api_interface, "hostname", "Returns the system hostname", hostname_api_function, "");
 	SWITCH_ADD_API(commands_api_interface, "db_cache", "db cache management", db_cache_function, "status");
+	SWITCH_ADD_API(commands_api_interface, "escape", "escape a string", escape_function, "<data>");
 	switch_console_set_complete("db_cache status");
 
 	/* indicate that the module should continue to be loaded */

Modified: freeswitch/trunk/src/switch_utils.c (15763 => 15764)


--- freeswitch/trunk/src/switch_utils.c	2009-12-02 20:47:46 UTC (rev 15763)
+++ freeswitch/trunk/src/switch_utils.c	2009-12-03 02:37:05 UTC (rev 15764)
@@ -1577,6 +1577,51 @@
 	return unescaped;
 }
 
+SWITCH_DECLARE(char *) switch_escape_string(const char *in, char *out, switch_size_t outlen)
+{
+	const char *p;
+	char *o = out;
+	
+	for(p = in; *p; p++) {
+		switch(*p) {
+			case '\n':
+				*o++ = '\\';
+				*o++ = 'n';
+				break;
+			case '\r':
+				*o++ = '\\';
+				*o++ = 'r';
+				break;
+			case '\t':
+				*o++ = '\\';
+				*o++ = 't';
+				break;
+			case ' ':
+				*o++ = '\\';
+				*o++ = 's';
+				break;
+			case '$':
+				*o++ = '\\';
+				*o++ = '$';
+				break;
+			default:
+				*o++ = *p;
+				break;
+		}
+	}
+
+	*o++ = '\0';
+
+	return out;	
+}
+
+SWITCH_DECLARE(char*) switch_escape_string_pool(const char *in, switch_memory_pool_t *pool)
+{
+	int len = strlen(in)*2;
+	char *buf = switch_core_alloc(pool, len);
+	return switch_escape_string(in, buf, len);
+}
+
 /* Helper function used when separating strings to remove quotes, leading /
    trailing spaces, and to convert escaped characters. */
 static char *cleanup_separated_string(char *str, char delim)