comparison src/util.c @ 11132:a4611130e3eb

[gaim-migrate @ 13189] A bit more dewarnification. I also think I found a memleak in sametime. siege, could you please check that out sometime? committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Wed, 20 Jul 2005 02:43:09 +0000
parents 719779387f96
children f2755f58a7da
comparison
equal deleted inserted replaced
11131:ece127d56c14 11132:a4611130e3eb
245 245
246 return out; 246 return out;
247 } 247 }
248 248
249 /************************************************************************** 249 /**************************************************************************
250 * Quoted Printable Functions (see RFC 1341) 250 * Quoted Printable Functions (see RFC 2045).
251 **************************************************************************/ 251 **************************************************************************/
252 void 252 guint8 *
253 gaim_quotedp_decode(const char *str, char **ret_str, int *ret_len) 253 gaim_quotedp_decode(const char *str, gsize *ret_len)
254 { 254 {
255 char *n, *new; 255 char *n, *new;
256 const char *end, *p; 256 const char *end, *p;
257 257
258 n = new = g_malloc(strlen (str) + 1); 258 n = new = g_malloc(strlen (str) + 1);
285 *n = *p; 285 *n = *p;
286 } 286 }
287 287
288 *n = '\0'; 288 *n = '\0';
289 289
290 if (ret_len) 290 if (ret_len != NULL)
291 *ret_len = n - new; 291 *ret_len = n - new;
292 292
293 /* Resize to take less space */ 293 /* Resize to take less space */
294 /* new = realloc(new, n - new); */ 294 /* new = realloc(new, n - new); */
295 295
296 *ret_str = new; 296 return (guint8 *)new;
297 } 297 }
298 298
299 /************************************************************************** 299 /**************************************************************************
300 * MIME Functions 300 * MIME Functions
301 **************************************************************************/ 301 **************************************************************************/
411 char *encoding = g_strndup(encoding0, encoded_text0 - encoding0 - 1); 411 char *encoding = g_strndup(encoding0, encoded_text0 - encoding0 - 1);
412 char *encoded_text = g_strndup(encoded_text0, cur - encoded_text0 - 1); 412 char *encoded_text = g_strndup(encoded_text0, cur - encoded_text0 - 1);
413 guint8 *decoded = NULL; 413 guint8 *decoded = NULL;
414 gsize dec_len; 414 gsize dec_len;
415 if (g_ascii_strcasecmp(encoding, "Q") == 0) 415 if (g_ascii_strcasecmp(encoding, "Q") == 0)
416 gaim_quotedp_decode(encoded_text, &decoded, &dec_len); 416 decoded = gaim_quotedp_decode(encoded_text, &dec_len);
417 else if (g_ascii_strcasecmp(encoding, "B") == 0) 417 else if (g_ascii_strcasecmp(encoding, "B") == 0)
418 decoded = gaim_base64_decode(encoded_text, &dec_len); 418 decoded = gaim_base64_decode(encoded_text, &dec_len);
419 else 419 else
420 decoded = NULL; 420 decoded = NULL;
421 if (decoded) { 421 if (decoded) {
422 gsize len; 422 gsize len;
423 char *converted = g_convert(decoded, dec_len, "utf-8", charset, NULL, &len, NULL); 423 char *converted = g_convert((const gchar *)decoded, dec_len, "utf-8", charset, NULL, &len, NULL);
424 424
425 if (converted) { 425 if (converted) {
426 n = strncpy(n, converted, len) + len; 426 n = strncpy(n, converted, len) + len;
427 g_free(converted); 427 g_free(converted);
428 } 428 }