# HG changeset patch # User Yoshiki Yazawa # Date 1217419568 -32400 # Node ID c3f205ec461991a0de26b67305c61088b9a0281b # Parent 9e3d1d731176aaf8f51f0a5fb2543c68af5238b8 work in progress asymmetric bracket code. diff -r 9e3d1d731176 -r c3f205ec4619 pidgin-twitter.c --- a/pidgin-twitter.c Wed Jul 30 17:11:03 2008 +0900 +++ b/pidgin-twitter.c Wed Jul 30 21:06:08 2008 +0900 @@ -61,6 +61,21 @@ /* our implementation */ /**********************/ +gchar * +twitter_memrchr(const gchar *s, int c, size_t n) +{ + int nn = n; + + g_return_val_if_fail(s != NULL, NULL); + + while(nn+1) { + if((int)*(s+nn) == c) + return (gchar *)(s+nn); + nn--; + } + return NULL; +} + static gchar *html_tags[] = { "", @@ -141,6 +156,7 @@ return str; } +#if 0 begin = strchr(startp, '<'); if(begin) end = strchr(begin + 1, '>'); @@ -151,6 +167,33 @@ g_free(html); return str; /* no corresponding >, we have done. */ } +#else + /* xxx needs test */ + end = strchr(startp, '>'); + if(end) { + begin = twitter_memrchr(startp, '<', end - startp); + if(begin < startp) + begin = NULL; + } + + if(!begin && !end) { + tmp = g_strconcat(str, startp, NULL); + g_free(str); + str = tmp; + g_free(html); + return str; /* no corresponding >, we have done. */ + } + + /* xxx simplify */ + if(!begin && end) { + tmp = g_strndup(startp, end - startp + 1); + tmp2 = g_strconcat(str, tmp, NULL); + g_free(str); + str = tmp2; + startp = end + 1; + goto loop; + } +#endif /* here, both < and > are found */ /* concatenate leading part to dest */