From f9a94c5750af481df582e369849d3d96fca72d06 Mon Sep 17 00:00:00 2001
From: Tommy Olofsson <tommy.olofsson.90@gmail.com>
Date: Fri, 11 Apr 2014 14:29:59 +0200
Subject: [PATCH] Fixed some error reporting in the c implemantation of the
 decoder.

---
 lib/c/labcomm_decoder.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/lib/c/labcomm_decoder.c b/lib/c/labcomm_decoder.c
index 9b5e585..0447ae5 100644
--- a/lib/c/labcomm_decoder.c
+++ b/lib/c/labcomm_decoder.c
@@ -67,6 +67,7 @@ struct labcomm_decoder *labcomm_decoder_new(
     result->error = error;
     result->memory = memory;
     result->scheduler = scheduler;
+    result->on_error = on_error_fprintf;
     LABCOMM_SIGNATURE_ARRAY_INIT(result->local, struct sample_entry);
     LABCOMM_SIGNATURE_ARRAY_INIT(result->remote_to_local, int);
   }
@@ -93,8 +94,9 @@ static int collect_flat_signature(
   result = decoder->reader->error;
   if (result < 0) { goto out; }
   if (type >= LABCOMM_USER) {
-    /* decoder->on_error(LABCOMM_ERROR_UNIMPLEMENTED_FUNC, 3, */
-	  printf("Implement %s ... (1) for type 0x%x\n", __FUNCTION__, type);
+    decoder->on_error(LABCOMM_ERROR_UNIMPLEMENTED_FUNC, 3,
+		      "Implement %s ... (1) for type 0x%x\n",
+		      __FUNCTION__, type);
   } else {
     labcomm_write_packed32(writer, type); 
     switch (type) {
@@ -134,8 +136,9 @@ static int collect_flat_signature(
       } break;
       default: {
 	result = -ENOSYS;
-        /* decoder->on_error(LABCOMM_ERROR_UNIMPLEMENTED_FUNC, 3, */
-	printf("Implement %s (2) for type 0x%x...\n", __FUNCTION__, type);
+	decoder->on_error(LABCOMM_ERROR_UNIMPLEMENTED_FUNC, 3,
+			  "Implement %s (2) for type 0x%x...\n",
+			  __FUNCTION__, type);
       } break;
     }
   }
@@ -257,8 +260,8 @@ static int decode_typedef_or_sample(struct labcomm_decoder *d, int kind)
     d->on_new_datatype(d, &signature);
     result = -ENOENT;
   } else if (entry->index && entry->index != remote_index) {
-    /* d->on_error(LABCOMM_ERROR_DEC_INDEX_MISMATCH, 5,  */
-	  printf("%s(): index mismatch '%s' (id=0x%x != 0x%x)\n", 
+    d->on_error(LABCOMM_ERROR_DEC_INDEX_MISMATCH, 5,
+		"%s(): index mismatch '%s' (id=0x%x != 0x%x)\n",
 		__FUNCTION__, signature.name, entry->index, remote_index);
     result = -ENOENT;
 #endif
-- 
GitLab