diff --git a/lib/ChangeLog b/lib/ChangeLog
index 1fa8eb5..aae83dc 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-17 Vincent Jardin <vincent.jardin@6wind.com>
+
+	* md5.c: Don't forget to keep const.
+	* regex.c: Cleanup code and remove warnings.
+
 2006-01-17 Paul Jakma <paul.jakma@sun.com>
 
 	* md5.{c,h}: (md5_loop) Is better off taking a void * and doing
diff --git a/lib/md5.c b/lib/md5.c
index 0340e45..f1bd066 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -1,6 +1,6 @@
 /* $USAGI: md5.c,v 1.2 2000/11/02 11:59:24 yoshfuji Exp $ */
 /*	$KAME: md5.c,v 1.2 2000/05/27 07:07:48 jinmei Exp $	*/
-/*	$Id: md5.c,v 1.5 2006/01/17 17:40:45 paul Exp $ */
+/*	$Id: md5.c,v 1.6 2006/01/17 23:39:04 vincent Exp $ */
 
 /*
  * Copyright (C) 2004 6WIND
@@ -149,7 +149,7 @@
 void md5_loop(md5_ctxt *ctxt, const void *vinput, uint len)
 {
 	uint gap, i;
-	uint8_t *input = vinput;
+	const uint8_t *input = vinput;
 
 	ctxt->md5_n += len * 8; /* byte to bit */
 	gap = MD5_BUFLEN - ctxt->md5_i;
diff --git a/lib/regex.c b/lib/regex.c
index 2f90dde..a22e03f 100644
--- a/lib/regex.c
+++ b/lib/regex.c
@@ -30,6 +30,10 @@
 #ifdef HAVE_CONFIG_H
 # include <config.h>
 #endif
+#ifdef _WIN32
+/* Windows does not provide unistd.h, which is required for abort() */
+#include <process.h>
+#endif /* _WIN32 */
 
 #ifndef PARAMS
 # if defined __GNUC__ || (defined __STDC__ && __STDC__)
@@ -1025,7 +1029,7 @@
     gettext_noop ("Invalid regular expression") /* REG_BADPAT */
     "\0"
 #define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression")
-    gettext_noop ("Invalid collation character"), /* REG_ECOLLATE */
+    gettext_noop ("Invalid collation character") /* REG_ECOLLATE */
     "\0"
 #define REG_ECTYPE_IDX	(REG_ECOLLATE_IDX + sizeof "Invalid collation character")
     gettext_noop ("Invalid character class name") /* REG_ECTYPE */
@@ -1670,7 +1674,7 @@
    MSC and drop MAX_BUF_SIZE a bit.  Otherwise you may end up
    reallocating to 0 bytes.  Such thing is not going to work too well.
    You have been warned!!  */
-#if defined _MSC_VER  && !defined WIN32
+#if defined _MSC_VER  && !defined _WIN32
 /* Microsoft C 16-bit versions limit malloc to approx 65512 bytes.
    The REALLOC define eliminates a flurry of conversion warnings,
    but is not required. */
@@ -5818,8 +5822,8 @@
    from either regcomp or regexec.   We don't use PREG here.  */
 
 size_t
-regerror (errcode, preg, errbuf, errbuf_size)
-    int errcode;
+regerror (err, preg, errbuf, errbuf_size)
+    int err;
     const regex_t *preg;
     char *errbuf;
     size_t errbuf_size;
@@ -5827,8 +5831,8 @@
   const char *msg;
   size_t msg_size;
 
-  if (errcode < 0
-      || errcode >= (int) (sizeof (re_error_msgid_idx)
+  if (err < 0
+      || err >= (int) (sizeof (re_error_msgid_idx)
 			   / sizeof (re_error_msgid_idx[0])))
     /* Only error codes returned by the rest of the code should be passed
        to this routine.  If we are given anything else, or if other regex
@@ -5836,7 +5840,7 @@
        Dump core so we can fix it.  */
     abort ();
 
-  msg = gettext (re_error_msgid + re_error_msgid_idx[errcode]);
+  msg = gettext (re_error_msgid + re_error_msgid_idx[err]);
 
   msg_size = strlen (msg) + 1; /* Includes the null.  */
 
