changeset 387:2f5ce7fb5aad

2003-2-2 Brian Masney <masneyb@gftp.org> * lib/config_file.c lib/gftp.h src/uicommon/gftpui.c src/gtk/gftp-gtk.c - updated the format of the config file write_functions so that the value isn't written to a file descriptor. Instead, it is written to a buffer. * src/text/gftp-text.c (gftp_text_log) - search for newlines in the string and split on those characters first * src/text/textui.c (gftpui_disconnect) - disconnect from the host * src/uicommon/gftpui.c - removed calls to printf() functions. Instead print the values out using the logging function * src/uicommon/gftpuicallbacks.c (gftpui_common_run_ls) - if we are connected to a local site, lookup the options local_sortasds and local_sortcol. Otherwise, lookup remove_sortasds and remote_sortcol. * autogen.sh - disable maintainer mode * TODO - updated
author masneyb
date Tue, 03 Feb 2004 02:27:57 +0000
parents 16497a84c34b
children 371695551cfa
files ChangeLog TODO autogen.sh lib/config_file.c lib/gftp.h src/gtk/gftp-gtk.c src/text/gftp-text.c src/text/textui.c src/uicommon/gftpui.c src/uicommon/gftpuicallbacks.c
diffstat 10 files changed, 160 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Feb 02 18:54:43 2004 +0000
+++ b/ChangeLog	Tue Feb 03 02:27:57 2004 +0000
@@ -1,3 +1,25 @@
+2003-2-2 Brian Masney <masneyb@gftp.org>
+	* lib/config_file.c lib/gftp.h src/uicommon/gftpui.c 
+	src/gtk/gftp-gtk.c - updated the format of the config file
+	write_functions so that the value isn't written to a file descriptor.
+	Instead, it is written to a buffer.
+
+	* src/text/gftp-text.c (gftp_text_log) - search for newlines in the
+	string and split on those characters first
+
+	* src/text/textui.c (gftpui_disconnect) - disconnect from the host
+
+	* src/uicommon/gftpui.c - removed calls to printf() functions. Instead
+	print the values out using the logging function
+
+	* src/uicommon/gftpuicallbacks.c (gftpui_common_run_ls) - if we are
+	connected to a local site, lookup the options local_sortasds and
+	local_sortcol. Otherwise, lookup remove_sortasds and remote_sortcol.
+
+	* autogen.sh - disable maintainer mode
+
+	* TODO - updated
+
 2004-02-01 Alastair McKinstry <mckinstry@computer.org>
 	
 	* configure.in: Add Irish ("ga") to ALL_LINGUAS
@@ -2124,7 +2146,7 @@
 
 	* cvsclean - added this script
 
-	* *.[ch] - added $Id: ChangeLog,v 1.213 2004/02/02 09:04:01 alastairmck Exp $ tags
+	* *.[ch] - added $Id: ChangeLog,v 1.214 2004/02/03 02:27:55 masneyb Exp $ tags
 
 	* debian/* - updated files from Debian maintainer
 
--- a/TODO	Mon Feb 02 18:54:43 2004 +0000
+++ b/TODO	Tue Feb 03 02:27:57 2004 +0000
@@ -2,24 +2,22 @@
 of gFTP. If there is something you feel should be included in a future
 version of gFTP, please email me about it.
 
+* FXP transfers segfault
+* Does not work with rssh, need to improve the SSH login sequence
+* Be able to paste a URL in the host box in the GUI
+
+* If the IPV6 connection fails, automatically try a IPV4 connection.
 * I need to be able to send an event from the core library to the presentation
   layer to have it ask the user a question. I need this for the SSL layer so 
   that if an unknown certificate authority signed the certificate, the user
   can be prompted whether or not to accept it. Also, it would be handy to 
   prompt the user for their password if a bad password was entered. 
-* Text Port - resume transfers, add --mirror option, --continue option
-  and --background options to the command line.
-* DND - be able to resume transfers
 * HTTP - keepalive
 * Support tabbed interface in GTK+ port
 * Parallel chdir in GTK+ port
 * GTK 2.0 port - make 2 buttons in toolbar be the same size as the gnome 2
   icons
-* Add option to hide certain files
 * Be able to save the state of the transfer queue. Be able to pause transfers.
-* For bookmarks, be able to specify a local protocol, host, port, directory
-  to connect to
-* Show status information in title bar
 * -d command line, check if it's a file first, if so download. If not, grab directory
 * Add option for @dynamic@ for bookmarks' account
 * Playing sounds after certain events or calling external program
--- a/autogen.sh	Mon Feb 02 18:54:43 2004 +0000
+++ b/autogen.sh	Tue Feb 03 02:27:57 2004 +0000
@@ -110,7 +110,7 @@
 cd $ORIGDIR
 
 if test -z "$AUTOGEN_SUBDIR_MODE"; then
-        CFLAGS="-Wall -ansi -D_GNU_SOURCE -O -g" $srcdir/configure --enable-maintainer-mode "$@"
+        CFLAGS="-Wall -ansi -D_GNU_SOURCE -O -g" $srcdir/configure "$@"
 
         echo 
         echo "Now type 'make' to compile $PROJECT."
--- a/lib/config_file.c	Mon Feb 02 18:54:43 2004 +0000
+++ b/lib/config_file.c	Tue Feb 03 02:27:57 2004 +0000
@@ -717,8 +717,8 @@
 void
 gftp_write_bookmarks_file (void)
 {
+  char *bmhdr, *pwhdr, *tempstr, *password, buf[256];
   gftp_bookmarks_var * tempentry;
-  char *bmhdr, *pwhdr, *tempstr, *password;
   FILE * bmfile;
   int i;
 
@@ -781,9 +781,10 @@
         {
           for (i=0; i<tempentry->num_local_options_vars; i++)
             {
-              fprintf (bmfile, "%s=", tempentry->local_options_vars[i].key);
-              gftp_option_types[tempentry->local_options_vars[i].otype].write_function (&tempentry->local_options_vars[i], bmfile, 1);
-              fprintf (bmfile, "\n");
+              gftp_option_types[tempentry->local_options_vars[i].otype].write_function (&tempentry->local_options_vars[i], buf, sizeof (buf), 1);
+
+              fprintf (bmfile, "%s=%s\n", tempentry->local_options_vars[i].key,
+                       buf);
             }
         }
 
@@ -807,10 +808,10 @@
 void
 gftp_write_config_file (void)
 {
+  char *tempstr, buf[256];
   gftp_config_vars * cv;
   GList *templist;
   FILE *conffile;
-  char *tempstr;
   int i;
 
   if ((tempstr = expand_path (CONFIG_FILE)) == NULL)
@@ -846,9 +847,9 @@
           if (cv[i].comment != NULL)
             write_comment (conffile, _(cv[i].comment));
 
-          fprintf (conffile, "%s=", cv[i].key);
-          gftp_option_types[cv[i].otype].write_function (&cv[i], conffile, 1);
-          fprintf (conffile, "\n");
+          gftp_option_types[cv[i].otype].write_function (&cv[i], buf,
+                                                         sizeof (buf), 1);
+          fprintf (conffile, "%s=%s\n", cv[i].key, buf);
         }
     }
     
@@ -949,15 +950,15 @@
 
 
 static int
-gftp_config_file_write_text (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_config_file_write_text (gftp_config_vars * cv, char *buf, size_t buflen,
+                             int to_config_file)
 {
   char *outstr;
 
   if (cv->value != NULL)
     {
       outstr = cv->value;
-      if (*outstr != '\0')
-        fprintf (fd, "%s", outstr);
+      g_snprintf (buf, buflen, "%s", outstr);
       return (0);
     }
   else
@@ -966,7 +967,8 @@
 
 
 static int
-gftp_config_file_write_hidetext (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_config_file_write_hidetext (gftp_config_vars * cv, char *buf,
+                                 size_t buflen, int to_config_file)
 {
   char *outstr;
 
@@ -976,9 +978,9 @@
       if (*outstr != '\0')
         {
           if (to_config_file)
-            fprintf (fd, "%s", outstr);
+            g_snprintf (buf, buflen, "%s", outstr);
           else
-            fprintf (fd, "*****");
+            g_snprintf (buf, buflen, "*****");
         }
       return (0);
     }
@@ -1037,9 +1039,10 @@
 
 
 static int
-gftp_config_file_write_int (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_config_file_write_int (gftp_config_vars * cv, char *buf, size_t buflen,
+                            int to_config_file)
 {
-  fprintf (fd, "%d", GPOINTER_TO_INT(cv->value));
+  g_snprintf (buf, buflen, "%d", GPOINTER_TO_INT (cv->value));
   return (0);
 }
 
@@ -1071,12 +1074,13 @@
 
 
 static int
-gftp_config_file_write_float (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_config_file_write_float (gftp_config_vars * cv, char *buf, size_t buflen,
+                              int to_config_file)
 {
   float f;
 
   memcpy (&f, &cv->value, sizeof (f));
-  fprintf (fd, "%.2f", f);
+  g_snprintf (buf, buflen, "%.2f", f);
   return (0);
 }
 
@@ -1119,12 +1123,13 @@
 
 
 static int
-gftp_config_file_write_color (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_config_file_write_color (gftp_config_vars * cv, char *buf, size_t buflen,
+                              int to_config_file)
 {
   gftp_color * color;
 
   color = cv->value;
-  fprintf (fd, "%x:%x:%x", color->red, color->green, color->blue);
+  g_snprintf (buf, buflen, "%x:%x:%x", color->red, color->green, color->blue);
   return (0);
 }
 
@@ -1179,15 +1184,16 @@
 
 
 static int
-gftp_config_file_write_intcombo (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_config_file_write_intcombo (gftp_config_vars * cv, char *buf,
+                                 size_t buflen, int to_config_file)
 {
   char **clist;
 
   clist = cv->listdata;
   if (clist != NULL)
-    fprintf (fd, "%s", clist[GPOINTER_TO_INT(cv->value)]);
+    g_snprintf (buf, buflen, "%s", clist[GPOINTER_TO_INT(cv->value)]);
   else
-    fprintf (fd, _("<unknown>"));
+    g_snprintf (buf, buflen, _("<unknown>"));
 
   return (0);
 }
--- a/lib/gftp.h	Mon Feb 02 18:54:43 2004 +0000
+++ b/lib/gftp.h	Tue Feb 03 02:27:57 2004 +0000
@@ -293,7 +293,8 @@
 typedef struct gftp_option_type_tag
 {
   int (*read_function) (char *str, gftp_config_vars * cv, int line);
-  int (*write_function) (gftp_config_vars * cv, FILE * fd, int to_config_file);
+  int (*write_function) (gftp_config_vars * cv, char *buf, size_t buflen,
+                         int to_config_file);
   void (*copy_function) (gftp_config_vars * cv, gftp_config_vars * dest_cv);
   int (*compare_function) (gftp_config_vars * cv1, gftp_config_vars * cv2);
   void *(*ui_print_function) (gftp_config_vars * cv, void *user_data, void *value);
--- a/src/gtk/gftp-gtk.c	Mon Feb 02 18:54:43 2004 +0000
+++ b/src/gtk/gftp-gtk.c	Tue Feb 03 02:27:57 2004 +0000
@@ -1189,12 +1189,13 @@
 
 
 static int
-gftp_gtk_config_file_write_color (gftp_config_vars * cv, FILE * fd, int to_config_file)
+gftp_gtk_config_file_write_color (gftp_config_vars * cv, char *buf,
+                                  size_t buflen, int to_config_file)
 {
   GdkColor * color;
 
   color = cv->value;
-  fprintf (fd, "%x:%x:%x", color->red, color->green, color->blue);
+  g_snprintf (buf, buflen, "%x:%x:%x", color->red, color->green, color->blue);
   return (0);
 }
 
--- a/src/text/gftp-text.c	Mon Feb 02 18:54:43 2004 +0000
+++ b/src/text/gftp-text.c	Tue Feb 03 02:27:57 2004 +0000
@@ -38,13 +38,57 @@
 }
 
 
+static void
+gftp_text_write_string (char *string)
+{
+  char *stpos, *endpos, savechar;
+  int sw;
+
+  sw = gftp_text_get_win_size ();
+
+  stpos = string;
+  do
+    {
+      if ((endpos = strchr (stpos, '\n')) == NULL)
+        endpos = stpos + strlen (stpos);
+
+      savechar = *endpos;
+      *endpos = '\0';
+
+      if (strlen (stpos) <= sw)
+        {
+          printf ("%s%c", stpos, savechar);
+          *endpos = savechar;
+          if (savechar == '\0')
+            break;
+          stpos = endpos + 1;
+        }
+      else
+        {
+          *endpos = savechar;
+          for (endpos = stpos + sw - 1;
+               *endpos != ' ' && endpos > stpos;
+               endpos--);
+
+          if (endpos != stpos)
+            *endpos = '\0';
+
+          printf ("%s\n", stpos);
+          stpos = endpos + 1;
+        }
+
+      sw = sw;
+    }
+  while (stpos != endpos);
+}
+
+
 void
 gftp_text_log (gftp_logging_level level, gftp_request * request, 
                const char *string, ...)
 {
-  char tempstr[512], *stpos, *endpos, *utf8_str = NULL, *outstr;
+  char tempstr[512], *utf8_str = NULL, *outstr;
   va_list argp;
-  int sw;
 
   g_return_if_fail (string != NULL);
 
@@ -90,25 +134,10 @@
         fflush (gftp_logfd);
     }
 
-  sw = gftp_text_get_win_size ();
-  stpos = outstr;
-  endpos = outstr + 1;
-  do
-    {
-      if (strlen (stpos) <= sw)
-        {
-          printf ("%s", stpos);
-          break;
-        }
-      for (endpos = stpos + sw - 1; *endpos != ' ' && endpos > stpos; endpos--);
-      if (endpos != stpos)
-        {
-          *endpos = '\0';
-        }
-      printf ("%s\n", stpos);
-      stpos = endpos + 1;
-    }
-  while (stpos != endpos);
+  if (level == gftp_logging_misc_nolog)
+    printf ("%s\n", outstr);
+  else
+    gftp_text_write_string (outstr);
   
   printf ("%s", GFTPUI_COMMON_COLOR_DEFAULT);
 
--- a/src/text/textui.c	Mon Feb 02 18:54:43 2004 +0000
+++ b/src/text/textui.c	Tue Feb 03 02:27:57 2004 +0000
@@ -238,5 +238,9 @@
 void
 gftpui_disconnect (void *uidata)
 {
+  gftp_request * request;
+
+  request = uidata; /* Note: uidata is set to the request in gftp_text.c */
+  gftp_disconnect (request);
 }
 
--- a/src/uicommon/gftpui.c	Mon Feb 02 18:54:43 2004 +0000
+++ b/src/uicommon/gftpui.c	Tue Feb 03 02:27:57 2004 +0000
@@ -606,9 +606,7 @@
   intptr_t retries;
 
   if (GFTP_IS_CONNECTED (request))
-    {
-      gftp_disconnect (request); /* FIXME */
-    }
+    gftpui_disconnect (uidata);
   
   if (command != NULL)
     {
@@ -655,8 +653,8 @@
                        void *other_uidata, gftp_request * other_request,
                        const char *command)
 {
+  char *pos, *backpos, buf[256];
   gftp_config_vars * cv, newcv;
-  char *pos, *backpos;
   GList * templist;
   int i;
   
@@ -677,9 +675,11 @@
                   gftp_option_types[cv[i].otype].write_function == NULL)
                 continue;
 
-              printf ("%s = ", cv[i].key);
-              gftp_option_types[cv[i].otype].write_function (&cv[i], stdout, 0);
-              printf ("\n");
+              gftp_option_types[cv[i].otype].write_function (&cv[i], buf,
+                                                             sizeof (buf), 0);
+
+              gftpui_common_logfunc (gftp_logging_misc_nolog, request,
+                                     "%s = %s\n", cv[i].key, buf);
             }
         }
     }
@@ -722,6 +722,12 @@
 
           gftp_set_global_option (command, newcv.value);
 
+          gftp_option_types[newcv.otype].write_function (&newcv, buf,
+                                                         sizeof (buf), 0);
+
+          gftpui_common_logfunc (gftp_logging_misc_nolog, request,
+                                 "%s = %s\n", newcv.key, buf);
+
           if (newcv.flags & GFTP_CVARS_FLAGS_DYNMEM)
             g_free (newcv.value);
         }
@@ -738,6 +744,7 @@
 {
   int i, j, ele, numrows, numcols = 6, handled, number_commands, cmdlen,
       found;
+  char commands[128], cmdstr[30];
   const char *pos;
 
   for (number_commands=0;
@@ -766,7 +773,8 @@
             handled = 0;
 
           if (!handled)
-            printf ("%s\n", _(gftpui_common_commands[i].cmd_description));
+            gftpui_common_logfunc (gftp_logging_misc_nolog, request, "%s\n",
+                                 _(gftpui_common_commands[i].cmd_description));
         }
       else
         found = 0;
@@ -780,21 +788,26 @@
       if (number_commands % numcols != 0)
         numrows++;
 
-      printf (_("Supported commands:\n\n"));
+      gftpui_common_logfunc (gftp_logging_misc_nolog, request,
+                             _("Supported commands:\n\n"));
+      
       for (i=0; i<numrows; i++)
         {
-          printf ("     ");
+          strncpy (commands, "\t", sizeof (commands));
+
           for (j=0; j<numcols; j++)
             {
               ele = i + j * numrows;
               if (ele >= number_commands)
                 break;
-              printf ("%-10s", gftpui_common_commands[ele].command);
+
+              g_snprintf (cmdstr, sizeof (cmdstr), "%-10s",
+                          gftpui_common_commands[ele].command);
+              strncat (commands, cmdstr, sizeof (commands));
             }
-         printf ("\n");
+          gftpui_common_logfunc (gftp_logging_misc_nolog, request, "%s\n",
+                                 commands);
         }
-
-      printf ("\n");
     }
   return (1);
 }
@@ -1052,7 +1065,7 @@
       ret = gftpui_common_commands[i].func (uidata, request,
                                             other_uidata, other_request, pos);
 
-      if (!GFTP_IS_CONNECTED (request))
+      if (request != NULL && !GFTP_IS_CONNECTED (request))
         gftpui_disconnect (uidata);
     }
   else
@@ -1443,6 +1456,6 @@
     }
   tdata->done = 1;
 
-  return (1); /* FIXME */
+  return (1);
 }
 
--- a/src/uicommon/gftpuicallbacks.c	Mon Feb 02 18:54:43 2004 +0000
+++ b/src/uicommon/gftpuicallbacks.c	Tue Feb 03 02:27:57 2004 +0000
@@ -62,6 +62,7 @@
 gftpui_common_run_ls (gftpui_callback_data * cdata)
 {
   int got, matched_filespec, have_dotdot;
+  char *sortcol_var, *sortasds_var;
   intptr_t sortcol, sortasds;
   gftp_file * fle;
 
@@ -112,8 +113,19 @@
 
   if (cdata->files != NULL)
     {
-      gftp_lookup_global_option ("local_sortcol", &sortcol); /* FIXME */
-      gftp_lookup_global_option ("local_sortasds", &sortasds);
+      if (cdata->request->protonum == GFTP_LOCAL_NUM)
+        {
+          sortasds_var = "local_sortasds";
+          sortcol_var = "local_sortcol";
+        }
+      else
+        {
+          sortasds_var = "remote_sortasds";
+          sortcol_var = "remote_sortcol";
+        }
+
+      gftp_lookup_global_option (sortcol_var, &sortcol);
+      gftp_lookup_global_option (sortasds_var, &sortasds);
     
       cdata->files = gftp_sort_filelist (cdata->files, sortcol, sortasds);
     }