#include <sys/types.h>
#include <sys/time.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <errno.h>
assert (NOT_REACHED); \
} while (0)
+#define unused(foo) foo __attribute__((unused))
+
typedef int bool_t;
typedef struct _item {
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);
item_in_category_of_length_closure_t *iicolc = closure;
mnemon_t *mnemon = iicolc->mnemon;
category_t *category = iicolc->category;
- int length = iicolc->length;
+ unsigned int length = iicolc->length;
if (mnemon_item_category (mnemon, item) != category)
return 0;
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 &",
}
static void
-mnemon_hide_challenge (mnemon_t *mnemon, challenge_type_t challenge_type)
+mnemon_hide_challenge (unused (mnemon_t *mnemon),
+ challenge_type_t challenge_type)
{
char * command;
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);