From 6aebbea659aa5e537d79796553f4fd4150d6384f Mon Sep 17 00:00:00 2001
From: Carl Worth <cworth@cworth.org>
Date: Sat, 4 Apr 2009 08:14:59 -0700
Subject: [PATCH] Add a new repeat option

This is instead of unconditionally repeating audo and midi challenges.
---
 mnemon.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/mnemon.c b/mnemon.c
index 3523ef8..c334f22 100644
--- a/mnemon.c
+++ b/mnemon.c
@@ -81,6 +81,8 @@ typedef struct _category {
     int bin_zero_head;
     /* Support challenges of non-text types (image, audio, etc.) */
     challenge_type_t challenge_type;
+    /* Whether to repeat afterwards (for a little extra reinforcement) */
+    bool_t repeat;
 } category_t;
 
 typedef struct _mnemon {
@@ -209,6 +211,7 @@ category_init (category_t *category,
     category->time_limit = 0.0;
     category->bin_zero_head = 0;
     category->challenge_type = CHALLENGE_TYPE_TEXT;
+    category->repeat = 0;
 }
 
 static void
@@ -295,6 +298,8 @@ category_print (category_t	*category,
     }
     fprintf (file, "\n\n");
 
+    fprintf (file, "repeat = %d\n\n", category->repeat);
+
     for (i = 0; i < category->num_items; i++) {
 	item = &category->items[i];
 	if (i != 0)
@@ -665,6 +670,11 @@ mnemon_load_category (mnemon_t		*mnemon,
 			 value, path, line_count);
 		exit (1);
 	    }
+	} else if (strcmp (name, "repeat") == 0) {
+	    if (strcmp (value, "0") == 0) 
+		category->repeat = 0;
+	    else
+		category->repeat = 1;
 	} else {
 	    fprintf (stderr, "Unknown option %s at %s:%d\n",
 		     name, path, line_count);
@@ -1307,8 +1317,7 @@ mnemon_do_challenges (mnemon_t *mnemon)
 	free (response);
 
 	/* Replay audio challenges for reinforcement. */
-	if (category->challenge_type == CHALLENGE_TYPE_AUDIO ||
-	    category->challenge_type == CHALLENGE_TYPE_MIDI)
+	if (category->repeat)
 	{
 	    mnemon_show_challenge (mnemon, category->challenge_type,
 				   item->challenge);
-- 
2.45.2