comparison libpurple/util.c @ 30295:77aba27f64da

merged from im.pidgin.pidgin. removed our modification to jabber file transfer for now.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Wed, 05 May 2010 15:42:34 +0900
parents 06fa97f637a7 5bac51b394e6
children 2a19f7385ba5
comparison
equal deleted inserted replaced
30196:28dd2b7331fd 30295:77aba27f64da
4634 str, *bad, *bad); 4634 str, *bad, *bad);
4635 g_return_val_if_reached(NULL); 4635 g_return_val_if_reached(NULL);
4636 } 4636 }
4637 4637
4638 workstr = iter = g_new(gchar, strlen(str) + 1); 4638 workstr = iter = g_new(gchar, strlen(str) + 1);
4639 for ( ; *str; ++str) { 4639 while (*str) {
4640 guchar c = *str; 4640 gunichar ch = g_utf8_get_char(str);
4641 if (c >= 0x20 || c == '\t' || c == '\n' || c == '\r') { 4641 gchar *next = g_utf8_next_char(str);
4642 *iter = c; 4642 /*
4643 ++iter; 4643 * Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
4644 } 4644 * [#x10000-#x10FFFF]
4645 */
4646 if ((ch == '\t' || ch == '\n' || ch == '\r') ||
4647 (ch >= 0x20 && ch <= 0xD7FF) ||
4648 (ch >= 0xE000 && ch <= 0xFFFD) ||
4649 (ch >= 0x10000 && ch <= 0x10FFFF)) {
4650 memcpy(iter, str, next - str);
4651 iter += (next - str);
4652 }
4653
4654 str = next;
4645 } 4655 }
4646 4656
4647 /* nul-terminate the new string */ 4657 /* nul-terminate the new string */
4648 *iter = '\0'; 4658 *iter = '\0';
4649 4659