Ensure we're using unsigned char's ptrs for ctype functions.
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 21 Oct 2008 14:39:13 +0000 (16:39 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 21 Oct 2008 14:39:13 +0000 (16:39 +0200)
Ensure we're using unsigned char's ptrs for ctype functions. If not,
Pazpar2 will crash on Windows. This commit also removes ctype.h includes
from source where it's not needed.

src/charsets.c
src/client.c
src/connection.c
src/dirent.c
src/http.c
src/http_command.c
src/normalize7bit.c
src/relevance.c
src/termlists.c

index b2470bd..35dd611 100644 (file)
@@ -182,7 +182,7 @@ static const char *pp2_relevance_token_a_to_z(pp2_relevance_token_t prt)
     int c;
 
     /* skip white space */
-    while (*cp && (c = raw_char(tolower(*cp))) < 0)
+    while (*cp && (c = raw_char(tolower(*(const unsigned char *)cp))) < 0)
         cp++;
     if (*cp == '\0')
     {
index edb5156..0a8860d 100644 (file)
@@ -35,7 +35,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include <unistd.h>
 #endif
 #include <signal.h>
-#include <ctype.h>
 #include <assert.h>
 
 #include <yaz/marcdisp.h>
index c93e182..fac727b 100644 (file)
@@ -36,7 +36,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #endif
 
 #include <signal.h>
-#include <ctype.h>
 #include <assert.h>
 
 #include <yaz/log.h>
index 6daba7e..a543bf9 100644 (file)
@@ -24,7 +24,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include <config.h>
 #endif
 
-#include <ctype.h>
 #include <assert.h>
 #ifdef WIN32
 #include <io.h>
index 2ad82ce..474401d 100644 (file)
@@ -351,7 +351,7 @@ static int package_check(const char *buf, int sz)
             while (*cp == ' ')
                 cp++;
             content_len = 0;
-            while (*cp && isdigit(*cp))
+            while (*cp && isdigit(*(const unsigned char *)cp))
                 content_len = content_len*10 + (*cp++ - '0');
             if (content_len < 0) /* prevent negative offsets */
                 content_len = 0;
@@ -404,7 +404,7 @@ struct http_response *http_parse_response_buf(struct http_channel *c, const char
                 return 0;
             *(value++) = '\0';
             h->name = nmem_strdup(c->nmem, p);
-            while (isspace(*value))
+            while (isspace(*(const unsigned char *) value))
                 value++;
             if (value >= p2)  // Empty header;
             {
index 2670b26..0cc172b 100644 (file)
@@ -27,7 +27,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #endif
 #include <stdlib.h>
 #include <string.h>
-#include <ctype.h>
 #if HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
index e4efb47..6e1562a 100644 (file)
@@ -35,8 +35,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 /** \brief removes leading whitespace.. Removes suffix cahrs in rm_chars */
 char * normalize7bit_generic(char * str, const char * rm_chars)
 {
-    unsigned char *p, *pe;
-    for (p = str; *p && isspace(*p); p++)
+    char *p, *pe;
+    for (p = str; *p && isspace(*(unsigned char *)p); p++)
         ;
     for (pe = p + strlen(p) - 1;
          pe > p && strchr(rm_chars, *pe); pe--)
@@ -48,18 +48,18 @@ char * normalize7bit_generic(char * str, const char * rm_chars)
 
 char * normalize7bit_mergekey(char *buf, int skiparticle)
 {
-    unsigned char *p = buf, *pout = buf;
+    char *p = buf, *pout = buf;
 
     if (skiparticle)
     {
         char firstword[64];
         char articles[] = "the den der die des an a "; // must end in space
 
-        while (*p && !isalnum(*p))
+        while (*p && !isalnum(*(unsigned char *)p))
             p++;
         pout = firstword;
         while (*p && *p != ' ' && pout - firstword < 62)
-            *(pout++) = tolower(*(p++));
+            *(pout++) = tolower(*(unsigned char *)(p++));
         *(pout++) = ' ';
         *(pout++) = '\0';
         if (!strstr(articles, firstword))
@@ -69,13 +69,13 @@ char * normalize7bit_mergekey(char *buf, int skiparticle)
 
     while (*p)
     {
-        while (*p && !isalnum(*p))
+        while (*p && !isalnum(*(unsigned char *)p))
             p++;
-        while (isalnum(*p))
-            *(pout++) = tolower(*(p++));
+        while (isalnum(*(unsigned char *)p))
+            *(pout++) = tolower(*(unsigned char *)(p++));
         if (*p)
             *(pout++) = ' ';
-        while (*p && !isalnum(*p))
+        while (*p && !isalnum(*(unsigned char *)p))
             p++;
     }
     if (buf != pout)
index 86ba9ec..bb08103 100644 (file)
@@ -21,7 +21,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include <config.h>
 #endif
 
-#include <ctype.h>
 #include <math.h>
 #include <stdlib.h>
 
index 00247f2..3af94df 100644 (file)
@@ -23,7 +23,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include <stdlib.h>
 #include <string.h>
-#include <ctype.h>
 #include <yaz/yaz-util.h>
 
 #include "termlists.h"