Mercurial > gftp.yaz
diff lib/sshv2.c @ 843:32dbed7e0dc4
2006-11-2 Brian Masney <masneyb@gftp.org>
* lib/local.c lib/misc.c lib/sshv2.c - more improvements to make sure
that the filename is encoded in the proper character set.
author | masneyb |
---|---|
date | Fri, 03 Nov 2006 02:35:47 +0000 |
parents | dd83cd01dc30 |
children | 8263cc35c027 |
line wrap: on
line diff
--- a/lib/sshv2.c Fri Nov 03 02:01:16 2006 +0000 +++ b/lib/sshv2.c Fri Nov 03 02:35:47 2006 +0000 @@ -1025,9 +1025,9 @@ static int sshv2_getcwd (gftp_request * request) { + char *tempstr, *dir, *utf8; sshv2_message message; - char *tempstr, *dir; - size_t msglen; + size_t len; int ret; g_return_val_if_fail (request != NULL, GFTP_EFATAL); @@ -1038,8 +1038,8 @@ else dir = request->directory; - tempstr = sshv2_initialize_buffer_with_i18n_string (request, dir, &msglen); - ret = sshv2_send_command (request, SSH_FXP_REALPATH, tempstr, msglen); + tempstr = sshv2_initialize_buffer_with_i18n_string (request, dir, &len); + ret = sshv2_send_command (request, SSH_FXP_REALPATH, tempstr, len); g_free (tempstr); if (ret < 0) return (ret); @@ -1059,9 +1059,18 @@ if ((ret = sshv2_buffer_get_int32 (request, &message, 1, 1, NULL)) < 0) return (ret); - if ((request->directory = sshv2_buffer_get_string (request, &message, 1)) == NULL) + if ((dir = sshv2_buffer_get_string (request, &message, 1)) == NULL) return (GFTP_EFATAL); + utf8 = gftp_string_to_utf8 (request, dir, &len); + if (utf8 != NULL) + { + request->directory = utf8; + g_free (dir); + } + else + request->directory = dir; + sshv2_message_free (&message); return (0); }