aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2009-07-12 16:53:16 -0400
committerJorge Arellano Cid <jcid@dillo.org>2009-07-12 16:53:16 -0400
commit21ef7a9136cabaa8ed6a58d9ba12ca803b0c4478 (patch)
treeb30d6909222b4ac1a6e732424cb0d0980a965d7a
parentb9341b83c2ac0a97711e5aa44a9313a1773380a2 (diff)
Handle signed chars. Aadded dIsspace() and dIsalnum() to dlib
-rw-r--r--dlib/dlib.c10
-rw-r--r--dlib/dlib.h4
-rw-r--r--dpi/cookies.c8
-rw-r--r--dpi/file.c2
-rw-r--r--dpi/ftp.c4
-rw-r--r--src/auth.c2
-rw-r--r--src/colors.c2
-rw-r--r--src/cookies.c6
-rw-r--r--src/misc.c8
-rw-r--r--src/url.c2
10 files changed, 26 insertions, 22 deletions
diff --git a/dlib/dlib.c b/dlib/dlib.c
index a4a63995..d5383903 100644
--- a/dlib/dlib.c
+++ b/dlib/dlib.c
@@ -124,8 +124,8 @@ char *dStrstrip(char *s)
int len;
if (s && *s) {
- for (p = s; isspace(*p); ++p);
- for (len = strlen(p); len && isspace(p[len-1]); --len);
+ for (p = s; dIsspace(*p); ++p);
+ for (len = strlen(p); len && dIsspace(p[len-1]); --len);
if (p > s)
memmove(s, p, len);
s[len] = 0;
@@ -785,17 +785,17 @@ int dParser_parse_rc_line(char **line, char **name, char **value)
ret = 1;
} else if ((eq = strchr(*line, '='))) {
/* get name */
- for (p = *line; *p && *p != '=' && !isspace(*p); ++p);
+ for (p = *line; *p && *p != '=' && !dIsspace(*p); ++p);
*p = 0;
*name = *line;
/* skip whitespace */
if (p < eq)
- for (++p; isspace(*p); ++p);
+ for (++p; dIsspace(*p); ++p);
/* get value */
if (p == eq) {
- for (++p; isspace(*p); ++p);
+ for (++p; dIsspace(*p); ++p);
len = strlen(p);
if (len >= 2 && *p == '"' && p[len-1] == '"') {
p[len-1] = 0;
diff --git a/dlib/dlib.h b/dlib/dlib.h
index 72accfbd..ae9c7286 100644
--- a/dlib/dlib.h
+++ b/dlib/dlib.h
@@ -30,6 +30,10 @@ extern "C" {
#undef MIN
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+/* Handle signed char */
+#define dIsspace(c) isspace((uchar_t)(c))
+#define dIsalnum(c) isalnum((uchar_t)(c))
+
/*
*-- Casts -------------------------------------------------------------------
*/
diff --git a/dpi/cookies.c b/dpi/cookies.c
index 3dcc5d9a..d8eb4338 100644
--- a/dpi/cookies.c
+++ b/dpi/cookies.c
@@ -838,7 +838,7 @@ static CookieData_t *Cookies_parse_one(int url_port, char **cookie_str)
continue;
}
/* Skip whitespace */
- while (isspace(*str))
+ while (dIsspace(*str))
str++;
/* Get attribute */
@@ -1262,17 +1262,17 @@ static int Cookie_control_init(void)
j = 0;
/* Get the domain */
- while (line[i] != '\0' && !isspace(line[i]))
+ while (line[i] != '\0' && !dIsspace(line[i]))
domain[j++] = line[i++];
domain[j] = '\0';
/* Skip past whitespaces */
- while (isspace(line[i]))
+ while (dIsspace(line[i]))
i++;
/* Get the rule */
j = 0;
- while (line[i] != '\0' && !isspace(line[i]))
+ while (line[i] != '\0' && !dIsspace(line[i]))
rule[j++] = line[i++];
rule[j] = '\0';
diff --git a/dpi/file.c b/dpi/file.c
index 883ba073..b265b32b 100644
--- a/dpi/file.c
+++ b/dpi/file.c
@@ -122,7 +122,7 @@ static const char *File_get_content_type_from_data(void *Data, size_t Size)
_MSG("File_get_content_type_from_data:: Size = %d\n", Size);
/* HTML try */
- for (i = 0; i < Size && isspace(p[i]); ++i);
+ for (i = 0; i < Size && dIsspace(p[i]); ++i);
if ((Size - i >= 5 && !dStrncasecmp(p+i, "<html", 5)) ||
(Size - i >= 5 && !dStrncasecmp(p+i, "<head", 5)) ||
(Size - i >= 6 && !dStrncasecmp(p+i, "<title", 6)) ||
diff --git a/dpi/ftp.c b/dpi/ftp.c
index 0d733563..08ede059 100644
--- a/dpi/ftp.c
+++ b/dpi/ftp.c
@@ -97,7 +97,7 @@ static int a_Misc_get_content_type_from_data2(void *Data, size_t Size,
size_t i, non_ascci;
/* HTML try */
- for (i = 0; i < Size && isspace(p[i]); ++i);
+ for (i = 0; i < Size && dIsspace(p[i]); ++i);
if ((Size - i >= 5 && !dStrncasecmp(p+i, "<html", 5)) ||
(Size - i >= 5 && !dStrncasecmp(p+i, "<head", 5)) ||
(Size - i >= 6 && !dStrncasecmp(p+i, "<title", 6)) ||
@@ -129,7 +129,7 @@ static int a_Misc_get_content_type_from_data2(void *Data, size_t Size,
Size = MIN (Size, 256);
for (i = 0; i < Size; i++) {
ch = (uchar_t) p[i];
- if ((ch < 32 || ch > 126) && !isspace(ch))
+ if ((ch < 32 || ch > 126) && !dIsspace(ch))
++non_ascci;
}
if (Size == 256) {
diff --git a/src/auth.c b/src/auth.c
index df330ed0..a348c143 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -91,7 +91,7 @@ static int Auth_path_is_inside(const char *path1, const char *path2, int len)
static int Auth_is_token_char(char c)
{
const char *invalid = "\"()<>@,;:\\[]?=/{} \t";
- return (strchr(invalid, c) || iscntrl(c)) ? 0 : 1;
+ return (strchr(invalid, c) || iscntrl((uchar_t)c)) ? 0 : 1;
}
/*
diff --git a/src/colors.c b/src/colors.c
index 90c738c4..5b647bb2 100644
--- a/src/colors.c
+++ b/src/colors.c
@@ -246,7 +246,7 @@ int32_t a_Color_parse (const char *subtag, int32_t default_color, int *err)
int ret, low, mid, high, st = 1;
/* skip leading spaces */
- for (cp = subtag; isspace(*cp); cp++);
+ for (cp = subtag; dIsspace(*cp); cp++);
ret_color = default_color;
if (*cp == '#') {
diff --git a/src/cookies.c b/src/cookies.c
index 396f7126..745614ca 100644
--- a/src/cookies.c
+++ b/src/cookies.c
@@ -266,17 +266,17 @@ static int Cookie_control_init(void)
j = 0;
/* Get the domain */
- while (line[i] != '\0' && !isspace(line[i]))
+ while (line[i] != '\0' && !dIsspace(line[i]))
domain[j++] = line[i++];
domain[j] = '\0';
/* Skip past whitespaces */
- while (isspace(line[i]))
+ while (dIsspace(line[i]))
i++;
/* Get the rule */
j = 0;
- while (line[i] != '\0' && !isspace(line[i]))
+ while (line[i] != '\0' && !dIsspace(line[i]))
rule[j++] = line[i++];
rule[j] = '\0';
diff --git a/src/misc.c b/src/misc.c
index 19120ee9..bd963128 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -128,7 +128,7 @@ int a_Misc_get_content_type_from_data(void *Data, size_t Size, const char **PT)
DetectedContentType Type = DT_OCTET_STREAM; /* default to binary */
/* HTML try */
- for (i = 0; i < Size && isspace(p[i]); ++i);
+ for (i = 0; i < Size && dIsspace(p[i]); ++i);
if ((Size - i >= 5 && !dStrncasecmp(p+i, "<html", 5)) ||
(Size - i >= 5 && !dStrncasecmp(p+i, "<head", 5)) ||
(Size - i >= 6 && !dStrncasecmp(p+i, "<title", 6)) ||
@@ -166,7 +166,7 @@ int a_Misc_get_content_type_from_data(void *Data, size_t Size, const char **PT)
Size = MIN (Size, 256);
for (i = 0; i < Size; i++) {
int ch = (uchar_t) p[i];
- if (ch < 32 && !isspace(ch))
+ if (ch < 32 && !dIsspace(ch))
++bin_chars;
if (ch > 126)
++non_ascci;
@@ -208,13 +208,13 @@ void a_Misc_parse_content_type(const char *str, char **major, char **minor,
if (!str)
return;
- for (s = str; isalnum(*s) || (*s == '-'); s++);
+ for (s = str; dIsalnum(*s) || (*s == '-'); s++);
if (major)
*major = dStrndup(str, s - str);
is_text = (s - str == 4) && !dStrncasecmp(str, "text", 4);
if (*s == '/') {
- for (str = ++s; isalnum(*s) || (*s == '-'); s++);
+ for (str = ++s; dIsalnum(*s) || (*s == '-'); s++);
if (minor)
*minor = dStrndup(str, s - str);
}
diff --git a/src/url.c b/src/url.c
index 5d15aade..a90a4e83 100644
--- a/src/url.c
+++ b/src/url.c
@@ -585,7 +585,7 @@ char *a_Url_encode_hex_str(const char *str)
newstr = dNew(char, 6*strlen(str)+1);
for (c = newstr; *str; str++)
- if ((isalnum(*str) && !(*str & 0x80)) || strchr(verbatim, *str))
+ if ((dIsalnum(*str) && !(*str & 0x80)) || strchr(verbatim, *str))
/* we really need isalnum for the "C" locale */
*c++ = *str;
else if (*str == ' ')