changeset 830:afbe37351940

2006-10-19 Brian Masney <masneyb@gftp.org> WARNING: The CVS version of gFTP is currently broken, especially for international users. This will be fixed in a few days. * src/gtk/gtkui.c src/gtk/gtkui_transfer.c src/gtk/misc-gtk.c lib/gftp.h lib/misc.c lib/protocols.c - removed code that converts the filename to UTF8. This will be handled by the library. Removed utf8_file member from the gftp_file structure. * lib/rfc959.c - convert the file or directory from UTF8 to the proper locale when sending a command to the server. * src/uicommon/gftpui.c src/gtk/menu-items.c lib/misc.c lib/gftp.h (gftp_gen_ls_string) - convert the filename from UTF8 to the proper locale before it is displayed to the user.
author masneyb
date Thu, 19 Oct 2006 11:41:04 +0000
parents 74f49d528c68
children 739462d1bfb5
files ChangeLog lib/gftp.h lib/misc.c lib/protocols.c lib/rfc959.c src/gtk/gtkui.c src/gtk/gtkui_transfer.c src/gtk/menu-items.c src/gtk/misc-gtk.c src/uicommon/gftpui.c
diffstat 10 files changed, 130 insertions(+), 157 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Oct 15 18:45:06 2006 +0000
+++ b/ChangeLog	Thu Oct 19 11:41:04 2006 +0000
@@ -1,3 +1,19 @@
+2006-10-19 Brian Masney <masneyb@gftp.org>
+	WARNING: The CVS version of gFTP is currently broken, especially for
+	international users. This will be fixed in a few days.
+
+	* src/gtk/gtkui.c src/gtk/gtkui_transfer.c src/gtk/misc-gtk.c lib/gftp.h
+	lib/misc.c lib/protocols.c - removed code that converts the filename to
+	UTF8. This will be handled by the library. Removed utf8_file member from
+	the gftp_file structure.
+
+	* lib/rfc959.c - convert the file or directory from UTF8 to the proper
+	locale when sending a command to the server.
+
+	* src/uicommon/gftpui.c src/gtk/menu-items.c lib/misc.c lib/gftp.h
+	(gftp_gen_ls_string) - convert the filename from UTF8 to the proper
+	locale before it is displayed to the user.
+
 2006-10-15 Brian Masney <masneyb@gftp.org>
 	* src/gtk/transfer.c - split the code that checks for finished view and
 	edit processes into smaller functions.
@@ -3633,7 +3649,7 @@
 
 	* cvsclean - added this script
 
-	* *.[ch] - added $Id: ChangeLog,v 1.484 2006/10/15 18:45:04 masneyb Exp $ tags
+	* *.[ch] - added $Id: ChangeLog,v 1.485 2006/10/19 11:41:02 masneyb Exp $ tags
 
 	* debian/* - updated files from Debian maintainer
 
--- a/lib/gftp.h	Sun Oct 15 18:45:06 2006 +0000
+++ b/lib/gftp.h	Thu Oct 19 11:41:04 2006 +0000
@@ -232,9 +232,6 @@
 struct gftp_file_tag 
 {
   /*@null@*/ char *file,	/* Our filename */
-                  *utf8_file,	/* UTF-8 encoded filename for display purposes
-				   only. This is only set if file is not in 
-				   UTF-8 */
                   *user,	/* User that owns it */
                   *group,	/* Group that owns it */
                   *destfile;	/* Full pathname to the destination for the 
@@ -772,7 +769,8 @@
 					  int column, 
 					  int asds );
 
-char * gftp_gen_ls_string 		( gftp_file * fle, 
+char * gftp_gen_ls_string 		( gftp_request * request,
+					  gftp_file * fle, 
 					  char *file_prefixstr, 
 					  char *file_suffixstr );
 
--- a/lib/misc.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/lib/misc.c	Thu Oct 19 11:41:04 2006 +0000
@@ -458,9 +458,6 @@
   if (fle->file)
     newfle->file = g_strdup (fle->file);
 
-  if (fle->utf8_file)
-    newfle->utf8_file = g_strdup (fle->utf8_file);
-
   if (fle->user)
     newfle->user = g_strdup (fle->user);
 
@@ -873,9 +870,10 @@
 
 
 char *
-gftp_gen_ls_string (gftp_file * fle, char *file_prefixstr, char *file_suffixstr)
+gftp_gen_ls_string (gftp_request * request, gftp_file * fle,
+                    char *file_prefixstr, char *file_suffixstr)
 {
-  char *tempstr1, *tempstr2, *ret, tstr[50], *attribs;
+  char *tempstr1, *tempstr2, *ret, tstr[50], *attribs, *utf8;
   struct tm *lt;
   time_t t;
 
@@ -902,9 +900,10 @@
   if (file_suffixstr == NULL)
     file_suffixstr = "";
 
+  utf8 = gftp_string_from_utf8 (request, fle->file);
   ret = g_strdup_printf ("%s %s %s %s%s%s", tempstr1, tempstr2, tstr, 
                          file_prefixstr, 
-                         fle->utf8_file != NULL ? fle->utf8_file : fle->file,
+                         utf8 != NULL ? utf8: fle->file,
                          file_suffixstr);
 
   g_free (tempstr1);
--- a/lib/protocols.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/lib/protocols.c	Thu Oct 19 11:41:04 2006 +0000
@@ -106,8 +106,6 @@
 
   if (file->file)
     g_free (file->file);
-  if (file->utf8_file)
-    g_free (file->utf8_file);
   if (file->user)
     g_free (file->user);
   if (file->group)
@@ -594,7 +592,7 @@
 gftp_get_next_file (gftp_request * request, const char *filespec,
                     gftp_file * fle)
 {
-  char *slashpos, *newfile;
+  char *slashpos, *tmpfile, *utf8;
   int fd, ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
@@ -621,20 +619,28 @@
             }
 
           *slashpos = '\0';
-          newfile = g_strdup (slashpos + 1);
+          tmpfile = g_strdup (slashpos + 1);
 
           if (strcmp (fle->file, request->directory) != 0)
             request->logging_function (gftp_logging_error, request,
                                        _("Warning: Stripping path off of file '%s'. The stripped path (%s) doesn't match the current directory (%s)\n"),
-                                       newfile, fle->file, request->directory,
+                                       tmpfile, fle->file, request->directory,
                                        g_strerror (errno));
           
           g_free (fle->file);
-          fle->file = newfile;
+          fle->file = tmpfile;
         }
 
       if (ret >= 0 && fle->file != NULL)
-        fle->utf8_file = gftp_string_to_utf8 (request, fle->file);
+        {
+          utf8 = gftp_string_to_utf8 (request, fle->file);
+          if (utf8 != NULL)
+            {
+              tmpfile = fle->file;
+              fle->file = utf8;
+              g_free (tmpfile);
+            }
+        }
 
       if (ret >= 0 && !request->cached && request->cachefd > 0 && 
           request->last_dir_entry != NULL)
--- a/lib/rfc959.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/lib/rfc959.c	Thu Oct 19 11:41:04 2006 +0000
@@ -192,6 +192,33 @@
     return (0);
 }
 
+static int
+rfc959_generate_and_send_command (gftp_request * request, const char *command,
+                                  const char *argument, int read_response,
+                                  int dont_try_to_reconnect)
+{
+  char *tempstr, *utf8;
+  int resp;
+
+  if (argument != NULL)
+    {
+      utf8 = gftp_string_from_utf8 (request, argument);
+      if (utf8 != NULL)
+        {
+          tempstr = g_strconcat (command, " ", utf8, "\r\n", NULL);
+          g_free (utf8);
+        }
+      tempstr = g_strconcat (command, " ", argument, "\r\n", NULL);
+    }
+  else
+    tempstr = g_strconcat (command, "\r\n", NULL);
+
+  resp = rfc959_send_command (request, tempstr, read_response,
+                              dont_try_to_reconnect);
+  g_free (tempstr);
+  return (resp);
+}
+
 
 static char *
 parse_ftp_proxy_string (gftp_request * request)
@@ -322,7 +349,7 @@
 static int
 rfc959_getcwd (gftp_request * request)
 {
-  char *pos, *dir;
+  char *pos, *dir, *utf8;
   int ret;
 
   ret = rfc959_send_command (request, "PWD\r\n", 1, 0);
@@ -362,7 +389,12 @@
   if (request->directory)
     g_free (request->directory);
 
-  request->directory = g_strdup (dir);
+  utf8 = gftp_string_to_utf8 (request, dir);
+  if (utf8 != NULL)
+    request->directory = utf8;
+  else
+    request->directory = g_strdup (dir);
+
   return (0);
 }
 
@@ -370,7 +402,6 @@
 static int
 rfc959_chdir (gftp_request * request, const char *directory)
 {
-  char *tempstr;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
@@ -379,11 +410,7 @@
   if (strcmp (directory, "..") == 0)
     ret = rfc959_send_command (request, "CDUP\r\n", 1, 0);
   else
-    {
-      tempstr = g_strconcat ("CWD ", directory, "\r\n", NULL);
-      ret = rfc959_send_command (request, tempstr, 1, 0);
-      g_free (tempstr);
-    }
+    ret = rfc959_generate_and_send_command (request, "CWD", directory, 1, 0);
 
   if (ret < 0)
     return (ret);
@@ -401,13 +428,11 @@
 rfc959_syst (gftp_request * request)
 {
   int ret, disable_ls_options;
-  rfc959_parms * parms;
   char *stpos, *endpos;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  parms = request->protocol_data;
   ret = rfc959_send_command (request, "SYST\r\n", 1, 0);
 
   if (ret < 0)
@@ -460,7 +485,7 @@
 int
 rfc959_connect (gftp_request * request)
 {
-  char tempchar, *startpos, *endpos, *tempstr, *email, *proxy_hostname, *utf8;
+  char tempchar, *startpos, *endpos, *tempstr, *email, *proxy_hostname;
   intptr_t ascii_transfers, proxy_port;
   rfc959_parms * parms;
   int ret, resp;
@@ -535,34 +560,23 @@
     }
   else
     {
-      tempstr = g_strconcat ("USER ", request->username, "\r\n", NULL);
-      resp = rfc959_send_command (request, tempstr, 1, 0);
-      g_free (tempstr);
+      resp = rfc959_generate_and_send_command (request, "USER",
+                                               request->username, 1, 0);
       if (resp < 0)
         return (resp);
 
       if (resp == '3')
 	{
-          utf8 = gftp_string_from_utf8 (request, request->password);
-          if (utf8 != NULL)
-            {
-              tempstr = g_strconcat ("PASS ", utf8, "\r\n", NULL);
-              g_free (utf8);
-            }
-          else
-            tempstr = g_strconcat ("PASS ", request->password, "\r\n", NULL);
-
-	  resp = rfc959_send_command (request, tempstr, 1, 0);
-	  g_free (tempstr);
+          resp = rfc959_generate_and_send_command (request, "PASS",
+                                                   request->password, 1, 0);
           if (resp < 0)
             return (resp);
         }
 
       if (resp == '3' && request->account != NULL)
 	{
-	  tempstr = g_strconcat ("ACCT ", request->account, "\r\n", NULL);
-	  resp = rfc959_send_command (request, tempstr, 1, 0);
-	  g_free (tempstr);
+          resp = rfc959_generate_and_send_command (request, "ACCT",
+                                                   request->account, 1, 0);
           if (resp < 0)
             return (resp);
 	}
@@ -990,11 +1004,11 @@
 static int
 rfc959_data_connection_new (gftp_request * request, int dont_try_to_reconnect)
 {
+  int ret;
+
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  int ret;
-
 #ifdef HAVE_IPV6
   if (request->ai_family == AF_INET6)
     ret = rfc959_ipv6_data_connection_new (request);
@@ -1172,10 +1186,7 @@
         }
     }
 
-  tempstr = g_strconcat ("RETR ", filename, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (request, "RETR", filename, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret != '1')
@@ -1207,7 +1218,7 @@
                  off_t startsize, off_t totalsize)
 {
   intptr_t passive_transfer;
-  char *command, *tempstr;
+  char *command;
   rfc959_parms * parms;
   int ret;
 
@@ -1244,9 +1255,7 @@
         }
     }
 
-  tempstr = g_strconcat ("STOR ", filename, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
+  ret = rfc959_generate_and_send_command (request, "STOR", filename, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret != '1')
@@ -1306,17 +1315,11 @@
   else if (ret != '2')
     return (GFTP_ERETRYABLE);
 
-  tempstr = g_strconcat ("RETR ", fromfile, "\r\n", NULL);
-  ret = rfc959_send_command (fromreq, tempstr, 0, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (fromreq, "RETR", fromfile, 0, 0);
   if (ret < 0)
     return (ret);
 
-  tempstr = g_strconcat ("STOR ", tofile, "\r\n", NULL);
-  ret = rfc959_send_command (toreq, tempstr, 0, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (toreq, "STOR", tofile, 0, 0);
   if (ret < 0)
     return (ret);
 
@@ -1610,21 +1613,19 @@
 static off_t
 rfc959_get_file_size (gftp_request * request, const char *filename)
 {
-  char *tempstr;
   int ret;
 
   g_return_val_if_fail (request != NULL, 0);
   g_return_val_if_fail (filename != NULL, 0);
   g_return_val_if_fail (request->datafd > 0, 0);
 
-  tempstr = g_strconcat ("SIZE ", filename, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
+  ret = rfc959_generate_and_send_command (request, "SIZE", filename, 1, 0);
   if (ret < 0)
     return (ret);
 
   if (*request->last_ftp_response != '2')
     return (0);
+
   return (strtol (request->last_ftp_response + 4, NULL, 10));
 }
 
@@ -1632,17 +1633,13 @@
 static int
 rfc959_rmdir (gftp_request * request, const char *directory)
 {
-  char *tempstr;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (directory != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  tempstr = g_strconcat ("RMD ", directory, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (request, "RMD", directory, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret == '2')
@@ -1655,17 +1652,13 @@
 static int
 rfc959_rmfile (gftp_request * request, const char *file)
 {
-  char *tempstr;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (file != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  tempstr = g_strconcat ("DELE ", file, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (request, "DELE", file, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret == '2')
@@ -1678,17 +1671,13 @@
 static int
 rfc959_mkdir (gftp_request * request, const char *directory)
 {
-  char *tempstr;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (directory != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  tempstr = g_strconcat ("MKD ", directory, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (request, "MKD", directory, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret == '2')
@@ -1702,7 +1691,6 @@
 rfc959_rename (gftp_request * request, const char *oldname,
 	       const char *newname)
 {
-  char *tempstr;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
@@ -1710,19 +1698,13 @@
   g_return_val_if_fail (newname != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  tempstr = g_strconcat ("RNFR ", oldname, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (request, "RNFR", oldname, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret != '3')
     return (GFTP_ERETRYABLE);
 
-  tempstr = g_strconcat ("RNTO ", newname, "\r\n", NULL);
-  ret = rfc959_send_command (request, tempstr, 1, 0);
-  g_free (tempstr);
-
+  ret = rfc959_generate_and_send_command (request, "RNTO", newname, 1, 0);
   if (ret < 0)
     return (ret);
   else if (ret == '2')
@@ -1735,16 +1717,21 @@
 static int
 rfc959_chmod (gftp_request * request, const char *file, mode_t mode)
 {
-  rfc959_parms * parms;
-  char *tempstr;
+  char *tempstr, *utf8;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (file != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  parms = request->protocol_data;
-  tempstr = g_strdup_printf ("SITE CHMOD %o %s\r\n", mode, file);
+  utf8 = gftp_string_from_utf8 (request, file);
+  if (utf8 != NULL)
+    {
+      tempstr = g_strdup_printf ("SITE CHMOD %o %s\r\n", mode, utf8);
+      g_free (utf8);
+    }
+  else
+    tempstr = g_strdup_printf ("SITE CHMOD %o %s\r\n", mode, file);
 
   ret = rfc959_send_command (request, tempstr, 1, 0);
   g_free (tempstr);
@@ -1761,17 +1748,30 @@
 static int
 rfc959_site (gftp_request * request, int specify_site, const char *command)
 {
-  char *tempstr;
+  char *tempstr, *utf8;
   int ret;
 
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (command != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
 
-  if (specify_site)
-    tempstr = g_strconcat ("SITE ", command, "\r\n", NULL);
+  utf8 = gftp_string_from_utf8 (request, command);
+  if (utf8 != NULL)
+    {
+      if (specify_site)
+        tempstr = g_strconcat ("SITE ", utf8, "\r\n", NULL);
+      else
+        tempstr = g_strconcat (utf8, "\r\n", NULL);
+
+      g_free (utf8);
+    }
   else
-    tempstr = g_strconcat (command, "\r\n", NULL);
+    {
+      if (specify_site)
+        tempstr = g_strconcat ("SITE ", command, "\r\n", NULL);
+      else
+        tempstr = g_strconcat (command, "\r\n", NULL);
+    }
 
   ret = rfc959_send_command (request, tempstr, 1, 0);
   g_free (tempstr);
@@ -1785,29 +1785,6 @@
 }
 
 
-static char *
-rfc959_time_t_to_mdtm (gftp_request * request, time_t datetime)
-{
-  struct tm gt;
-  char *ret;
-
-  if (localtime_r (&datetime, &gt) != NULL)
-    {
-      ret = g_strdup_printf ("%04d%02d%02d%02d%02d%02d", gt.tm_year + 1900,
-                             gt.tm_mon + 1, gt.tm_mday, gt.tm_hour, gt.tm_min,
-                             gt.tm_sec);
-      return (ret);
-    }
-  else
-    {
-      request->logging_function (gftp_logging_error, request,
-                                 "Cannot parse UNIX timestamp %d: %s\n",
-                                 datetime, g_strerror (errno));
-      return (NULL);
-    }
-}
-
-
 static int
 rfc959_set_config_options (gftp_request * request)
 {
--- a/src/gtk/gtkui.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/src/gtk/gtkui.c	Thu Oct 19 11:41:04 2006 +0000
@@ -469,17 +469,12 @@
 char *
 gftpui_gtk_get_utf8_file_pos (gftp_file * fle)
 {
-  char *disp_item, *pos;
+  char *pos;
 
-  if (fle->utf8_file != NULL)
-    disp_item = fle->utf8_file;
-  else
-    disp_item = fle->file;
-
-  if ((pos = strrchr (disp_item, '/')) != NULL)
+  if ((pos = strrchr (fle->file, '/')) != NULL)
     pos++;
   else
-    pos = disp_item;
+    pos = fle->file;
 
   return (pos);
 }
--- a/src/gtk/gtkui_transfer.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/src/gtk/gtkui_transfer.c	Thu Oct 19 11:41:04 2006 +0000
@@ -206,7 +206,7 @@
 gftpui_ask_transfer (gftp_transfer * tdata)
 {
   char *dltitles[4], *add_data[4] = { NULL, NULL, NULL, NULL },
-       tempstr[50], temp1str[50], *pos, *utf8_file;
+       tempstr[50], temp1str[50], *pos;
   GtkWidget * dialog, * tempwid, * scroll, * hbox;
   gftp_file * tempfle;
   GList * templist;
@@ -293,8 +293,7 @@
       if (strncmp (pos, tdata->toreq->directory, len) == 0)
         pos += len + 1;
 
-      utf8_file = gftp_string_to_utf8 (tdata->toreq, pos);
-      add_data[0] = utf8_file != NULL ? utf8_file : pos;
+      add_data[0] = pos;
 
       gftp_get_transfer_action (tdata->fromreq, tempfle);
       switch (tempfle->transfer_action)
@@ -319,9 +318,6 @@
 
       i = gtk_clist_append (GTK_CLIST (tdata->clist), add_data);
       gtk_clist_set_row_data (GTK_CLIST (tdata->clist), i, tempfle);
-
-      if (utf8_file != NULL)
-        g_free (utf8_file);
     }
 
   gtk_clist_select_all (GTK_CLIST (tdata->clist));
--- a/src/gtk/menu-items.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/src/gtk/menu-items.c	Thu Oct 19 11:41:04 2006 +0000
@@ -116,7 +116,7 @@
       if (!tempfle->shown)
         continue;
 
-      tempstr = gftp_gen_ls_string (tempfle, NULL, NULL);
+      tempstr = gftp_gen_ls_string (NULL, tempfle, NULL, NULL);
       fprintf (fd, "%s\n", tempstr);
       g_free (tempstr);
     }
--- a/src/gtk/misc-gtk.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/src/gtk/misc-gtk.c	Thu Oct 19 11:41:04 2006 +0000
@@ -298,7 +298,7 @@
 void
 update_window (gftp_window_data * wdata)
 {
-  char *tempstr, *hostname, *fspec, *utf8_directory;
+  char *tempstr, *hostname, *fspec;
   int connected, start;
 
   connected = GFTP_IS_CONNECTED (wdata->request);
@@ -320,19 +320,8 @@
       g_free (tempstr);
 
       if (wdata->request->directory != NULL)
-        {
-          utf8_directory = gftp_string_to_utf8 (wdata->request, 
-                                                wdata->request->directory);
-          if (utf8_directory != NULL)
-            {
-              gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (wdata->combo)->entry),
-                                  utf8_directory);
-              g_free (utf8_directory);
-            }
-          else
-            gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (wdata->combo)->entry),
-                                wdata->request->directory);
-        }
+        gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (wdata->combo)->entry),
+                            wdata->request->directory);
     }
   else if (wdata->hoststxt != NULL)
     {
@@ -757,10 +746,7 @@
    
   gtk_clist_set_pixmap (GTK_CLIST (wdata->listbox), clist_num, 0, pix, bitmap);
 
-  if (fle->utf8_file)
-    gtk_clist_set_text (GTK_CLIST (wdata->listbox), clist_num, 1, 
-                        fle->utf8_file);
-  else if (fle->file)
+  if (fle->file != NULL)
     gtk_clist_set_text (GTK_CLIST (wdata->listbox), clist_num, 1, fle->file);
 
   if (GFTP_IS_SPECIAL_DEVICE (fle->st_mode))
--- a/src/uicommon/gftpui.c	Sun Oct 15 18:45:06 2006 +0000
+++ b/src/uicommon/gftpui.c	Thu Oct 19 11:41:04 2006 +0000
@@ -621,7 +621,7 @@
       fle = templist->data;
 
       gftpui_lookup_file_colors (fle, &startcolor, &endcolor);
-      tempstr = gftp_gen_ls_string (fle, startcolor, endcolor);
+      tempstr = gftp_gen_ls_string (request, fle, startcolor, endcolor);
       request->logging_function (gftp_logging_misc_nolog, request, "%s\n",
                                  tempstr);
       g_free (tempstr);