Use _strnicmp on Windows
[yaz-moved-to-github.git] / src / comstack.c
index 4d842f7..7ed6665 100644 (file)
@@ -1,18 +1,23 @@
 /*
- * Copyright (c) 1995-2003, Index Data
+ * Copyright (c) 1995-2004, Index Data
  * See the file LICENSE for details.
  *
- * $Id: comstack.c,v 1.1 2003-10-27 12:21:30 adam Exp $
+ * $Id: comstack.c,v 1.4 2004-01-06 20:21:37 adam Exp $
  */
 
 #include <string.h>
 #include <ctype.h>
+#include <errno.h>
 
 #include <yaz/comstack.h>
 #include <yaz/tcpip.h>
 #include <yaz/unix.h>
 #include <yaz/odr.h>
 
+#ifdef WIN32
+#define strncasecmp _strnicmp
+#endif
+
 static const char *cs_errlist[] =
 {
     "No error or unspecified error",
@@ -26,8 +31,16 @@ static const char *cs_errlist[] =
 
 const char *cs_errmsg(int n)
 {
-    if (n < 0 || n > 6)
-       n = 0;
+    static char buf[250];
+
+    if (n < CSNONE || n > CSLASTERROR) {
+       sprintf(buf, "unknown comstack error %d", n);
+       return buf;
+    }
+    if (n == CSYSERR) {
+       sprintf(buf, "%s: %s", cs_errlist[n], strerror(errno));
+       return buf;
+    }
     return cs_errlist[n];
 }
 
@@ -213,21 +226,21 @@ int cs_complete_auto(const unsigned char *buf, int len)
                     }
                     break;
                 }
-                else if (i < len - 21 &&
-                         !memcmp(buf+i, "Transfer-Encoding: ", 18))
+                else if (i < len - 20 && 
+                         !strncasecmp(buf+i, "Transfer-Encoding:", 18))
                 {
                     i+=18;
-                    if (buf[i] == ' ')
+                    while (buf[i] == ' ')
                         i++;
                     if (i < len - 8)
-                        if (!memcmp(buf+i, "chunked", 7))
+                        if (!strncasecmp(buf+i, "chunked", 7))
                             chunked = 1;
                 }
-                else if (i < len - 18 &&
-                         !memcmp(buf+i, "Content-Length: ", 15))
+                else if (i < len - 17 &&
+                         !strncasecmp(buf+i, "Content-Length:", 15))
                 {
                     i+= 15;
-                    if (buf[i] == ' ')
+                    while (buf[i] == ' ')
                         i++;
                     content_len = 0;
                     while (i <= len-4 && isdigit(buf[i]))