Merge #929 with some changes to get things compile (#930)

diff --git a/cs.c b/cs.c
index 19c65c7..82f9efe 100644
--- a/cs.c
+++ b/cs.c
@@ -45,7 +45,11 @@
 #endif
 
 // default SKIPDATA mnemonic
+#ifndef CAPSTONE_DIET
 #define SKIPDATA_MNEM ".byte"
+#else // No printing is available in diet mode
+#define SKIPDATA_MNEM NULL
+#endif
 
 cs_err (*arch_init[MAX_ARCH])(cs_struct *) = { NULL };
 cs_err (*arch_option[MAX_ARCH]) (cs_struct *, cs_opt_type, size_t value) = { NULL };
@@ -552,6 +556,7 @@
 }
 
 // generate @op_str for data instruction of SKIPDATA
+#ifndef CAPSTONE_DIET
 static void skipdata_opstr(char *opstr, const uint8_t *buffer, size_t size)
 {
 	char *p = opstr;
@@ -580,6 +585,7 @@
 		available -= len;
 	}
 }
+#endif
 
 // dynamicly allocate memory to contain disasm insn
 // NOTE: caller must free() the allocated memory itself to avoid memory leaking
@@ -708,9 +714,14 @@
 			insn_cache->address = offset;
 			insn_cache->size = (uint16_t)skipdata_bytes;
 			memcpy(insn_cache->bytes, buffer, skipdata_bytes);
+#ifdef CAPSTONE_DIET
+			insn_cache->mnemonic[0] = '\0';
+			insn_cache->op_str[0] = '\0';
+#else
 			strncpy(insn_cache->mnemonic, handle->skipdata_setup.mnemonic,
 					sizeof(insn_cache->mnemonic) - 1);
 			skipdata_opstr(insn_cache->op_str, buffer, skipdata_bytes);
+#endif
 			insn_cache->detail = NULL;
 
 			next_offset = skipdata_bytes;
@@ -912,10 +923,15 @@
 		insn->id = 0;	// invalid ID for this "data" instruction
 		insn->address = *address;
 		insn->size = (uint16_t)skipdata_bytes;
+#ifdef CAPSTONE_DIET
+		insn->mnemonic[0] = '\0';
+		insn->op_str[0] = '\0';
+#else
 		memcpy(insn->bytes, *code, skipdata_bytes);
 		strncpy(insn->mnemonic, handle->skipdata_setup.mnemonic,
 				sizeof(insn->mnemonic) - 1);
 		skipdata_opstr(insn->op_str, *code, skipdata_bytes);
+#endif
 
 		*code += skipdata_bytes;
 		*size -= skipdata_bytes;