X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fcomstack.c;h=7ed6665e99e2ce22d401306f33ecde5f8d8da577;hb=97554b23cfc19394bb77f7f3c4bf0c8abf89297b;hp=4d842f7ae29373519dacbdcc78b7f4d536fba8c4;hpb=c6e47cbbff56f39f6d81b079ebaeac41d793d4d9;p=yaz-moved-to-github.git diff --git a/src/comstack.c b/src/comstack.c index 4d842f7..7ed6665 100644 --- a/src/comstack.c +++ b/src/comstack.c @@ -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 #include +#include #include #include #include #include +#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]))