static char *synopsis = "Say text to the user";
static char *descrip =
-" Festival(): Connect to Festival, send the argument, get back the waveform,"
-"play it to the user.\n";
+" Festival(text[|intkeys]): Connect to Festival, send the argument, get back the waveform,"
+"play it to the user, allowing any given interrupt keys to immediately terminate and return\n"
+"the value.\n";
STANDARD_LOCAL_USER;
if (!(temp = ast_variable_retrieve(cfg, "general", "usecache"))) {
usecache=0;
} else {
- if (strcasecmp(temp,"yes")==0) {
- usecache=1;
- }
+ usecache = ast_true(temp);
}
if (!(cachedir = ast_variable_retrieve(cfg, "general", "cachedir"))) {
cachedir = "/tmp/";
static pthread_t consolethread = -1;
-static int fix_header(char *outbuf, int maxout, char **s, char *cmp)
+static const char *fix_header(char *outbuf, int maxout, const char *s, char *cmp)
{
- if (!strncmp(*s, cmp, strlen(cmp))) {
- *s += strlen(cmp);
+ const char *c;
+ if (!strncmp(s, cmp, strlen(cmp))) {
+ c = s + strlen(cmp);
term_color(outbuf, cmp, COLOR_GRAY, 0, maxout);
- return 1;
+ return c;
}
- return 0;
+ return NULL;
}
static void console_verboser(const char *s, int pos, int replace, int complete)
{
char tmp[80];
+ const char *c=NULL;
/* Return to the beginning of the line */
if (!pos) {
fprintf(stdout, "\r");
- if (fix_header(tmp, sizeof(tmp), &s, VERBOSE_PREFIX_4) ||
- fix_header(tmp, sizeof(tmp), &s, VERBOSE_PREFIX_3) ||
- fix_header(tmp, sizeof(tmp), &s, VERBOSE_PREFIX_2) ||
- fix_header(tmp, sizeof(tmp), &s, VERBOSE_PREFIX_1))
+ if ((c = fix_header(tmp, sizeof(tmp), s, VERBOSE_PREFIX_4)) ||
+ (c = fix_header(tmp, sizeof(tmp), s, VERBOSE_PREFIX_3)) ||
+ (c = fix_header(tmp, sizeof(tmp), s, VERBOSE_PREFIX_2)) ||
+ (c = fix_header(tmp, sizeof(tmp), s, VERBOSE_PREFIX_1)))
fputs(tmp, stdout);
}
- fputs(s + pos,stdout);
+ if (c)
+ fputs(c + pos,stdout);
+ else
+ fputs(s + pos,stdout);
fflush(stdout);
if (complete)
/* Wake up a select()ing console */
}
time(&t);
if (sub->messagepending && (sub->lastouttime + 20 < t)) {
- ast_log(LOG_NOTICE, "Timeout waiting for response to message:%d, lastouttime: %d, now: %d. Dumping pending queue\n",
+ ast_log(LOG_NOTICE, "Timeout waiting for response to message:%d, lastouttime: %ld, now: %ld. Dumping pending queue\n",
sub->msgs ? sub->msgs->seqno : -1, sub->lastouttime, t);
dump_queue(sub->parent);
}