# HG changeset patch # User Daniel Atallah # Date 1118097491 0 # Node ID be22eb8fa67125d48ebf46f1e06985804f1ebba3 # Parent e5f99cbcda9cff98000be72427520d25d0e141bc [gaim-migrate @ 12802] Fix encoding of filename committer: Tailor Script diff -r e5f99cbcda9c -r be22eb8fa671 src/protocols/yahoo/yahoo_filexfer.c --- a/src/protocols/yahoo/yahoo_filexfer.c Mon Jun 06 20:40:37 2005 +0000 +++ b/src/protocols/yahoo/yahoo_filexfer.c Mon Jun 06 22:38:11 2005 +0000 @@ -94,7 +94,7 @@ GaimConnection *gc; GaimAccount *account; struct yahoo_data *yd; - char *filename; + char *filename, *encoded_filename; gaim_debug(GAIM_DEBUG_INFO, "yahoo", "AAA - in yahoo_sendfile_connected\n"); @@ -124,9 +124,10 @@ size = g_strdup_printf("%" G_GSIZE_FORMAT, gaim_xfer_get_size(xfer)); filename = g_path_get_basename(gaim_xfer_get_local_filename(xfer)); + encoded_filename = yahoo_string_encode(gc, filename, NULL); yahoo_packet_hash(pkt, "sssss", 0, gaim_connection_get_display_name(gc), - 5, xfer->who, 14, "", 27, filename, 28, size); + 5, xfer->who, 14, "", 27, encoded_filename, 28, size); content_length = YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt); @@ -150,6 +151,7 @@ g_free(size); g_free(post); g_free(buf); + g_free(encoded_filename); g_free(filename); } @@ -423,18 +425,23 @@ xfer->data = xfer_data; /* Set the info about the incoming file. */ - if (filename) - gaim_xfer_set_filename(xfer, filename); - else { + if (filename) { + char *utf8_filename = yahoo_string_decode(gc, filename, TRUE); + gaim_xfer_set_filename(xfer, utf8_filename); + g_free(utf8_filename); + } else { gchar *start, *end; start = g_strrstr(xfer_data->path, "/"); if (start) start++; end = g_strrstr(xfer_data->path, "?"); if (start && *start && end) { + char *utf8_filename; filename = g_strndup(start, end - start); - gaim_xfer_set_filename(xfer, filename); + utf8_filename = yahoo_string_decode(gc, filename, TRUE); g_free(filename); + gaim_xfer_set_filename(xfer, utf8_filename); + g_free(utf8_filename); filename = NULL; } }