libpurple/protocols/gg/utils.c

changeset 35361
efdbd45604f1
parent 35357
389e413e3414
child 36047
2d7d55acd82c
equal deleted inserted replaced
35360:29d788c72350 35361:efdbd45604f1
76 if (src == NULL) 76 if (src == NULL)
77 return NULL; 77 return NULL;
78 78
79 dst = g_convert_with_fallback(src, strlen(src), dstenc, srcenc, "?", 79 dst = g_convert_with_fallback(src, strlen(src), dstenc, srcenc, "?",
80 NULL, NULL, &err); 80 NULL, NULL, &err);
81 if (err != NULL) 81 if (err != NULL) {
82 {
83 purple_debug_error("gg", "error converting from %s to %s: %s\n", 82 purple_debug_error("gg", "error converting from %s to %s: %s\n",
84 srcenc, dstenc, err->message); 83 srcenc, dstenc, err->message);
85 g_error_free(err); 84 g_error_free(err);
86 } 85 }
87 86
120 return g_strdup(str); 119 return g_strdup(str);
121 120
122 end_ptr = g_utf8_offset_to_pointer(str, g_utf8_pointer_to_offset(str, &str[n])); 121 end_ptr = g_utf8_offset_to_pointer(str, g_utf8_pointer_to_offset(str, &str[n]));
123 raw_len = end_ptr - str; 122 raw_len = end_ptr - str;
124 123
125 if (raw_len > n) 124 if (raw_len > n) {
126 {
127 end_ptr = g_utf8_prev_char(end_ptr); 125 end_ptr = g_utf8_prev_char(end_ptr);
128 raw_len = end_ptr - str; 126 raw_len = end_ptr - str;
129 } 127 }
130 128
131 g_assert(raw_len <= n); 129 g_assert(raw_len <= n);
138 { 136 {
139 GSList *new_list = NULL; 137 GSList *new_list = NULL;
140 GList *it; 138 GList *it;
141 139
142 it = g_list_first(list); 140 it = g_list_first(list);
143 while (it) 141 while (it) {
144 {
145 new_list = g_slist_append(new_list, func(it->data, user_data)); 142 new_list = g_slist_append(new_list, func(it->data, user_data));
146 it = g_list_next(it); 143 it = g_list_next(it);
147 } 144 }
148 return new_list; 145 return new_list;
149 } 146 }
153 { 150 {
154 gchar **splitted, **it; 151 gchar **splitted, **it;
155 GList *list = NULL; 152 GList *list = NULL;
156 153
157 it = splitted = g_strsplit(string, delimiter, max_tokens); 154 it = splitted = g_strsplit(string, delimiter, max_tokens);
158 while (*it) 155 while (*it) {
159 {
160 list = g_list_append(list, *it); 156 list = g_list_append(list, *it);
161 it++; 157 it++;
162 } 158 }
163 g_free(splitted); 159 g_free(splitted);
164 160
175 list_len = g_list_length(list); 171 list_len = g_list_length(list);
176 str_array = g_new(gchar*, list_len + 1); 172 str_array = g_new(gchar*, list_len + 1);
177 173
178 it = g_list_first(list); 174 it = g_list_first(list);
179 i = 0; 175 i = 0;
180 while (it) 176 while (it) {
181 {
182 str_array[i++] = it->data; 177 str_array[i++] = it->data;
183 it = g_list_next(it); 178 it = g_list_next(it);
184 } 179 }
185 str_array[i] = NULL; 180 str_array[i] = NULL;
186 181
204 return buff; 199 return buff;
205 } 200 }
206 201
207 GList * ggp_list_truncate(GList *list, guint length, GDestroyNotify free_func) 202 GList * ggp_list_truncate(GList *list, guint length, GDestroyNotify free_func)
208 { 203 {
209 while (g_list_length(list) > length) 204 while (g_list_length(list) > length) {
210 {
211 GList *last = g_list_last(list); 205 GList *last = g_list_last(list);
212 free_func(last->data); 206 free_func(last->data);
213 list = g_list_delete_link(list, last); 207 list = g_list_delete_link(list, last);
214 } 208 }
215 return list; 209 return list;
216 } 210 }
217 211
218 gchar * ggp_free_if_equal(gchar *str, const gchar *pattern) 212 gchar * ggp_free_if_equal(gchar *str, const gchar *pattern)
219 { 213 {
220 if (g_strcmp0(str, pattern) == 0) 214 if (g_strcmp0(str, pattern) == 0) {
221 {
222 g_free(str); 215 g_free(str);
223 return NULL; 216 return NULL;
224 } 217 }
225 return str; 218 return str;
226 } 219 }

mercurial