Bug 6787 - Allow escaping of newline characters for invoking non-Festival TTS systems
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 9 May 2006 05:30:05 +0000 (05:30 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 9 May 2006 05:30:05 +0000 (05:30 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@25829 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_festival.c

index 223aca5..cb38d42 100644 (file)
@@ -305,6 +305,7 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
        char *data;     
        char *intstr;
        struct ast_config *cfg;
+       char *newfestivalcommand;
 
        if (ast_strlen_zero(vdata)) {
                ast_log(LOG_WARNING, "festival requires an argument (text)\n");
@@ -337,6 +338,22 @@ static int festival_exec(struct ast_channel *chan, void *vdata)
        }
        if (!(festivalcommand = ast_variable_retrieve(cfg, "general", "festivalcommand"))) {
                festivalcommand = "(tts_textasterisk \"%s\" 'file)(quit)\n";
+       } else { /* This else parses the festivalcommand that we're sent from the config file for \n's, etc */
+               int i, j;
+               newfestivalcommand = alloca(strlen(festivalcommand) + 1);
+
+               for (i = 0, j = 0; i < strlen(festivalcommand); i++) {
+                       if (festivalcommand[i] == '\\' && festivalcommand[i + 1] == 'n') {
+                               newfestivalcommand[j++] = '\n';
+                               i++;
+                       } else if (festivalcommand[i] == '\\') {
+                               newfestivalcommand[j++] = festivalcommand[i + 1];
+                               i++;
+                       } else
+                               newfestivalcommand[j++] = festivalcommand[i];
+               }
+               newfestivalcommand[j] = '\0';
+               festivalcommand = newfestivalcommand;
        }
        
        if (!(data = ast_strdupa(vdata))) {