[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [gftp] Re: A native encoding patch for gftp 2.0.14
I have noticed this and I have tried it, in most cases it work. But it seem's
that it still have some bugs on this. I will try to find them sometime later
and send the description of the bugs to this mail list.
Thanks for your great work of gFTP. :-)
Ling
* Brian Masney <masneyb@seul.org> [2003-07-17 06:49:52 -0400]:
> I already have this working in my latest test code. Please check out the
> latest CVS (http://developer.gnome.org/tools/cvs.html) or download
> http://www.gftp.org/gftp-test.tar.bz2. If the filename is not in UTF-8, it
> will try to convert it from the current locale and if that fails, it will then
> try to convert it from the locales that are specified in the remote_charsets
> option.
>
> Brian
>
>
>
> On Wed, Jul 16, 2003 at 08:03:01AM +0800, Ling Li wrote:
> > Hi all.
> >
> > I have write a patch for gFTP 2.0.14, which make gFTP process filenames
> > in native encoding correctly, and I have tested it on my system with
> > LC_CTYPE set to zh_CN.GBK.
> >
> > Ling Li 2003.07.16
>
> >
> > *** /home/liling/src/gftp/gftp-2.0.14/lib/gftp.h Wed Dec 4 10:35:44 2002
> > --- /home/liling/src/gftp/gftp-2.0.14.patched/lib/gftp.h Tue Jul 15 21:15:01 2003
> > ***************
> > *** 844,848 ****
> > --- 844,853 ----
> > void gftp_swap_socks ( gftp_request * dest,
> > gftp_request * source );
> >
> > + #if GLIB_MAJOR_VERSION > 1
> > + char* gftp_locale_to_utf8 ( const char *from );
> > + char* gftp_locale_from_utf8 ( const char *from );
> > + #endif
> > +
> > #endif
> >
> >
> > *** /home/liling/src/gftp/gftp-2.0.14/lib/protocols.c Thu Dec 5 08:43:06 2002
> > --- /home/liling/src/gftp/gftp-2.0.14.patched/lib/protocols.c Wed Jul 16 00:52:02 2003
> > ***************
> > *** 152,163 ****
> > gftp_get_file (gftp_request * request, const char *filename, int fd,
> > size_t startsize)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > request->cached = 0;
> > if (request->get_file == NULL)
> > return (-2);
> > ! return (request->get_file (request, filename, fd, startsize));
> > }
> >
> >
> > --- 152,176 ----
> > gftp_get_file (gftp_request * request, const char *filename, int fd,
> > size_t startsize)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > request->cached = 0;
> > if (request->get_file == NULL)
> > return (-2);
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(filename);
> > ! ret = request->get_file (request, tempstr, fd, startsize);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->get_file (request, filename, fd, startsize);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 165,176 ****
> > gftp_put_file (gftp_request * request, const char *filename, int fd,
> > size_t startsize, size_t totalsize)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > request->cached = 0;
> > if (request->put_file == NULL)
> > return (-2);
> > ! return (request->put_file (request, filename, fd, startsize, totalsize));
> > }
> >
> >
> > --- 178,202 ----
> > gftp_put_file (gftp_request * request, const char *filename, int fd,
> > size_t startsize, size_t totalsize)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > request->cached = 0;
> > if (request->put_file == NULL)
> > return (-2);
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(filename);
> > ! ret = request->put_file (request, tempstr, fd, startsize, totalsize);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->put_file (request, filename, fd, startsize, totalsize);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 181,186 ****
> > --- 207,218 ----
> > int tofd, size_t tosize)
> > {
> > long size;
> > + long ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *lfromfile, *ltofile;
> > + gsize bread, bwrite;
> > + GError * error;
> > + #endif
> >
> > g_return_val_if_fail (fromreq != NULL, -2);
> > g_return_val_if_fail (fromfile != NULL, -2);
> > ***************
> > *** 191,210 ****
> > {
> > if (fromreq->transfer_file == NULL)
> > return (-2);
> > ! return (fromreq->transfer_file (fromreq, fromfile, fromsize, toreq,
> > ! tofile, tosize));
> > }
> >
> > fromreq->cached = 0;
> > toreq->cached = 0;
> > ! if ((size = gftp_get_file (fromreq, fromfile, fromfd, tosize)) < 0)
> > return (-2);
> > -
> > if (gftp_put_file (toreq, tofile, tofd, tosize, size) != 0)
> > {
> > if (gftp_abort_transfer (fromreq) != 0)
> > gftp_end_transfer (fromreq);
> > -
> > return (-2);
> > }
> >
> > --- 223,251 ----
> > {
> > if (fromreq->transfer_file == NULL)
> > return (-2);
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! lfromfile = gftp_locale_from_utf8 (fromfile);
> > ! ltofile = gftp_locale_from_utf8 (tofile);
> > ! ret = fromreq->transfer_file (fromreq, lfromfile, fromsize, toreq,
> > ! ltofile, tosize);
> > ! g_free(lfromfile);
> > ! g_free(ltofile);
> > ! #else
> > ! ret = fromreq->transfer_file (fromreq, fromfile, fromsize, toreq,
> > ! tofile, tosize);
> > ! #endif
> > ! return (ret);
> > }
> >
> > fromreq->cached = 0;
> > toreq->cached = 0;
> > ! size = gftp_get_file (fromreq, fromfile, fromfd, tosize);
> > ! if (size < 0)
> > return (-2);
> > if (gftp_put_file (toreq, tofile, tofd, tosize, size) != 0)
> > {
> > if (gftp_abort_transfer (fromreq) != 0)
> > gftp_end_transfer (fromreq);
> > return (-2);
> > }
> >
> > ***************
> > *** 286,295 ****
> > int
> > gftp_list_files (gftp_request * request)
> > {
> > ! int fd;
> >
> > g_return_val_if_fail (request != NULL, -2);
> >
> > request->cached = 0;
> > if (request->use_cache && (fd = gftp_find_cache_entry (request)) > 0)
> > {
> > --- 327,343 ----
> > int
> > gftp_list_files (gftp_request * request)
> > {
> > ! int fd, ret;
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! char *tempstr;
> > ! #endif
> >
> > g_return_val_if_fail (request != NULL, -2);
> >
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = request->directory;
> > + request->directory = gftp_locale_from_utf8(request->directory);
> > + #endif
> > request->cached = 0;
> > if (request->use_cache && (fd = gftp_find_cache_entry (request)) > 0)
> > {
> > ***************
> > *** 299,304 ****
> > --- 347,356 ----
> >
> > request->cachefd = fd;
> > request->cached = 1;
> > + #if GLIB_MAJOR_VERSION > 1
> > + g_free(request->directory);
> > + request->directory = tempstr;
> > + #endif
> > return (0);
> > }
> > else if (request->use_cache)
> > ***************
> > *** 308,315 ****
> > }
> >
> > if (request->list_files == NULL)
> > ! return (-2);
> > ! return (request->list_files (request));
> > }
> >
> >
> > --- 360,375 ----
> > }
> >
> > if (request->list_files == NULL)
> > ! ret = -2;
> > ! else
> > ! ret = request->list_files (request);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! g_free(request->directory);
> > ! request->directory = tempstr;
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 340,358 ****
> > ret = request->get_next_file (request, fle, fd);
> >
> > #if GLIB_MAJOR_VERSION > 1
> > ! if (fle->file != NULL && !g_utf8_validate (fle->file, -1, NULL))
> > ! {
> > ! error = NULL;
> > ! if ((tempstr = g_locale_to_utf8 (fle->file, -1, &bread,
> > ! &bwrite, &error)) != NULL)
> > ! {
> > ! g_free (fle->file);
> > ! fle->file = tempstr;
> > ! }
> > ! else
> > ! g_warning ("Error when converting %s to UTF-8: %s\n", fle->file,
> > ! error->message);
> > ! }
> > #endif
> >
> > if (ret >= 0 && !request->cached && request->cachefd > 0 &&
> > --- 400,410 ----
> > ret = request->get_next_file (request, fle, fd);
> >
> > #if GLIB_MAJOR_VERSION > 1
> > ! if (fle->file != NULL) {
> > ! tempstr = gftp_locale_to_utf8(fle->file);
> > ! g_free (fle->file);
> > ! fle->file = tempstr;
> > ! }
> > #endif
> >
> > if (ret >= 0 && !request->cached && request->cachefd > 0 &&
> > ***************
> > *** 556,565 ****
> > int
> > gftp_set_directory (gftp_request * request, const char *directory)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> > g_return_val_if_fail (directory != NULL, -2);
> >
> > -
> > if (request->sockfd <= 0 && !request->always_connected)
> > {
> > if (directory != request->directory)
> > --- 608,621 ----
> > int
> > gftp_set_directory (gftp_request * request, const char *directory)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> > g_return_val_if_fail (directory != NULL, -2);
> >
> > if (request->sockfd <= 0 && !request->always_connected)
> > {
> > if (directory != request->directory)
> > ***************
> > *** 569,579 ****
> > request->directory = g_malloc (strlen (directory) + 1);
> > strcpy (request->directory, directory);
> > }
> > ! return (0);
> > }
> > else if (request->chdir == NULL)
> > ! return (-2);
> > ! return (request->chdir (request, directory));
> > }
> >
> >
> > --- 625,650 ----
> > request->directory = g_malloc (strlen (directory) + 1);
> > strcpy (request->directory, directory);
> > }
> > ! ret = 0;
> > }
> > else if (request->chdir == NULL)
> > ! ret = -2;
> > ! else
> > ! {
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8 (directory);
> > ! g_free (request->directory);
> > ! request->directory = tempstr;
> > ! ret = request->chdir (request, request->directory);
> > ! tempstr = gftp_locale_to_utf8 (request->directory);
> > ! g_free (request->directory);
> > ! request->directory = tempstr;
> > ! #else
> > ! ret = request->chdir (request, directory);
> > ! #endif
> > ! }
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 650,682 ****
> > int
> > gftp_remove_directory (gftp_request * request, const char *directory)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->rmdir == NULL)
> > return (-2);
> > ! return (request->rmdir (request, directory));
> > }
> >
> >
> > int
> > gftp_remove_file (gftp_request * request, const char *file)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->rmfile == NULL)
> > return (-2);
> > ! return (request->rmfile (request, file));
> > }
> >
> >
> > int
> > gftp_make_directory (gftp_request * request, const char *directory)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->mkdir == NULL)
> > return (-2);
> > ! return (request->mkdir (request, directory));
> > }
> >
> >
> > --- 721,795 ----
> > int
> > gftp_remove_directory (gftp_request * request, const char *directory)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char* tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->rmdir == NULL)
> > return (-2);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(directory);
> > ! ret = request->rmdir (request, tempstr);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->rmdir (request, directory);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > int
> > gftp_remove_file (gftp_request * request, const char *file)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char* tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->rmfile == NULL)
> > return (-2);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(file);
> > ! ret = request->rmfile (request, tempstr);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->rmfile (request, file);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > int
> > gftp_make_directory (gftp_request * request, const char *directory)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char* tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->mkdir == NULL)
> > return (-2);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(directory);
> > ! ret = request->mkdir (request, tempstr);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->mkdir (request, directory);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 684,716 ****
> > gftp_rename_file (gftp_request * request, const char *oldname,
> > const char *newname)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->rename == NULL)
> > return (-2);
> > ! return (request->rename (request, oldname, newname));
> > }
> >
> >
> > int
> > gftp_chmod (gftp_request * request, const char *file, int mode)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->chmod == NULL)
> > return (-2);
> > ! return (request->chmod (request, file, mode));
> > }
> >
> >
> > int
> > gftp_set_file_time (gftp_request * request, const char *file, time_t datetime)
> > {
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->set_file_time == NULL)
> > return (-2);
> > ! return (request->set_file_time (request, file, datetime));
> > }
> >
> >
> > --- 797,872 ----
> > gftp_rename_file (gftp_request * request, const char *oldname,
> > const char *newname)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr, *tempstr1;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->rename == NULL)
> > return (-2);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(oldname);
> > ! tempstr1 = gftp_locale_from_utf8(newname);
> > ! ret = request->rename (request, tempstr, tempstr1);
> > ! g_free(tempstr);
> > ! g_free(tempstr1);
> > ! #else
> > ! ret = request->rename (request, oldname, newname);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > int
> > gftp_chmod (gftp_request * request, const char *file, int mode)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->chmod == NULL)
> > return (-2);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(file);
> > ! ret = request->chmod (request, tempstr, mode);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->chmod (request, file, mode);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > int
> > gftp_set_file_time (gftp_request * request, const char *file, time_t datetime)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, -2);
> >
> > if (request->set_file_time == NULL)
> > return (-2);
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(file);
> > ! ret = request->set_file_time (request, tempstr, datetime);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->set_file_time (request, file, datetime);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 761,771 ****
> > off_t
> > gftp_get_file_size (gftp_request * request, const char *filename)
> > {
> > g_return_val_if_fail (request != NULL, 0);
> >
> > if (request->get_file_size == NULL)
> > return (0);
> > ! return (request->get_file_size (request, filename));
> > }
> >
> >
> > --- 917,941 ----
> > off_t
> > gftp_get_file_size (gftp_request * request, const char *filename)
> > {
> > + int ret;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > g_return_val_if_fail (request != NULL, 0);
> >
> > if (request->get_file_size == NULL)
> > return (0);
> > !
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8(filename);
> > ! ret = request->get_file_size (request, tempstr);
> > ! g_free(tempstr);
> > ! #else
> > ! ret = request->get_file_size (request, filename);
> > ! #endif
> > !
> > ! return (ret);
> > }
> >
> >
> > ***************
> > *** 1481,1486 ****
> > --- 1651,1657 ----
> > unsigned long *newsize;
> > GHashTable * dirhash;
> > gftp_file * curfle;
> > + int set_dir_ret;
> >
> > g_return_val_if_fail (transfer != NULL, -1);
> > g_return_val_if_fail (transfer->fromreq != NULL, -1);
> > ***************
> > *** 1530,1543 ****
> > transfer->toreq->directory = curfle->destfile;
> > }
> > forcecd = 1;
> > ! if (gftp_set_directory (transfer->fromreq,
> > ! transfer->fromreq->directory) == 0)
> > {
> > if (curfle->startsize > 0 && transfer->toreq)
> > {
> > remotechanged = 1;
> > ! if (gftp_set_directory (transfer->toreq,
> > ! transfer->toreq->directory) != 0)
> > curfle->startsize = 0;
> > }
> >
> > --- 1701,1719 ----
> > transfer->toreq->directory = curfle->destfile;
> > }
> > forcecd = 1;
> > ! set_dir_ret = gftp_set_directory (transfer->fromreq,
> > ! transfer->fromreq->directory);
> > ! curfle->file = transfer->fromreq->directory;
> > ! if (set_dir_ret == 0)
> > {
> > if (curfle->startsize > 0 && transfer->toreq)
> > {
> > remotechanged = 1;
> > ! set_dir_ret =
> > ! gftp_set_directory (transfer->toreq,
> > ! transfer->toreq->directory);
> > ! curfle->destfile = transfer->toreq->directory;
> > ! if (set_dir_ret != 0)
> > curfle->startsize = 0;
> > }
> >
> > ***************
> > *** 2194,2196 ****
> > --- 2370,2419 ----
> > dest->swap_socks (dest, source);
> > }
> >
> > + #if GLIB_MAJOR_VERSION > 1
> > + char*
> > + gftp_locale_to_utf8(const char *from)
> > + {
> > + char *result = NULL;
> > + gsize bread, bwrite;
> > + GError * error;
> > +
> > + if (from != NULL)
> > + {
> > + error = NULL;
> > + if ((result = g_locale_to_utf8 (from, -1, &bread,
> > + &bwrite, &error)) == NULL)
> > + g_warning ("Error when converting %s from UTF-8: %s\n", from,
> > + error->message);
> > + }
> > + else
> > + {
> > + result = g_memdup(from, (strlen (from) + 1));
> > + }
> > +
> > + return result;
> > + }
> > +
> > + char*
> > + gftp_locale_from_utf8(const char *from)
> > + {
> > + char *result;
> > + gsize bread, bwrite;
> > + GError * error;
> > +
> > + if (from != NULL && g_utf8_validate (from, -1, NULL))
> > + {
> > + error = NULL;
> > + if ((result = g_locale_from_utf8 (from, -1, &bread,
> > + &bwrite, &error)) == NULL)
> > + g_warning ("Error when converting %s from UTF-8: %s\n", from,
> > + error->message);
> > + }
> > + else
> > + {
> > + result = g_memdup(from, (strlen (from) + 1));
> > + }
> > +
> > + return result;
> > + }
> > + #endif
> >
> > *** /home/liling/src/gftp/gftp-2.0.14/src/gtk/transfer.c Thu Dec 5 08:43:07 2002
> > --- /home/liling/src/gftp/gftp-2.0.14.patched/src/gtk/transfer.c Wed Jul 16 01:02:10 2003
> > ***************
> > *** 768,774 ****
> > --- 768,780 ----
> > {
> > if (transfer->toreq->mkdir != NULL)
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_from_utf8(curfle->destfile);
> > + transfer->toreq->mkdir (transfer->toreq, tempstr);
> > + g_free(tempstr);
> > + #else
> > transfer->toreq->mkdir (transfer->toreq, curfle->destfile);
> > + #endif
> > if (!GFTP_IS_CONNECTED (transfer->toreq))
> > break;
> > }
> >
> > *** /home/liling/src/gftp/gftp-2.0.14/src/gtk/view_dialog.c Thu Nov 21 08:33:51 2002
> > --- /home/liling/src/gftp/gftp-2.0.14.patched/src/gtk/view_dialog.c Tue Jul 15 21:15:01 2003
> > ***************
> > *** 29,34 ****
> > --- 29,37 ----
> > gftp_window_data * fromwdata, * towdata;
> > gftp_file * new_fle;
> > int num;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> >
> > fromwdata = data;
> > towdata = fromwdata == &window1 ? &window2 : &window1;
> > ***************
> > *** 49,55 ****
> > }
> >
> > if (strcmp (GFTP_GET_PROTOCOL_NAME (fromwdata->request), "Local") == 0)
> > ! view_file (curfle->file, 0, 1, 0, 1, 1, NULL, fromwdata);
> > else
> > {
> > new_fle = copy_fdata (curfle);
> > --- 52,66 ----
> > }
> >
> > if (strcmp (GFTP_GET_PROTOCOL_NAME (fromwdata->request), "Local") == 0)
> > ! {
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8 (curfle->file);
> > ! view_file (tempstr, 0, 1, 0, 1, 1, NULL, fromwdata);
> > ! g_free (tempstr);
> > ! #else
> > ! view_file (curfle->file, 0, 1, 0, 1, 1, NULL, fromwdata);
> > ! #endif
> > ! }
> > else
> > {
> > new_fle = copy_fdata (curfle);
> > ***************
> > *** 84,89 ****
> > --- 95,103 ----
> > GList * templist, * filelist, * newfile;
> > gftp_file * new_fle;
> > int num;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> >
> > fromwdata = data;
> > towdata = fromwdata == &window1 ? &window2 : &window1;
> > ***************
> > *** 111,117 ****
> > }
> >
> > if (strcmp (GFTP_GET_PROTOCOL_NAME (fromwdata->request), "Local") == 0)
> > ! view_file (curfle->file, 0, 0, 0, 1, 1, NULL, fromwdata);
> > else
> > {
> > new_fle = copy_fdata (curfle);
> > --- 125,139 ----
> > }
> >
> > if (strcmp (GFTP_GET_PROTOCOL_NAME (fromwdata->request), "Local") == 0)
> > ! {
> > ! #if GLIB_MAJOR_VERSION > 1
> > ! tempstr = gftp_locale_from_utf8 (curfle->file);
> > ! view_file (tempstr, 0, 0, 0, 1, 1, NULL, fromwdata);
> > ! g_free (tempstr);
> > ! #else
> > ! view_file (curfle->file, 0, 0, 0, 1, 1, NULL, fromwdata);
> > ! #endif
> > ! }
> > else
> > {
> > new_fle = copy_fdata (curfle);
> >
> > *** /home/liling/src/gftp/gftp-2.0.14/src/text/gftp-text.c Wed Nov 27 22:29:56 2002
> > --- /home/liling/src/gftp/gftp-2.0.14.patched/src/text/gftp-text.c Tue Jul 15 21:15:01 2003
> > ***************
> > *** 389,401 ****
> > --- 389,411 ----
> > int
> > gftp_text_pwd (gftp_request * request, char *command, gpointer *data)
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + char *tempstr;
> > + #endif
> > +
> > if (!GFTP_IS_CONNECTED (request))
> > {
> > gftp_text_log (gftp_logging_error, NULL,
> > _("Error: Not connected to a remote site\n"));
> > return (1);
> > }
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_from_utf8(request->directory);
> > + gftp_text_log (gftp_logging_misc, NULL, "%s\n", tempstr);
> > + g_free(tempstr);
> > + #else
> > gftp_text_log (gftp_logging_misc, NULL, "%s\n", request->directory);
> > + #endif
> > return (1);
> > }
> >
> > ***************
> > *** 458,463 ****
> > --- 468,477 ----
> > int
> > gftp_text_rmdir (gftp_request * request, char *command, gpointer *data)
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> > +
> > if (!GFTP_IS_CONNECTED (request))
> > {
> > gftp_text_log (gftp_logging_error, NULL,
> > ***************
> > *** 471,477 ****
> > --- 485,497 ----
> > }
> > else
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_to_utf8(command);
> > + gftp_remove_directory (request, tempstr);
> > + g_free(tempstr);
> > + #else
> > gftp_remove_directory (request, command);
> > + #endif
> > }
> > return (1);
> > }
> > ***************
> > *** 480,485 ****
> > --- 500,508 ----
> > int
> > gftp_text_delete (gftp_request * request, char *command, gpointer *data)
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> > if (!GFTP_IS_CONNECTED (request))
> > {
> > gftp_text_log (gftp_logging_error, NULL,
> > ***************
> > *** 493,499 ****
> > --- 516,528 ----
> > }
> > else
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_to_utf8(command);
> > + gftp_remove_file (request, tempstr);
> > + g_free(tempstr);
> > + #else
> > gftp_remove_file (request, command);
> > + #endif
> > }
> > return (1);
> > }
> > ***************
> > *** 503,508 ****
> > --- 532,540 ----
> > gftp_text_rename (gftp_request * request, char *command, gpointer *data)
> > {
> > char *pos;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> >
> > if (!GFTP_IS_CONNECTED (request))
> > {
> > ***************
> > *** 521,527 ****
> > --- 553,565 ----
> > }
> > else
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_to_utf8(command);
> > + gftp_rename_file (request, tempstr, pos);
> > + g_free(tempstr);
> > + #else
> > gftp_rename_file (request, command, pos);
> > + #endif
> > }
> > return (1);
> > }
> > ***************
> > *** 531,536 ****
> > --- 569,577 ----
> > gftp_text_chmod (gftp_request * request, char *command, gpointer *data)
> > {
> > char *pos;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> >
> > if (!GFTP_IS_CONNECTED (request))
> > {
> > ***************
> > *** 549,555 ****
> > --- 590,602 ----
> > }
> > else
> > {
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_to_utf8(command);
> > + gftp_chmod (request, pos, strtol (tempstr, NULL, 10));
> > + g_free(tempstr);
> > + #else
> > gftp_chmod (request, pos, strtol (command, NULL, 10));
> > + #endif
> > }
> > return (1);
> > }
> > ***************
> > *** 563,568 ****
> > --- 610,620 ----
> > int sortcol, sortasds;
> > gftp_file * fle;
> > time_t curtime;
> > + #if GLIB_MAJOR_VERSION > 1
> > + gsize bread, bwrite;
> > + char *tempstr;
> > + GError * error;
> > + #endif
> >
> > time (&curtime);
> > if (!GFTP_IS_CONNECTED (request))
> > ***************
> > *** 618,623 ****
> > --- 670,681 ----
> >
> > fle = templist->data;
> >
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_from_utf8 (fle->file);
> > + g_free (fle->file);
> > + fle->file = tempstr;
> > + #endif
> > +
> > if (*fle->attribs == 'd')
> > color = COLOR_BLUE;
> > else if (*fle->attribs == 'l')
> > ***************
> > *** 696,701 ****
> > --- 754,762 ----
> > {
> > gftp_transfer * transfer;
> > gftp_file * fle;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> >
> > if (!GFTP_IS_CONNECTED (gftp_text_remreq))
> > {
> > ***************
> > *** 723,729 ****
> > --- 784,795 ----
> > return (1);
> > }
> > fle = g_malloc0 (sizeof (*fle));
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_to_utf8(command);
> > + while (gftp_get_next_file (transfer->fromreq, tempstr, fle) > 0)
> > + #else
> > while (gftp_get_next_file (transfer->fromreq, command, fle) > 0)
> > + #endif
> > {
> > if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)
> > {
> > ***************
> > *** 735,740 ****
> > --- 801,809 ----
> > }
> > g_free (fle);
> > gftp_end_transfer (transfer->fromreq);
> > + #if GLIB_MAJOR_VERSION > 1
> > + g_free(tempstr);
> > + #endif
> >
> > if (transfer->files == NULL)
> > {
> > ***************
> > *** 769,774 ****
> > --- 838,846 ----
> > {
> > gftp_transfer * transfer;
> > gftp_file * fle;
> > + #if GLIB_MAJOR_VERSION > 1
> > + char * tempstr;
> > + #endif
> >
> > if (!GFTP_IS_CONNECTED (gftp_text_remreq))
> > {
> > ***************
> > *** 795,801 ****
> > --- 867,878 ----
> > return (1);
> > }
> > fle = g_malloc (sizeof (*fle));
> > + #if GLIB_MAJOR_VERSION > 1
> > + tempstr = gftp_locale_to_utf8(command);
> > + while (gftp_get_next_file (transfer->fromreq, tempstr, fle) > 0)
> > + #else
> > while (gftp_get_next_file (transfer->fromreq, command, fle) > 0)
> > + #endif
> > {
> > if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)
> > {
> > ***************
> > *** 807,812 ****
> > --- 884,892 ----
> > }
> > g_free (fle);
> > gftp_end_transfer (transfer->fromreq);
> > + #if GLIB_MAJOR_VERSION > 1
> > + g_free(tempstr);
> > + #endif
> >
> > if (transfer->files == NULL)
> > {
>