diff lib/protocols.c @ 566:502a126418cd

2004-9-26 Brian Masney <masneyb@gftp.org> * lib/protocols.c (gftp_put_file) - use g_filename_from_utf8() to change the encoding of the filename (if needed)
author masneyb
date Mon, 27 Sep 2004 00:12:11 +0000
parents 7f54d0c0edbc
children 3adfe34b1a77
line wrap: on
line diff
--- a/lib/protocols.c	Sat Sep 25 12:50:59 2004 +0000
+++ b/lib/protocols.c	Mon Sep 27 00:12:11 2004 +0000
@@ -187,12 +187,36 @@
 gftp_put_file (gftp_request * request, const char *filename, int fd,
                off_t startsize, off_t totalsize)
 {
+  char *tempstr, *enc_filename;
+  gsize bread, bwrite;
+  GError * error;
+  int ret;
+
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
 
   request->cached = 0;
   if (request->put_file == NULL)
     return (GFTP_EFATAL);
-  return (request->put_file (request, filename, fd, startsize, totalsize));
+
+  if (g_utf8_validate (filename, -1, NULL))
+    enc_filename = g_filename_from_utf8 (filename, -1, &bread, &bwrite, &error);
+  else
+    {
+      tempstr = gftp_string_to_utf8 (request, filename);
+      enc_filename = g_filename_from_utf8 (tempstr, -1, &bread, &bwrite,
+                                           &error);
+      g_free (tempstr);
+    }
+
+  if (enc_filename)
+    {
+      ret = request->put_file (request, enc_filename, fd, startsize, totalsize);
+      g_free (enc_filename);
+    }
+  else
+    ret = request->put_file (request, filename, fd, startsize, totalsize);
+
+  return (ret);
 }