10139N/A@@ -81,6 +81,57 @@ static char* parser_get_param_name(char*
10139N/A+#define UTF8_COMPUTE(Char, Mask, Len) \
10139N/A+ else if ((Char & 0xe0) == 0xc0) \
12773N/A+ else if ((Char & 0xf0) == 0xe0) \
10139N/A+ else if ((Char & 0xf8) == 0xf0) \
10139N/A+ else if ((Char & 0xfc) == 0xf8) \
10139N/A+ else if ((Char & 0xfe) == 0xfc) \
10139N/A+#define UTF8_GET(Result, Chars, Count, Mask, Len) \
10139N/A+ (Result) = (Chars)[0] & (Mask); \
10139N/A+ for ((Count) = 1; (Count) < (Len); ++(Count)) \
10139N/A+ if (((Chars)[(Count)] & 0xc0) != 0x80) \
10139N/A+ (Result) |= ((Chars)[(Count)] & 0x3f); \
10139N/A int buffer_full; /* flag indicates that temp is smaller that
10139N/A@@ -100,13 +151,89 @@ struct icalparser_impl
10139N/A+int utf8_isspace_simple (int c)
10139N/A+char *utf8_find_prev_char (const char *str,
10139N/A+char *utf8_find_next_char (const char *p,
10139N/A+ for (++p; p < end && (*p & 0xc0) == 0x80; ++p)
10139N/A+ for (++p; (*p & 0xc0) == 0x80; ++p)
13913N/A+ return (p == end) ? NULL : (char *)p;
13754N/A+int utf8_get_char (const char *p)
13631N/A+ unsigned char c = (unsigned char) *p;
13420N/A+ UTF8_GET (result, p, i, mask, len);
13270N/A * New version of strstrip() that does not move the pointer.
12631N/A@@ -115,17 +242,27 @@ void strstriplt(char *buf)
12572N/A- while ((buf[0] != 0) && (isspace(buf[len - 1]))) {
12466N/A+ while ((buf[0] != 0) && ((p = utf8_find_prev_char(buf, p)) != NULL)) {
12287N/A- while ((buf[0]!=0) && (isspace(buf[a]))) {
12217N/A+ while ((buf[0]!=0) && p && *p) {
12022N/A+ p = utf8_find_next_char (p, NULL);
11819N/A memmove(buf, &buf[a], len - a + 1);