changeset 989:c99b134c6185

[mq]: charset2
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 01 Feb 2010 15:17:58 +0900
parents 63555c9744c2
children a4641b8c68bb
files lib/charset-conv.c lib/gftp.h lib/local.c lib/protocols.c
diffstat 4 files changed, 228 insertions(+), 361 deletions(-) [+]
line wrap: on
line diff
--- a/lib/charset-conv.c	Fri Aug 14 07:54:55 2009 +0900
+++ b/lib/charset-conv.c	Mon Feb 01 15:17:58 2010 +0900
@@ -19,10 +19,9 @@
 /*****************************************************************************/
 
 #include "gftp.h"
+#include <langinfo.h>
 static const char cvsid[] = "$Id: protocols.c 952 2008-01-24 23:31:26Z masneyb $";
 
-#if GLIB_MAJOR_VERSION > 1
-
 static /*@null@*/ char *
 _gftp_get_next_charset (char **curpos)
 {
@@ -74,187 +73,110 @@
           str, fromset, toset, error->message);
 }
 
-/*@null@*/ static char *
-_do_convert_string (gftp_request * request, int is_filename, int force_local,
-                    const char *str, size_t *dest_len, int from_utf8)
+
+char *
+gftp_string_to_utf8 (gftp_request *request, const char *str, size_t *dest_len)
 {
-  char *remote_charset = NULL, *default_charset = NULL, *ret, *fromset,
-      *toset, *stpos, *cur_charset;
-  GError * error;
-  gsize bread;
-
-  if (request == NULL)
-    return (NULL);
-
-  if (g_utf8_validate (str, -1, NULL) != from_utf8)
-    return (NULL);
-
-  error = NULL;
-//  gftp_lookup_request_option (request, "remote_charset", &remote_charset);
-  remote_charset = request->remote_charset;
-  gftp_lookup_global_option ("default_charset", &default_charset);
-  if(!remote_charset)
-      remote_charset = (default_charset && *default_charset != '\0')
-          ? default_charset : "UTF8";
+    gchar *remote_charset = NULL, *default_charset = NULL, *ret;
+    GError *error = NULL;
 
-  if (*remote_charset == '\0' || request->use_local_encoding ||
-      force_local == 1)
-    {
-      if (from_utf8)
-        {
-          if (is_filename)
-            ret = g_filename_from_utf8 (str, -1, &bread, dest_len, &error);
-          else
-            ret = g_locale_from_utf8 (str, -1, &bread, dest_len, &error);
-        }
-      else
-        {
-          if (is_filename)
-            ret = g_filename_to_utf8 (str, -1, &bread, dest_len, &error);
-          else
-            ret = g_locale_to_utf8 (str, -1, &bread, dest_len, &error);
-        }
+    gftp_lookup_global_option ("default_charset", &default_charset);
+    if(!default_charset)
+        default_charset = "UTF-8";
 
-      if (ret == NULL)
-        _do_show_iconv_error (str, request->iconv_charset, from_utf8, error);
-
-      return (ret);
-    }
+    if(request)
+        remote_charset = request->remote_charset;
+    if(!remote_charset)
+        remote_charset = default_charset;
 
-  if (from_utf8)
-    {
-      if (request->iconv_from_initialized)
-        {
-          ret = g_convert_with_iconv (str, -1, request->iconv_from, &bread, dest_len,
-                                      &error);
-          if (ret == NULL)
-            _do_show_iconv_error (str, request->iconv_charset, from_utf8, error);
+    ret = g_convert_with_fallback(str, -1, "UTF-8", remote_charset, "?", NULL, dest_len, &error);
+
+    return ret;
+}
 
-          return (ret);
-        }
-    }
-  else
-    {
-      if (request->iconv_to_initialized)
-        {
-          ret = g_convert_with_iconv (str, -1, request->iconv_to, &bread, dest_len,
-                                      &error);
-          if (ret == NULL)
-            _do_show_iconv_error (str, request->iconv_charset, from_utf8, error);
 
-          return (ret);
-        }
-    }
-
-  stpos = remote_charset;
-  while ((cur_charset = _gftp_get_next_charset (&stpos)) != NULL)
-    {
-      if (from_utf8)
-        {
-          fromset = "UTF-8";
-          toset = cur_charset;
-          if ((request->iconv_from = g_iconv_open (toset, fromset)) == (GIConv) -1)
-            {
-              g_free (cur_charset);
-              continue;
-            }
+char *
+gftp_string_from_utf8 (gftp_request *request, int force_local, const char *str,
+                       size_t *dest_len)
+{
+    gchar *remote_charset = NULL, *default_charset = NULL, *ret;
+    GError *error = NULL;
 
-          error = NULL;
-          if ((ret = g_convert_with_iconv (str, -1, request->iconv_from, &bread,
-                                           dest_len, &error)) == NULL)
-            {
-              g_iconv_close (request->iconv_from);
-              request->iconv_from = NULL;
-              _do_show_iconv_error (str, cur_charset, from_utf8, error);
-              g_free (cur_charset);
-              continue;
-            }
+    gftp_lookup_global_option ("default_charset", &default_charset);
+    if(!default_charset)
+        default_charset = "UTF-8";
 
-          request->iconv_from_initialized = 1;
-        }
-      else
-        {
-          fromset = cur_charset;
-          toset = "UTF-8";
-          if ((request->iconv_to = g_iconv_open (toset, fromset)) == (GIConv) -1)
-            {
-              g_free (cur_charset);
-              continue;
-            }
+    if(request)
+        remote_charset = request->remote_charset;
+    if(!remote_charset)
+        remote_charset = default_charset;
 
-          error = NULL;
-          if ((ret = g_convert_with_iconv (str, -1, request->iconv_to, &bread,
-                                           dest_len, &error)) == NULL)
-            {
-              g_iconv_close (request->iconv_to);
-              request->iconv_to = NULL;
-              _do_show_iconv_error (str, cur_charset, from_utf8, error);
-              g_free (cur_charset);
-              continue;
-            }
+    ret = g_convert_with_fallback(str, -1, remote_charset, "UTF-8", "?", NULL, dest_len, &error);
 
-          request->iconv_to_initialized = 1;
-        }
-
-      request->iconv_charset = cur_charset;
-      return (ret);
-    }
-
-  return (NULL);
+    return ret;
 }
 
 
 char *
-gftp_string_to_utf8 (gftp_request * request, const char *str, size_t *dest_len)
-{
-  return (_do_convert_string (request, 0, 0, str, dest_len, 0));
-}
-
-
-char *
-gftp_string_from_utf8 (gftp_request * request, int force_local, const char *str,
+gftp_filename_to_utf8 (gftp_request *request, const char *str,
                        size_t *dest_len)
 {
-  return (_do_convert_string (request, 0, force_local, str, dest_len, 1));
+    char *codeset = nl_langinfo(CODESET);
+    gchar *ret;
+    GError *error = NULL;
+
+    ret = g_filename_to_utf8 (str, -1, NULL, dest_len, &error);
+    if(!ret) {
+        error = NULL;
+        ret = g_convert_with_fallback(str, -1, "UTF-8", codeset, "?", NULL, dest_len, &error);
+    }
+
+    if(!ret) {
+        error = NULL;
+        ret = g_strdup(str);
+    }
+
+    return ret;
 }
 
 
 char *
-gftp_filename_to_utf8 (gftp_request * request, const char *str,
-                       size_t *dest_len)
+gftp_filename_from_utf8 (gftp_request *request, const char *str,
+                         size_t *dest_len)
 {
-  return (_do_convert_string (request, 1, 0, str, dest_len, 0));
+    char *codeset = nl_langinfo(CODESET);
+    gchar *ret;
+    GError *error = NULL;
+
+    ret = g_filename_from_utf8 (str, -1, NULL, dest_len, &error);
+    if(!ret) {
+        error = NULL;
+        ret = g_convert_with_fallback(str, -1, codeset, "UTF-8", "?", NULL, dest_len, &error);
+    }
+
+    return ret;
 }
 
 
 char *
-gftp_filename_from_utf8 (gftp_request * request, const char *str,
-                         size_t *dest_len)
-{
-  return (_do_convert_string (request, 1, 0, str, dest_len, 1));
-}
-
-
-char *
-gftp_remote_filename_to_utf8 (gftp_request * request, const char *str,
+gftp_remote_filename_to_utf8 (gftp_request *request, const char *str,
                        size_t *dest_len)
 {
     char *remote_charset = NULL, *default_charset = NULL;
+    gchar *ret;
     GError *error = NULL;
-    gchar *ret = NULL;
 
     if(request == NULL)
         return (NULL);
 
     /* get remote_charset */
-//    gftp_lookup_request_option (request, "remote_charset", &remote_charset);
     remote_charset = request->remote_charset;
     gftp_lookup_global_option ("default_charset", &default_charset);
     if(!remote_charset)
        remote_charset = (default_charset && *default_charset != '\0')
            ? default_charset : "UTF8";
 
-    ret = g_convert(str, -1, "UTF8", remote_charset, NULL, dest_len, error);
+    ret = g_convert(str, -1, "UTF8", remote_charset, NULL, dest_len, &error);
     return ret;
 }
 
@@ -264,8 +186,8 @@
                          size_t *dest_len)
 {
     char *remote_charset = NULL, *default_charset = NULL;
+    gchar *ret;
     GError *error = NULL;
-    gchar *ret = NULL;
 
     if(request == NULL)
         return (NULL);
@@ -274,62 +196,12 @@
         return (NULL);
 
     /* get remote_charset */
-//    gftp_lookup_request_option (request, "remote_charset", &remote_charset);
     remote_charset = request->remote_charset;
     gftp_lookup_global_option ("default_charset", &default_charset);
     if(!remote_charset)
         remote_charset = (default_charset && *default_charset != '\0')
             ? default_charset : "UTF8";
 
-    ret = g_convert(str, -1, remote_charset, "UTF8", NULL, dest_len, error);
+    ret = g_convert(str, -1, remote_charset, "UTF8", NULL, dest_len, &error);
     return ret;
 }
-
-#else
-
-char *
-gftp_string_to_utf8 (gftp_request * request, const char *str, size_t dest_len)
-{
-  return (NULL);
-}
-
-
-char *
-gftp_string_from_utf8 (gftp_request * request, int force_local, const char *str,
-                       size_t dest_len)
-{
-  return (NULL);
-}
-
-
-char *
-gftp_filename_to_utf8 (gftp_request * request, const char *str, size_t dest_len)
-{
-  return (NULL);
-}
-
-
-char *
-gftp_filename_from_utf8 (gftp_request * request, int force_local,
-                         const char *str, size_t dest_len)
-{
-  return (NULL);
-}
-
-char *
-gftp_remote_filename_to_utf8 (gftp_request * request, const char *str, size_t dest_len)
-{
-  return (NULL);
-}
-
-
-char *
-gftp_remote_filename_from_utf8 (gftp_request * request, int force_local,
-                         const char *str, size_t dest_len)
-{
-  return (NULL);
-}
-
-#endif
-
-
--- a/lib/gftp.h	Fri Aug 14 07:54:55 2009 +0900
+++ b/lib/gftp.h	Mon Feb 01 15:17:58 2010 +0900
@@ -96,7 +96,7 @@
 #ifdef ENABLE_NLS
 #include <libintl.h>
 #define _(String) gettext (String)
-#else 
+#else
 #define _(String) String
 #endif
 #define N_(String) String
@@ -177,10 +177,10 @@
 /* Server types (used by FTP protocol from SYST command) */
 #define GFTP_DIRTYPE_UNIX	1
 #define GFTP_DIRTYPE_EPLF	2
-#define GFTP_DIRTYPE_CRAY	3	
-#define GFTP_DIRTYPE_NOVELL	4	
-#define GFTP_DIRTYPE_DOS	5	
-#define GFTP_DIRTYPE_VMS	6	
+#define GFTP_DIRTYPE_CRAY	3
+#define GFTP_DIRTYPE_NOVELL	4
+#define GFTP_DIRTYPE_DOS	5
+#define GFTP_DIRTYPE_VMS	6
 #define GFTP_DIRTYPE_OTHER 	7
 #define GFTP_DIRTYPE_MVS	8
 
@@ -204,7 +204,7 @@
 #define MAX_HIST_LEN		10
 #define GFTP_URL_USAGE		"[[protocol://][user[:pass]@]site[:port][/directory]]"
 
-typedef enum gftp_logging_level_tag 
+typedef enum gftp_logging_level_tag
 {
   gftp_logging_send,
   gftp_logging_recv,
@@ -228,12 +228,12 @@
 
 #define GFTP_IS_SPECIAL_DEVICE(mode)	(S_ISBLK (mode) || S_ISCHR (mode))
 
-struct gftp_file_tag 
+struct gftp_file_tag
 {
   /*@null@*/ char *file,	/* Our filename */
                   *user,	/* User that owns it */
                   *group,	/* Group that owns it */
-                  *destfile;	/* Full pathname to the destination for the 
+                  *destfile;	/* Full pathname to the destination for the
                                    file transfer */
 
   int fd;			/* Already open fd for this file */
@@ -266,11 +266,11 @@
 };
 
 
-typedef struct gftp_proxy_hosts_tag 
+typedef struct gftp_proxy_hosts_tag
 {
   /* FIXME - add IPV6 stuff here */
 
-  gint32 ipv4_network_address, 
+  gint32 ipv4_network_address,
          ipv4_netmask;
   char *domain;
 } gftp_proxy_hosts;
@@ -278,7 +278,7 @@
 
 /* Note, these numbers must match up to the index number in config_file.c
    in the declaration of gftp_option_types */
-typedef enum 
+typedef enum
 {
   gftp_option_type_text		= 0,
   gftp_option_type_textcombo	= 1,
@@ -320,7 +320,7 @@
                   *description;	/* How this field will show up in the dialog */
   int otype;			/* Type of option this is */
   /*@null@*/ void *value;
-  /*@null@*/ void *listdata;	/* For options that have several different 
+  /*@null@*/ void *listdata;	/* For options that have several different
 				   options, this is a list of all the options.
 				   Each option_type that uses this will use this
 				   field differently */
@@ -357,17 +357,17 @@
 
 typedef struct gftp_request_tag gftp_request;
 
-typedef void (*gftp_logging_func)		( gftp_logging_level level, 
-						  /*@null@*/ gftp_request * request, 
+typedef void (*gftp_logging_func)		( gftp_logging_level level,
+						  /*@null@*/ gftp_request * request,
 						  const char *string, ... );
 
 #define GFTP_ANONYMOUS_USER			"anonymous"
 #define gftp_need_username(request)		((request)->need_username && ((request)->username == NULL || *(request)->username == '\0'))
 #define gftp_need_password(request)		((request)->need_password && (request)->username != NULL && *(request)->username != '\0' && strcasecmp ((request)->username, GFTP_ANONYMOUS_USER) != 0 && ((request)->password == NULL || *(request)->password == '\0'))
 
-struct gftp_request_tag 
+struct gftp_request_tag
 {
-  int protonum;			/* Current number of the protocol this is 
+  int protonum;			/* Current number of the protocol this is
                                    set to */
   char *hostname,		/* Hostname we will connect to */
        *username,		/* Username for host*/
@@ -406,45 +406,45 @@
                use_local_encoding : 1;
 
   off_t gotbytes;
- 
+
   void *protocol_data;
-   
+
   gftp_logging_func logging_function;
   void *user_data;
 
   int (*init)				( gftp_request * request );
-  void (*copy_param_options) 		( gftp_request * dest_request, 
+  void (*copy_param_options) 		( gftp_request * dest_request,
 					  gftp_request * src_request );
   ssize_t (*read_function)		( gftp_request * request,
-					  void *ptr, 
-					  size_t size, 
+					  void *ptr,
+					  size_t size,
 					  int fd );
-  ssize_t (*write_function)		( gftp_request * request, 
-					  const char *ptr, 
-					  size_t size, 
+  ssize_t (*write_function)		( gftp_request * request,
+					  const char *ptr,
+					  size_t size,
 					  int fd );
   void (*destroy)			( gftp_request * request );
   int (*connect)			( gftp_request * request );
   int (*post_connect)			( gftp_request * request );
   void (*disconnect) 			( gftp_request * request );
-  off_t (*get_file) 			( gftp_request * request, 
-					  const char *filename, 
+  off_t (*get_file) 			( gftp_request * request,
+					  const char *filename,
 					  off_t startsize );
-  int (*put_file) 			( gftp_request * request, 
-					  const char *filename, 
+  int (*put_file) 			( gftp_request * request,
+					  const char *filename,
 					  off_t startsize,
 					  off_t totalsize );
-  off_t (*transfer_file) 		( gftp_request * fromreq, 
-					  const char *fromfile, 
-					  off_t fromsize, 
-					  gftp_request * toreq, 
-					  const char *tofile, 
+  off_t (*transfer_file) 		( gftp_request * fromreq,
+					  const char *fromfile,
+					  off_t fromsize,
+					  gftp_request * toreq,
+					  const char *tofile,
 					  off_t tosize );
-  ssize_t (*get_next_file_chunk) 	( gftp_request * request, 
-					  char *buf, 
+  ssize_t (*get_next_file_chunk) 	( gftp_request * request,
+					  char *buf,
 					  size_t size );
-  ssize_t (*put_next_file_chunk) 	( gftp_request * request, 
-					  char *buf, 
+  ssize_t (*put_next_file_chunk) 	( gftp_request * request,
+					  char *buf,
 					  size_t size );
   int (*end_transfer) 			( gftp_request * request );
   int (*abort_transfer) 		( gftp_request * request );
@@ -453,33 +453,33 @@
 					  mode_t * mode,
 					  off_t * filesize );
   int (*list_files) 			( gftp_request * request );
-  int (*get_next_file)			( gftp_request * request, 
-					  gftp_file *fle, 
+  int (*get_next_file)			( gftp_request * request,
+					  gftp_file *fle,
 					  int fd );
-  ssize_t (*get_next_dirlist_line)	( gftp_request * request, 
+  ssize_t (*get_next_dirlist_line)	( gftp_request * request,
 					  int fd,
 					  char *buf,
 					  size_t buflen );
-  off_t (*get_file_size) 		( gftp_request * request, 
+  off_t (*get_file_size) 		( gftp_request * request,
 					  const char *filename );
-  int (*chdir)				( gftp_request * request, 
+  int (*chdir)				( gftp_request * request,
 					  const char *directory );
-  int (*rmdir)				( gftp_request * request, 
+  int (*rmdir)				( gftp_request * request,
 					  const char *directory );
-  int (*rmfile)				( gftp_request * request, 
+  int (*rmfile)				( gftp_request * request,
 					  const char *filename );
-  int (*mkdir)				( gftp_request * request, 
+  int (*mkdir)				( gftp_request * request,
 					  const char *directory );
-  int (*rename)				( gftp_request * request, 
-					  const char *oldname, 
+  int (*rename)				( gftp_request * request,
+					  const char *oldname,
 					  const char *newname );
-  int (*chmod)				( gftp_request * request, 
-					  const char *filename, 
+  int (*chmod)				( gftp_request * request,
+					  const char *filename,
 					  mode_t mode );
-  int (*set_file_time)			( gftp_request * request, 
-					  const char *filename, 
+  int (*set_file_time)			( gftp_request * request,
+					  const char *filename,
 					  time_t datettime );
-  int (*site)				( gftp_request * request, 
+  int (*site)				( gftp_request * request,
 					  int specify_site,
 					  const char *filename );
   int (*parse_url)			( gftp_request * request,
@@ -495,12 +495,6 @@
   SSL * ssl;
 #endif
 
-#if GLIB_MAJOR_VERSION > 1
-  GIConv iconv_to, iconv_from; 
-  unsigned int iconv_from_initialized : 1,
-               iconv_to_initialized : 1;
-  char *iconv_charset;
-#endif
   char *remote_charset;
 };
 
@@ -524,7 +518,7 @@
                  lasttime;
 
   double kbs;
-  
+
   GList * files,
         * curfle,
         * updfle;
@@ -538,10 +532,10 @@
         tot_file_trans,		/* Total number of bytes in the file being
                                    transferred */
         curresumed,		/* Resumed bytes for this file */
-        trans_bytes,		/* Amount of data transfered for entire 
+        trans_bytes,		/* Amount of data transfered for entire
 				   transfer */
         total_bytes, 		/* Grand total bytes for whole transfer */
-        resumed_bytes;		/* Grand total of resumed bytes for whole 
+        resumed_bytes;		/* Grand total of resumed bytes for whole
                                    transfer */
 
   void * fromwdata,
@@ -563,15 +557,15 @@
 } gftp_log;
 
 
-typedef struct supported_gftp_protocols_tag 
+typedef struct supported_gftp_protocols_tag
 {
   /*@null@*/ char *name;			/* Description of protocol */
   /*@null@*/ int (*init) (gftp_request * request); /* Init function */
   /*@null@*/ void (*register_options) (void);	/* Protocol options */
   /*@null@*/ char *url_prefix;			/* URL Prefix */
   unsigned int default_port;			/* Default port */
-  unsigned int shown : 1,			/* Whether this protocol is 
-                                                   shown or not to the user in 
+  unsigned int shown : 1,			/* Whether this protocol is
+                                                   shown or not to the user in
                                                    the protocol dropdown box */
                use_threads : 1;			/* Whether or not operations in
 						   this protocol should use
@@ -581,7 +575,7 @@
 
 typedef struct gftp_bookmarks_tag gftp_bookmarks_var;
 
-struct gftp_bookmarks_tag 
+struct gftp_bookmarks_tag
 {
   char *path,                  /* Path */
        *oldpath,               /* Old path name */
@@ -640,7 +634,7 @@
 /* Global config options. These are defined in options.h */
 /*@null@*/ extern GList * gftp_file_transfers, * gftp_file_transfer_logs,
                         * gftp_options_list;
-/*@null@*/ extern GHashTable * gftp_global_options_htable, * gftp_bookmarks_htable, 
+/*@null@*/ extern GHashTable * gftp_global_options_htable, * gftp_bookmarks_htable,
                              * gftp_config_list_htable;
 /*@null@*/ extern gftp_bookmarks_var * gftp_bookmarks;
 /*@null@*/ extern FILE * gftp_logfd;
@@ -654,9 +648,9 @@
 extern gftp_option_type_var gftp_option_types[];
 
 /* cache.c */
-void gftp_generate_cache_description 	( gftp_request * request, 
+void gftp_generate_cache_description 	( gftp_request * request,
 					  /*@out@*/ char *description,
-					  size_t len, 
+					  size_t len,
 					  int ignore_directory );
 
 int gftp_new_cache_entry 		( gftp_request * request );
@@ -670,36 +664,36 @@
 					  int ignore_directory );
 
 /* charset-conv.c */
-/*@null@*/ char * gftp_string_to_utf8	( gftp_request * request, 
+/*@null@*/ char * gftp_string_to_utf8	( gftp_request * request,
 					  const char *str,
 					  size_t *dest_len );
 
-/*@null@*/ char * gftp_string_from_utf8	( gftp_request * request, 
+/*@null@*/ char * gftp_string_from_utf8	( gftp_request * request,
 					  int force_local,
 					  const char *str,
 					  size_t *dest_len );
 
-/*@null@*/ char * gftp_filename_to_utf8	( gftp_request * request, 
+/*@null@*/ char * gftp_filename_to_utf8	( gftp_request * request,
 					  const char *str,
 					  size_t *dest_len );
 
-/*@null@*/ char * gftp_filename_from_utf8 ( gftp_request * request, 
+/*@null@*/ char * gftp_filename_from_utf8 ( gftp_request * request,
 					  const char *str,
 					  size_t *dest_len );
 
-/*@null@*/ char * gftp_remote_filename_to_utf8	( gftp_request * request, 
+/*@null@*/ char * gftp_remote_filename_to_utf8	( gftp_request * request,
 					  const char *str,
 					  size_t *dest_len );
 
-/*@null@*/ char * gftp_remote_filename_from_utf8 ( gftp_request * request, 
+/*@null@*/ char * gftp_remote_filename_from_utf8 ( gftp_request * request,
 					  const char *str,
 					  size_t *dest_len );
 
 /* config_file.c */
-int gftp_config_parse_args 		( char *str, 
-					  int numargs, 
-					  int lineno, 
-					  /*@out@*/ char **first, 
+int gftp_config_parse_args 		( char *str,
+					  int numargs,
+					  int lineno,
+					  /*@out@*/ char **first,
 					  ... );
 
 void gftp_add_bookmark 			( gftp_bookmarks_var * newentry );
@@ -714,32 +708,32 @@
 
 void print_bookmarks 			( gftp_bookmarks_var * bookmarks );
 
-void gftp_lookup_global_option 		( const char * key, 
+void gftp_lookup_global_option 		( const char * key,
 					  /*@out@*/ void *value );
 
-void gftp_lookup_request_option 	( gftp_request * request, 
-					  const char * key, 
+void gftp_lookup_request_option 	( gftp_request * request,
+					  const char * key,
 					  /*@out@*/ void *value );
 
 
-void gftp_lookup_bookmark_option 	( gftp_bookmarks_var * bm, 
-					  const char * key, 
+void gftp_lookup_bookmark_option 	( gftp_bookmarks_var * bm,
+					  const char * key,
 					  void *value );
 
-void gftp_set_global_option 		( const char * key, 
+void gftp_set_global_option 		( const char * key,
 					  const void *value );
 
-void gftp_set_request_option 		( gftp_request * request, 
-					  const char * key, 
+void gftp_set_request_option 		( gftp_request * request,
+					  const char * key,
 					  const void *value );
 
 void gftp_set_bookmark_option 		( gftp_bookmarks_var * bm,
-					  const char * key, 
+					  const char * key,
 					  const void *value );
 
 void gftp_register_config_vars 		( gftp_config_vars *config_vars );
 
-void gftp_copy_local_options 		( gftp_config_vars ** new_options_vars, 
+void gftp_copy_local_options 		( gftp_config_vars ** new_options_vars,
 					  GHashTable ** new_options_hash,
 					  int *new_num_local_options_vars,
 					  gftp_config_vars * orig_options,
@@ -756,8 +750,8 @@
 GList * gftp_copy_proxy_hosts 		( GList * proxy_hosts );
 
 /* misc.c */
-/*@null@*/ char *insert_commas 		( off_t number, 
-					  char *dest_str, 
+/*@null@*/ char *insert_commas 		( off_t number,
+					  char *dest_str,
 					  size_t dest_len );
 
 char *alltrim 				( char *str );
@@ -768,7 +762,7 @@
 void make_nonnull 			( char **str );
 
 int gftp_match_filespec 		( gftp_request * request,
-					  const char *filename, 
+					  const char *filename,
 					  const char *filespec );
 
 int gftp_parse_command_line 		( int *argc,
@@ -790,8 +784,8 @@
 
 gftp_file * copy_fdata 			( gftp_file * fle );
 
-int compare_request 			( gftp_request * request1, 
-					  gftp_request * request2, 
+int compare_request 			( gftp_request * request1,
+					  gftp_request * request2,
 					  int compare_dirs );
 
 gftp_transfer * gftp_tdata_new 		( void );
@@ -800,13 +794,13 @@
 
 gftp_request * gftp_copy_request 	( gftp_request * req );
 
-GList * gftp_sort_filelist 		( GList * filelist, 
-					  int column, 
+GList * gftp_sort_filelist 		( GList * filelist,
+					  int column,
 					  int asds );
 
 char * gftp_gen_ls_string 		( gftp_request * request,
-					  gftp_file * fle, 
-					  char *file_prefixstr, 
+					  gftp_file * fle,
+					  char *file_prefixstr,
 					  char *file_suffixstr );
 
 char * base64_encode 			( char *str );
@@ -816,8 +810,8 @@
 
 void gftp_shutdown			( void );
 
-GList * get_next_selection 		( GList * selection, 
-					  GList ** list, 
+GList * get_next_selection 		( GList * selection,
+					  GList ** list,
 					  int *curnum );
 
 char * gftp_build_path 			( gftp_request * request,
@@ -844,7 +838,7 @@
 					  char **endpos );
 
 int gftp_parse_ls 			( gftp_request * request,
-					  const char *lsoutput, 
+					  const char *lsoutput,
 					  gftp_file *fle,
 					  int fd );
 
@@ -868,8 +862,8 @@
 
 void rfc959_register_module		( void );
 
-int rfc959_get_next_file 		( gftp_request * request, 
-					  gftp_file *fle, 
+int rfc959_get_next_file 		( gftp_request * request,
+					  gftp_file *fle,
 					  int fd );
 
 int rfc959_connect 			( gftp_request * request );
@@ -919,41 +913,41 @@
 
 void gftp_disconnect 			( gftp_request * request );
 
-off_t gftp_get_file 			( gftp_request * request, 
-					  const char *filename, 
+off_t gftp_get_file 			( gftp_request * request,
+					  const char *filename,
 					  off_t startsize );
 
-int gftp_put_file 			( gftp_request * request, 
-					  const char *filename, 
+int gftp_put_file 			( gftp_request * request,
+					  const char *filename,
 					  off_t startsize,
 					  off_t totalsize );
 
-off_t gftp_transfer_file 		( gftp_request *fromreq, 
-					  const char *fromfile, 
-					  off_t fromsize, 
-					  gftp_request *toreq, 
-					  const char *tofile, 
+off_t gftp_transfer_file 		( gftp_request *fromreq,
+					  const char *fromfile,
+					  off_t fromsize,
+					  gftp_request *toreq,
+					  const char *tofile,
 					  off_t tosize );
 
-ssize_t gftp_get_next_file_chunk 	( gftp_request * request, 
-					  char *buf, 
+ssize_t gftp_get_next_file_chunk 	( gftp_request * request,
+					  char *buf,
 					  size_t size );
 
-ssize_t gftp_put_next_file_chunk 	( gftp_request * request, 
-					  char *buf, 
+ssize_t gftp_put_next_file_chunk 	( gftp_request * request,
+					  char *buf,
 					  size_t size );
 
 int gftp_list_files 			( gftp_request * request );
 
-int gftp_parse_bookmark 		( gftp_request * request, 
+int gftp_parse_bookmark 		( gftp_request * request,
 					  gftp_request * local_request,
 					  const char * bookmark,
 					  int *refresh_local );
 
-int gftp_parse_url 			( gftp_request * request, 
+int gftp_parse_url 			( gftp_request * request,
 					  const char *url );
 
-int gftp_get_next_file 			( gftp_request * request, 
+int gftp_get_next_file 			( gftp_request * request,
 					  const char *filespec,
 					  gftp_file *fle );
 
@@ -966,77 +960,77 @@
 					  mode_t * mode,
 					  off_t * filesize );
 
-void gftp_set_hostname 			( gftp_request * request, 
+void gftp_set_hostname 			( gftp_request * request,
 					  const char *hostname );
 
 void gftp_set_remote_charset     (gftp_request * request,
                                   const char *remote_charset);
 
-void gftp_set_username 			( gftp_request * request, 
+void gftp_set_username 			( gftp_request * request,
 					  const char *username );
 
-void gftp_set_password 			( gftp_request * request, 
+void gftp_set_password 			( gftp_request * request,
 					  const char *password );
 
-void gftp_set_account 			( gftp_request * request, 
+void gftp_set_account 			( gftp_request * request,
 					  const char *account );
 
-int gftp_set_directory 			( gftp_request * request, 
+int gftp_set_directory 			( gftp_request * request,
 					  const char *directory );
 
-void gftp_set_port 			( gftp_request * request, 
+void gftp_set_port 			( gftp_request * request,
 					  unsigned int port );
 
-int gftp_remove_directory 		( gftp_request * request, 
+int gftp_remove_directory 		( gftp_request * request,
 					  const char *directory );
 
-int gftp_remove_file 			( gftp_request * request, 
+int gftp_remove_file 			( gftp_request * request,
 					  const char *file );
 
-int gftp_make_directory 		( gftp_request * request, 
+int gftp_make_directory 		( gftp_request * request,
 					  const char *directory );
 
-int gftp_rename_file 			( gftp_request * request, 
-					  const char *oldname, 
+int gftp_rename_file 			( gftp_request * request,
+					  const char *oldname,
 					  const char *newname );
 
-int gftp_chmod 				( gftp_request * request, 
-					  const char *file, 
+int gftp_chmod 				( gftp_request * request,
+					  const char *file,
 					  mode_t mode );
 
-int gftp_set_file_time 			( gftp_request * request, 
-					  const char *file, 
+int gftp_set_file_time 			( gftp_request * request,
+					  const char *file,
 					  time_t datetime );
 
-int gftp_site_cmd 			( gftp_request * request, 
+int gftp_site_cmd 			( gftp_request * request,
 					  int specify_site,
 					  const char *command );
 
-off_t gftp_get_file_size 		( gftp_request * request, 
+off_t gftp_get_file_size 		( gftp_request * request,
 					  const char *filename );
 
-void gftp_calc_kbs 			( gftp_transfer * tdata, 
+void gftp_calc_kbs 			( gftp_transfer * tdata,
 				 	  ssize_t num_read );
 
-int gftp_get_all_subdirs 		( gftp_transfer * transfer, 
-					  void (*update_func) 
+int gftp_get_all_subdirs 		( gftp_transfer * transfer,
+					  void (*update_func)
 						( gftp_transfer * transfer ));
 
 int gftp_set_config_options 		( gftp_request * request );
 
 void print_file_list 			( GList * list );
 
-void gftp_swap_socks 			( gftp_request * dest, 
+void gftp_swap_socks 			( gftp_request * dest,
 					  gftp_request * source );
 
-void gftp_calc_kbs 			( gftp_transfer * tdata, 
+void gftp_calc_kbs 			( gftp_transfer * tdata,
 					  ssize_t num_read );
 
-int gftp_get_transfer_status 		( gftp_transfer * tdata, 
+int gftp_get_transfer_status 		( gftp_transfer * tdata,
 					  ssize_t num_read );
 
-int gftp_fd_open 			( gftp_request * request, 
-					  const char *pathname, 
+int gftp_fd_open 			( gftp_request * request,
+					  const char *pathname,
 					  int flags,
 					  mode_t perms );
 
@@ -1066,14 +1060,14 @@
 
 void gftp_ssl_free 			( gftp_request * request );
 
-ssize_t gftp_ssl_read 			( gftp_request * request, 
-					  void *ptr, 
-					  size_t size, 
+ssize_t gftp_ssl_read 			( gftp_request * request,
+					  void *ptr,
+					  size_t size,
 					  int fd );
 
-ssize_t gftp_ssl_write 			( gftp_request * request, 
-					  const char *ptr, 
-					  size_t size, 
+ssize_t gftp_ssl_write 			( gftp_request * request,
+					  const char *ptr,
+					  size_t size,
 					  int fd );
 #endif /* USE_SSL */
 
@@ -1092,7 +1086,7 @@
 #endif
 
 /* socket-connect.c */
-int gftp_connect_server 		( gftp_request * request, 
+int gftp_connect_server 		( gftp_request * request,
 					  char *service,
 					  char *proxy_hostname,
 					  unsigned int proxy_port );
@@ -1121,31 +1115,31 @@
 					  unsigned int proxy_port );
 
 /* sockutils.c */
-ssize_t gftp_get_line 			( gftp_request * request, 
+ssize_t gftp_get_line 			( gftp_request * request,
 					  /*@out@*/ gftp_getline_buffer ** rbuf,
-					  /*@out@*/ char * str, 
-					  size_t len, 
+					  /*@out@*/ char * str,
+					  size_t len,
 					  int fd );
 
 void gftp_free_getline_buffer 		( gftp_getline_buffer ** rbuf );
 
-ssize_t gftp_fd_read 			( gftp_request * request, 
-					  void *ptr, 
-					  size_t size, 
+ssize_t gftp_fd_read 			( gftp_request * request,
+					  void *ptr,
+					  size_t size,
 					  int fd );
 
-ssize_t gftp_fd_write 			( gftp_request * request, 
-					  const char *ptr, 
-					  size_t size, 
+ssize_t gftp_fd_write 			( gftp_request * request,
+					  const char *ptr,
+					  size_t size,
 					  int fd );
 
-ssize_t gftp_writefmt 			( gftp_request * request, 
-					  int fd, 
-					  const char *fmt, 
+ssize_t gftp_writefmt 			( gftp_request * request,
+					  int fd,
+					  const char *fmt,
 					  ... );
 
-int gftp_fd_set_sockblocking 		( gftp_request * request, 
-					  int fd, 
+int gftp_fd_set_sockblocking 		( gftp_request * request,
+					  int fd,
 					  int non_blocking );
 
 struct servent * r_getservbyname	( const char *name,
--- a/lib/local.c	Fri Aug 14 07:54:55 2009 +0900
+++ b/lib/local.c	Mon Feb 01 15:17:58 2010 +0900
@@ -687,7 +687,7 @@
 }
 
 
-void 
+void
 local_register_module (void)
 {
 }
--- a/lib/protocols.c	Fri Aug 14 07:54:55 2009 +0900
+++ b/lib/protocols.c	Mon Feb 01 15:17:58 2010 +0900
@@ -150,6 +150,7 @@
     }
 #endif
 
+#if 0
 #if GLIB_MAJOR_VERSION > 1
   if (request->iconv_from_initialized)
     {
@@ -169,7 +170,7 @@
     request->iconv_charset = NULL;
   }
 #endif
-
+#endif
   request->cached = 0;
   if (request->disconnect == NULL)
     return;