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);
 }