Mercurial > pidgin
comparison libpurple/util.c @ 16084:a5a831a5f186
Patch cleanups:
* Whitespace consistency
* Comment cleanups
* if (foo) g_free(foo); fixes
* other small stuff, I'm sure
This closes ticket #78.
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Fri, 13 Apr 2007 04:15:14 +0000 |
parents | f2a4b05407d7 |
children | 6613fb7af427 |
comparison
equal
deleted
inserted
replaced
16083:f2a4b05407d7 | 16084:a5a831a5f186 |
---|---|
859 | 859 |
860 /************************************************************************** | 860 /************************************************************************** |
861 * Markup Functions | 861 * Markup Functions |
862 **************************************************************************/ | 862 **************************************************************************/ |
863 | 863 |
864 /* Returns a NULL-terminated string after unescaping an entity | |
865 * (eg. &, < & etc.) starting at s. Returns NULL on failure.*/ | |
866 const char * | 864 const char * |
867 purple_markup_detect_entity(const char *text, int *length) | 865 purple_markup_unescape_entity(const char *text, int *length) |
868 { | 866 { |
869 const char *pln; | 867 const char *pln; |
870 int len, pound; | 868 int len, pound; |
871 | 869 |
872 if (!text || *text != '&') | 870 if (!text || *text != '&') |
907 if (length) | 905 if (length) |
908 *length = len; | 906 *length = len; |
909 return pln; | 907 return pln; |
910 } | 908 } |
911 | 909 |
912 gchar* | 910 char * |
913 purple_markup_get_css_property(const gchar *style, | 911 purple_markup_get_css_property(const gchar *style, |
914 const gchar *opt) | 912 const gchar *opt) |
915 { | 913 { |
916 const gchar *css_str = style; | 914 const gchar *css_str = style; |
917 const gchar *css_value_start; | 915 const gchar *css_value_start; |
918 const gchar *css_value_end; | 916 const gchar *css_value_end; |
919 gchar *tmp; | 917 gchar *tmp; |
920 gchar *ret; | 918 gchar *ret; |
921 | 919 |
922 if(!css_str) | 920 if (!css_str) |
923 return NULL; | 921 return NULL; |
924 | 922 |
925 /* find the CSS property */ | 923 /* find the CSS property */ |
926 while(1){ | 924 while (1) |
927 /* skip widespace characters */ | 925 { |
928 while(*css_str && g_ascii_isspace(*css_str)) | 926 /* skip whitespace characters */ |
927 while (*css_str && g_ascii_isspace(*css_str)) | |
929 css_str++; | 928 css_str++; |
930 if(!g_ascii_isalpha(*css_str)) | 929 if (!g_ascii_isalpha(*css_str)) |
931 return NULL; | 930 return NULL; |
932 if(g_ascii_strncasecmp(css_str, opt, strlen(opt))) | 931 if (g_ascii_strncasecmp(css_str, opt, strlen(opt))) |
933 { | 932 { |
934 /* go to next css property positioned after the next ';' */ | 933 /* go to next css property positioned after the next ';' */ |
935 while(*css_str && *css_str != '"' && *css_str != ';') | 934 while (*css_str && *css_str != '"' && *css_str != ';') |
936 css_str++; | 935 css_str++; |
937 if(*css_str != ';') | 936 if(*css_str != ';') |
938 return NULL; | 937 return NULL; |
939 css_str++; | 938 css_str++; |
940 } | 939 } |
941 else break; | 940 else |
941 break; | |
942 } | 942 } |
943 | 943 |
944 /* find the CSS value position in the string */ | 944 /* find the CSS value position in the string */ |
945 css_str += strlen(opt); | 945 css_str += strlen(opt); |
946 while(*css_str && g_ascii_isspace(*css_str)) | 946 while (*css_str && g_ascii_isspace(*css_str)) |
947 css_str++; | 947 css_str++; |
948 if(*css_str != ':') | 948 if (*css_str != ':') |
949 return NULL; | 949 return NULL; |
950 css_str++; | 950 css_str++; |
951 while(*css_str && g_ascii_isspace(*css_str)) | 951 while (*css_str && g_ascii_isspace(*css_str)) |
952 css_str++; | 952 css_str++; |
953 if(*css_str == '\0' || *css_str == '"' || *css_str == ';') | 953 if (*css_str == '\0' || *css_str == '"' || *css_str == ';') |
954 return NULL; | 954 return NULL; |
955 | 955 |
956 /* mark the CSS value */ | 956 /* mark the CSS value */ |
957 css_value_start = css_str; | 957 css_value_start = css_str; |
958 while(*css_str && *css_str != '"' && *css_str != ';') | 958 while (*css_str && *css_str != '"' && *css_str != ';') |
959 css_str++; | 959 css_str++; |
960 css_value_end = css_str - 1; | 960 css_value_end = css_str - 1; |
961 | 961 |
962 /* Removes trailing whitespace */ | 962 /* Removes trailing whitespace */ |
963 while(css_value_end > css_value_start && g_ascii_isspace(*css_value_end)) | 963 while (css_value_end > css_value_start && g_ascii_isspace(*css_value_end)) |
964 css_value_end--; | 964 css_value_end--; |
965 | 965 |
966 tmp = g_strndup(css_value_start, css_value_end - css_value_start + 1); | 966 tmp = g_strndup(css_value_start, css_value_end - css_value_start + 1); |
967 ret = purple_unescape_html(tmp); | 967 ret = purple_unescape_html(tmp); |
968 g_free(tmp); | 968 g_free(tmp); |
1568 } else if(*c == '&') { | 1568 } else if(*c == '&') { |
1569 char buf[7]; | 1569 char buf[7]; |
1570 const char *pln; | 1570 const char *pln; |
1571 int len; | 1571 int len; |
1572 | 1572 |
1573 if ((pln = purple_markup_detect_entity(c, &len)) == NULL) { | 1573 if ((pln = purple_markup_unescape_entity(c, &len)) == NULL) { |
1574 len = 1; | 1574 len = 1; |
1575 g_snprintf(buf, sizeof(buf), "%c", *c); | 1575 g_snprintf(buf, sizeof(buf), "%c", *c); |
1576 pln = buf; | 1576 pln = buf; |
1577 } | 1577 } |
1578 xhtml = g_string_append_len(xhtml, c, len); | 1578 xhtml = g_string_append_len(xhtml, c, len); |
1773 else if (!g_ascii_isspace(str2[i])) | 1773 else if (!g_ascii_isspace(str2[i])) |
1774 { | 1774 { |
1775 visible = TRUE; | 1775 visible = TRUE; |
1776 } | 1776 } |
1777 | 1777 |
1778 if (str2[i] == '&' && (ent = purple_markup_detect_entity(str2 + i, &entlen)) != NULL) | 1778 if (str2[i] == '&' && (ent = purple_markup_unescape_entity(str2 + i, &entlen)) != NULL) |
1779 { | 1779 { |
1780 while (*ent) | 1780 while (*ent) |
1781 str2[j++] = *ent++; | 1781 str2[j++] = *ent++; |
1782 i += entlen - 1; | 1782 i += entlen - 1; |
1783 continue; | 1783 continue; |
2091 GString *ret = g_string_new(""); | 2091 GString *ret = g_string_new(""); |
2092 while (*c) { | 2092 while (*c) { |
2093 int len; | 2093 int len; |
2094 const char *ent; | 2094 const char *ent; |
2095 | 2095 |
2096 if ((ent = purple_markup_detect_entity(c, &len)) != NULL) { | 2096 if ((ent = purple_markup_unescape_entity(c, &len)) != NULL) { |
2097 ret = g_string_append(ret, ent); | 2097 ret = g_string_append(ret, ent); |
2098 c += len; | 2098 c += len; |
2099 } else if (!strncmp(c, "<br>", 4)) { | 2099 } else if (!strncmp(c, "<br>", 4)) { |
2100 ret = g_string_append_c(ret, '\n'); | 2100 ret = g_string_append_c(ret, '\n'); |
2101 c += 4; | 2101 c += 4; |