compilation fixes for more pedantic compilers
diff --git a/libtelnet.c b/libtelnet.c
index a4eb8e9..fdb7652 100644
--- a/libtelnet.c
+++ b/libtelnet.c
@@ -221,6 +221,9 @@
 		_event(telnet, TELNET_EV_SEND, 0, 0, buffer, size, 0, 0);
 }
 
+/* to send bags of unsigned chars */
+#define _sendu(t, d, s) _send((t), (const char*)(d), (s))
+
 /* check if we support a particular telopt; if us is non-zero, we
  * check if we (local) supports it, otherwise we check if he (remote)
  * supports it.  return non-zero if supported, zero if not supported.
@@ -302,8 +305,8 @@
 /* send negotiation bytes */
 static INLINE void _send_negotiate(telnet_t *telnet, unsigned char cmd,
 		unsigned char telopt) {
-	char bytes[3] = { TELNET_IAC, cmd, telopt };
-	_send(telnet, bytes, 3);
+	const unsigned char bytes[3] = { TELNET_IAC, cmd, telopt };
+	_sendu(telnet, bytes, 3);
 }
 
 /* negotiation handling magic for RFC1143 */
@@ -893,8 +896,8 @@
 
 /* send an iac command */
 void telnet_iac(telnet_t *telnet, unsigned char cmd) {
-	char bytes[2] = { TELNET_IAC, cmd };
-	_send(telnet, bytes, 2);
+	const unsigned char bytes[2] = { TELNET_IAC, cmd };
+	_sendu(telnet, bytes, 2);
 }
 
 /* send negotiation */
@@ -904,8 +907,8 @@
 
 	/* if we're in proxy mode, just send it now */
 	if (telnet->flags & TELNET_FLAG_PROXY) {
-		char bytes[3] = { TELNET_IAC, cmd, telopt };
-		_send(telnet, bytes, 3);
+		const unsigned char bytes[3] = { TELNET_IAC, cmd, telopt };
+		_sendu(telnet, bytes, 3);
 		return;
 	}
 	
@@ -1004,20 +1007,20 @@
 
 /* send subnegotiation header */
 void telnet_begin_sb(telnet_t *telnet, unsigned char telopt) {
-	const char sb[3] = { TELNET_IAC, TELNET_SB, telopt };
-	_send(telnet, sb, 3);
+	const unsigned char sb[3] = { TELNET_IAC, TELNET_SB, telopt };
+	_sendu(telnet, sb, 3);
 }
 
 
 /* send complete subnegotiation */
 void telnet_subnegotiation(telnet_t *telnet, unsigned char telopt,
 		const char *buffer, size_t size) {
-	const char sb[3] = { TELNET_IAC, TELNET_SB, telopt };
-	static const char se[2] = { TELNET_IAC, TELNET_SE };
+	const unsigned char sb[3] = { TELNET_IAC, TELNET_SB, telopt };
+	const unsigned char se[2] = { TELNET_IAC, TELNET_SE };
 
-	_send(telnet, sb, 3);
+	_sendu(telnet, sb, 3);
 	telnet_send(telnet, buffer, size);
-	_send(telnet, se, 2);
+	_sendu(telnet, se, 2);
 
 #if defined(HAVE_ZLIB)
 	/* if we're a proxy and we just sent the COMPRESS2 marker, we must
@@ -1037,7 +1040,7 @@
 
 void telnet_begin_compress2(telnet_t *telnet) {
 #if defined(HAVE_ZLIB)
-	static const char compress2[] = { TELNET_IAC, TELNET_SB,
+	static const unsigned char compress2[] = { TELNET_IAC, TELNET_SB,
 			TELNET_TELOPT_COMPRESS2, TELNET_IAC, TELNET_SE };
 
 	/* attempt to create output stream first, bail if we can't */
@@ -1048,7 +1051,7 @@
 	 * instead of passing through _send because _send would result in
 	 * the compress marker itself being compressed.
 	 */
-	_event(telnet, TELNET_EV_SEND, 0, 0, compress2, sizeof(compress2), 0, 0);
+	_event(telnet, TELNET_EV_SEND, 0, 0, (const char*)compress2, sizeof(compress2), 0, 0);
 
 	/* notify app that compression was successfully enabled */
 	_event(telnet, TELNET_EV_COMPRESS, 1, 0, 0, 0, 0, 0);