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) {
Attachment:
pgp00000.pgp
Description: PGP signature