Mercurial > pidgin
changeset 10976:be22eb8fa671
[gaim-migrate @ 12802]
Fix encoding of filename
committer: Tailor Script <tailor@pidgin.im>
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Mon, 06 Jun 2005 22:38:11 +0000 |
parents | e5f99cbcda9c |
children | 2ce8ec01a064 |
files | src/protocols/yahoo/yahoo_filexfer.c |
diffstat | 1 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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; } }