#include <sys/types.h>
#include <sys/time.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <errno.h>
CHALLENGE_TYPE_TEXT,
CHALLENGE_TYPE_IMAGE,
CHALLENGE_TYPE_AUDIO,
- CHALLENGE_TYPE_MIDI
+ CHALLENGE_TYPE_MIDI,
+ CHALLENGE_TYPE_TEXT_TO_SPEECH
} challenge_type_t;
typedef struct _category {
case CHALLENGE_TYPE_MIDI:
fprintf (file, "midi");
break;
+ case CHALLENGE_TYPE_TEXT_TO_SPEECH:
+ fprintf (file, "text-to-speech");
+ break;
}
fprintf (file, "\n\n");
char *path;
category_t *category;
int i;
+ struct stat st;
path = xmalloc (strlen (mnemon->dir_name) + 1 + strlen (name) + 1);
sprintf (path, "%s/%s", mnemon->dir_name, name);
exit (1);
}
+ fstat (fileno(file), &st);
+ if (! S_ISREG(st.st_mode)) {
+ fprintf (stderr, "Error: File %s is not a regular file.\n", path);
+ exit (1);
+ }
+
category = mnemon_get_category (mnemon, name);
#define READ_LINE do { \
category->challenge_type = CHALLENGE_TYPE_AUDIO;
} else if (strcmp (value, "midi") == 0) {
category->challenge_type = CHALLENGE_TYPE_MIDI;
+ } else if (strcmp (value, "text-to-speech") == 0) {
+ category->challenge_type = CHALLENGE_TYPE_TEXT_TO_SPEECH;
} else {
fprintf (stderr, "Unknown value for \"challenge\" option \"%s\" at %s:%d\n",
value, path, line_count);
case CHALLENGE_TYPE_MIDI:
program = "timidity -Os";
break;
+ case CHALLENGE_TYPE_TEXT_TO_SPEECH:
+ program = "mnemon-tts";
+ break;
}
xasprintf (&command, "%s %s/%s >/dev/null 2>&1 &",
mnemon_t mnemon;
char *response;
+ void _load_categories()
+ {
+ if (argc > 1) {
+ int i;
+ for (i = 1; i < argc; i++)
+ mnemon_load_category (&mnemon, argv[i]);
+ } else {
+ mnemon_load (&mnemon);
+ }
+ }
+
srand (time (NULL));
mnemon_init (&mnemon);
- mnemon_load (&mnemon);
+ _load_categories ();
mnemon_do_challenges (&mnemon);
mnemon_fini (&mnemon);
mnemon_init (&mnemon);
- mnemon_load (&mnemon);
+
+ _load_categories ();
printf ("Great job.\nHere are your current results:\n");
mnemon_print_histogram (&mnemon, NULL, 0);