diff --git a/src/cn-print.c b/src/cn-print.c
index 81f4e14..2eb76f4 100644
--- a/src/cn-print.c
+++ b/src/cn-print.c
@@ -1,9 +1,11 @@
 #ifndef CN_PRINT_C
 #define CN_PRINT_C
+#define CN_INCLUDE_DUMPER
 #ifdef CN_INCLUDE_DUMPER
 #define _CRT_SECURE_NO_WARNINGS 1
 
 #include <stdio.h>
+#include <stdio.h>
 
 #ifdef  __cplusplus
 extern "C" {
@@ -13,7 +15,11 @@
 #endif
 
 #include <stdio.h>
+#ifdef MSV_CRT
 #include <winsock2.h>
+#else
+#define _snprintf snprintf
+#endif
 #include <string.h>
 #include <stdbool.h>
 #include <assert.h>
@@ -26,7 +32,7 @@
 	char * rgbOutput;
 	ssize_t ib;
 	size_t cbLeft;
-	byte * rgFlags;
+	uint8_t * rgFlags;
 	const char * szIndentWith;
 	const char * szEndOfLine;
 } cn_write_state;
@@ -40,7 +46,7 @@
 const char RgchHex[] = { '0', '1', '2', '3', '4', '5', '6', '7',
 '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
 
-inline bool _isWritable(cn_write_state * ws, size_t cb)
+bool _isWritable(cn_write_state * ws, size_t cb)
 {
 	if (ws->rgbOutput == NULL) return true;
 	if ((ws->ib < 0) || (ws->ib + cb > ws->cbLeft)) {
@@ -50,7 +56,7 @@
 	return true;
 }
 
-inline void write_data(cn_write_state * ws, const char * sz, size_t cb)
+void write_data(cn_write_state * ws, const char * sz, size_t cb)
 {
 	if (_isWritable(ws, cb)) {
 		if (ws->rgbOutput != NULL) memcpy(ws->rgbOutput + ws->ib, sz, cb);
@@ -58,7 +64,7 @@
 	}
 }
 
-inline void _doIndent(cn_write_state * ws, int depth)
+void _doIndent(cn_write_state * ws, int depth)
 {
 	int i;
 	char * sz = ws->rgbOutput + ws->ib;
@@ -89,7 +95,7 @@
 	char rgchT[256];
 	int cch;
 	cn_write_state * ws = (cn_write_state *)context;
-	byte flags = ws->rgFlags[depth];
+	uint8_t flags = ws->rgFlags[depth];
 
 	if (flags & 1) {
 		write_data(ws, ", ", 2);
@@ -107,6 +113,10 @@
 	}
 
 	switch (cb->type) {
+	case CN_CBOR_BYTES_CHUNKED:
+	case CN_CBOR_TEXT_CHUNKED:
+	  break;
+
 	case CN_CBOR_ARRAY:
 		write_data(ws, "[", 1);
 		ws->rgFlags[depth] |= 4;
@@ -130,7 +140,7 @@
 	case CN_CBOR_TAG:
 	case CN_CBOR_UINT:
 	case CN_CBOR_SIMPLE:
-		cch = _snprintf(rgchT, sizeof(rgchT), "%u", cb->v.uint);
+	  cch = _snprintf(rgchT, sizeof(rgchT), "%u", (unsigned int) cb->v.uint);
 		write_data(ws, rgchT, cch);
 		break;
 
@@ -151,7 +161,7 @@
 		break;
 
 	case CN_CBOR_INT:
-		cch = _snprintf(rgchT, sizeof(rgchT), "%d", cb->v.sint);
+	  cch = _snprintf(rgchT, sizeof(rgchT), "%d", (unsigned int) cb->v.sint);
 		write_data(ws, rgchT, cch);
 		break;
 
@@ -213,12 +223,15 @@
 		write_data(ws, "}", 1);
 		ws->rgFlags[depth + 1] = 0;
 		break;
+
+	default:
+	  break;
 	}
 }
 
 ssize_t cn_cbor_printer_write(char * rgbBuffer, size_t cbBuffer, const cn_cbor * cb, const char * szIndentWith, const char * szEndOfLine)
 {
-	byte flags[128] = { 0 };
+	uint8_t flags[128] = { 0 };
 	char rgchZero[1] = { 0 };
 
 	cn_write_state ws = { rgbBuffer, 0, cbBuffer, flags, szIndentWith, szEndOfLine };
@@ -237,3 +250,4 @@
 
 #endif // CN_INCLUDE_DUMPER
 #endif // CN_PRINT_C
+
