From aef2e912773ca3669c45725f95226d0081c23046 Mon Sep 17 00:00:00 2001
From: Paul LeoNerd Evans <leonerd@leonerd.org.uk>
Date: Sun, 9 Nov 2008 19:48:06 +0000
Subject: If debugging, print verbose output about internals of getkey
 operation

---
 termkey.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 61 insertions(+), 2 deletions(-)

diff --git a/termkey.c b/termkey.c
index bbcbba3..c28b5a7 100644
--- a/termkey.c
+++ b/termkey.c
@@ -506,10 +506,47 @@ static termkey_result getkey_simple(termkey_t *tk, termkey_key *key, int force)
   }
 }
 
+#ifdef DEBUG
+static void print_buffer(termkey_t *tk)
+{
+  int i;
+  for(i = 0; i < tk->buffcount && i < 20; i++)
+    fprintf(stderr, "%02x ", CHARAT(i));
+  if(tk->buffcount > 20)
+    fprintf(stderr, "...");
+}
+
+static const char *res2str(termkey_result res)
+{
+  switch(res) {
+  case TERMKEY_RES_KEY:
+    return "TERMKEY_RES_KEY";
+  case TERMKEY_RES_EOF:
+    return "TERMKEY_RES_EOF";
+  case TERMKEY_RES_AGAIN:
+    return "TERMKEY_RES_AGAIN";
+  case TERMKEY_RES_NONE:
+    return "TERMKEY_RES_NONE";
+  }
+
+  return "unknown";
+}
+#endif
+
 termkey_result termkey_getkey(termkey_t *tk, termkey_key *key)
 {
+#ifdef DEBUG
+  fprintf(stderr, "getkey(): buffer ");
+  print_buffer(tk);
+  fprintf(stderr, "\n");
+#endif
+
   termkey_result ret = (*tk->driver.getkey)(tk, tk->driver_info, key, 0);
 
+#ifdef DEBUG
+  fprintf(stderr, "Driver %s yields %s\n", tk->driver.name, res2str(ret));
+#endif
+
   switch(ret) {
   case TERMKEY_RES_KEY:
   case TERMKEY_RES_EOF:
@@ -520,13 +557,29 @@ termkey_result termkey_getkey(termkey_t *tk, termkey_key *key)
     break;
   }
 
-  return getkey_simple(tk, key, 0);
+  ret = getkey_simple(tk, key, 0);
+
+#ifdef DEBUG
+  fprintf(stderr, "getkey_simple(force=0) yields %s\n", res2str(ret));
+#endif
+
+  return ret;
 }
 
 termkey_result termkey_getkey_force(termkey_t *tk, termkey_key *key)
 {
+#ifdef DEBUG
+  fprintf(stderr, "getkey_force(): buffer ");
+  print_buffer(tk);
+  fprintf(stderr, "\n");
+#endif
+
   termkey_result ret = (*tk->driver.getkey)(tk, tk->driver_info, key, 1);
 
+#ifdef DEBUG
+  fprintf(stderr, "Driver %s yields %s\n", tk->driver.name, res2str(ret));
+#endif
+
   switch(ret) {
   case TERMKEY_RES_KEY:
   case TERMKEY_RES_EOF:
@@ -537,7 +590,13 @@ termkey_result termkey_getkey_force(termkey_t *tk, termkey_key *key)
     break;
   }
 
-  return getkey_simple(tk, key, 1);
+  ret = getkey_simple(tk, key, 1);
+
+#ifdef DEBUG
+  fprintf(stderr, "getkey_simple(force=1) yields %s\n", res2str(ret));
+#endif
+
+  return ret;
 }
 
 termkey_result termkey_waitkey(termkey_t *tk, termkey_key *key)
-- 
cgit v1.2.3-70-g09d2