changeset 222:007145d7d975

2003-7-11 Brian Masney <masneyb@gftp.org> * lib/protocols.c (gftp_calc_kbs) - only call gettimeofday() at the end only if we are throttling this connection * lib/cache.c lib/options.h docs/sample.gftp/gftprc - added cache_ttl option to determine the amount of time that cache entries will stay around * docs/gftp.xml docs/legal.xml docs/figures/* - documentation from Alexander Kirillov <kirillov@math.sunysb.edu> * docs/website - files for generating my main website. They aren't pretty, but hey it works. I'm mainly putting these in CVS just for backup purposes.
author masneyb
date Sun, 13 Jul 2003 12:38:35 +0000
parents c0d7f3b6e8cb
children fb262a3e5223
files ChangeLog docs/figures/mainwin.png docs/figures/mainwin.xcf docs/gftp.xml docs/legal.xml docs/sample.gftp/gftprc docs/website/faq.html docs/website/generate-gftp-website.pl docs/website/gftp-screenshot.png docs/website/index.html.in docs/website/install.html docs/website/logo.jpg docs/website/robots.txt docs/website/screenshots.html lib/cache.c lib/options.h lib/protocols.c
diffstat 17 files changed, 2279 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Jul 11 20:35:58 2003 +0000
+++ b/ChangeLog	Sun Jul 13 12:38:35 2003 +0000
@@ -1,3 +1,18 @@
+2003-7-11 Brian Masney <masneyb@gftp.org>
+	* lib/protocols.c (gftp_calc_kbs) - only call gettimeofday() at the
+	end only if we are throttling this connection
+
+	* lib/cache.c lib/options.h docs/sample.gftp/gftprc - added cache_ttl
+	option to determine the amount of time that cache entries will stay 
+	around
+
+	* docs/gftp.xml docs/legal.xml docs/figures/* - documentation from
+	Alexander Kirillov <kirillov@math.sunysb.edu>
+
+	* docs/website - files for generating my main website. They aren't
+	pretty, but hey it works. I'm mainly putting these in CVS just for
+	backup purposes.
+
 2003-7-10 Brian Masney <masneyb@gftp.org>
 	* lib/misc.c (insert_commas) - improved calculating # of digits
 	in number. (Not sure if this worked properly for long long's, aka
@@ -1257,7 +1272,7 @@
 
 	* cvsclean - added this script
 
-	* *.[ch] - added $Id: ChangeLog,v 1.112 2003/07/11 01:48:07 masneyb Exp $ tags
+	* *.[ch] - added $Id: ChangeLog,v 1.113 2003/07/13 12:38:30 masneyb Exp $ tags
 
 	* debian/* - updated files from Debian maintainer
 
Binary file docs/figures/mainwin.png has changed
Binary file docs/figures/mainwin.xcf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/gftp.xml	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,1717 @@
+<?xml version="1.0"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+  <!ENTITY legal SYSTEM "legal.xml">
+  <!ENTITY appversion "2.0.12">
+  <!ENTITY manrevision "1.0">
+  <!ENTITY date "June  2002">
+  <!ENTITY gftp "<application>gFTP</application>">
+  <!-- Information about the entities
+       The legal.xml file contains legal information, there is no need to edit the file. 
+       Use the appversion entity to specify the version of the application.
+       Use the manrevision entity to specify the revision number of this manual.
+       Use the date entity to specify the release date of this manual.
+       Use the gftp entity to specify the name of the application. -->
+]>
+<!-- 
+      (Do not remove this comment block.)
+  Maintained by the GNOME Documentation Project
+  http://developer.GNOME.org/projects/gdp
+  Template version: 2.0 beta
+  Template last modified Jan 30, 2002
+-->
+<!-- =============Document Header ============================= -->
+<article id="index" lang="en">
+<!-- please do not change the id; for translations, change lang to -->
+<!-- appropriate code -->
+  <articleinfo> 
+    <title>gFTP Manual &manrevision;</title>       
+
+    <copyright> 
+      <year>2002</year> 
+      <holder>Alexander Kirillov</holder> 
+    </copyright>
+    <copyright>
+      <year>2002</year>
+      <holder>Brian Masney</holder>
+    </copyright> 
+
+<!-- translators: uncomment this:
+
+  <copyright>
+   <year>2002</year>
+   <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
+  </copyright>
+
+   -->
+<!-- An address can be added to the publisher information.  If a role is 
+     not specified, the publisher/author is the same for all versions of the 
+     document.  -->
+    <publisher> 
+      <publishername>GNOME Documentation Project </publishername> 
+    </publisher> 
+
+   &legal; <!-- This file contains link to license for the
+   documentation (GNU FDL), and other legal stuff such as "NO
+   WARRANTY" statement. Please do not change any of this. -->
+
+    <authorgroup> 
+      <author> 
+	<firstname>Alexander</firstname> 
+	<surname>Kirillov</surname> 
+	<affiliation> 
+	  <orgname>GNOME Documentation Project</orgname> 
+	  <address> <email>kirillov@math.sunysb.edu</email> </address> 
+	</affiliation> 
+      </author> 
+      <author> 
+	<firstname>Brian</firstname> 
+	<surname>Masney</surname> 
+	<affiliation> 
+	  <orgname></orgname> 
+	  <address><email>masneyb@seul.org</email> </address> 
+	</affiliation> 
+      </author> 
+    </authorgroup>
+
+
+    <releaseinfo> This manual describes version &appversion; of &gftp;.
+    </releaseinfo> 
+  </articleinfo> 
+
+  <indexterm zone="index"> 
+    <primary>gFTP</primary> 
+  </indexterm> 
+  <indexterm zone="index"> 
+    <primary>gFTP</primary> 
+  </indexterm>
+  <indexterm zone="index"> 
+    <primary>File Transfer</primary> 
+  </indexterm>
+
+<!-- ============= Document Body ============================= -->
+<!-- ============= Introduction ============================== -->
+<!-- Use the Introduction section to give a brief overview of what
+     the application is and what it does. -->
+  <sect1 id="gftp-introduction"> 
+    <title>Introduction</title> 
+    <para>The &gftp; is a graphical file transfer manager. It can be
+      used for downloading files from remote FTP servers, uploading
+      files to an FTP server, or transferring files between two remote
+      servers.       &gftp; provides the following
+      features:</para> 
+    <itemizedlist> 
+  <!-- ######### -->
+      <listitem> 
+	<para> Support for  FTP, HTTP and SSH (both SSH1 and SSH2) protocols
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para>Support for fxp file transfers (transferring files between two
+	  remote servers via ftp)   
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para> Multithreaded to allow for simultaneous downloads
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para>File transfer queues to allow for downloading multiple files 
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para> Bookmarks menu to allow you to quickly connect to remote sites
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para>  Support for  resuming interrupted file transfers
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para>  Drag-N-Drop support
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para> FTP and HTTP proxy server support
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para> Allows for passive and non-passive file transfers
+	</para>
+      </listitem> 
+  <!-- ######### -->
+      <listitem> 
+	<para> Supports UNIX, EPLF, Novell, MacOS, and NT (DOS) style directory listings
+	</para>
+      </listitem> 
+    </itemizedlist>
+ 
+  </sect1>
+
+<!-- =========== Basic usage ========================= -->
+  <sect1 id="gftp-basic"> 
+    <title>Basic Usage</title> 
+    <para>
+      This section describes basic usage of &gftp; and its graphical
+      interface (buttons, menus, etc). 
+    </para>
+
+    <!-- ======= ===== --> 
+    <sect2 id="gftp-starting">
+      <title>Starting And Quitting &gftp;</title>
+
+	<para>To start &gftp; open the <guimenu> Main Menu</guimenu>,
+	then choose <menuchoice> <guimenu>Programs</guimenu>
+	<guisubmenu>Internet</guisubmenu>
+	<guimenuitem>gFTP</guimenuitem> </menuchoice>. 
+	</para>
+	<para>
+	  You can also start &gftp; from the command line. To do so,
+	  type <command>gftp</command> or <command>gftp
+	  <replaceable>ftp://ftp.myhostname.com/pub</replaceable></command>
+	  and press <keycap>Return</keycap>. Here
+	  <replaceable>ftp://ftp.myhostname.com/pub</replaceable> is
+	  the address (URL) of the site you want to connect to. See
+	  <xref linkend="gftp-connect-url"/> for examples of
+	  admissible URLs. 
+	</para>
+      <para>
+	  To quit &gftp; choose <menuchoice><guimenu>FTP</guimenu>
+	  <guimenuitem>Quit</guimenuitem> </menuchoice>. 
+      </para>	
+      <para>
+	There are two versions of &gftp;: graphical and text. Command
+	&gftp; will start graphical version in graphical environment
+	(i.e., when X Window System is running)
+	and text version otherwise. (For advanced users: &gftp; checks
+	whether environment variable DISPLAY is set to determine
+	whether graphical environment is present.) You can also
+	explicitly start graphical version by using command
+	<command>gftp-gtk</command> and text version by using command
+	<command>gftp-text</command>. This manual only describes graphical
+	version.
+      </para>
+      </sect2>
+
+    <!-- ======= ===== --> 
+      <sect2 id="gftp-gui">
+	<title>&gftp; Main Window And Controls</title>
+	<para>
+	  After starting, &gftp; opens the main window shown in <xref
+	  linkend="gftp-mainwin-fig"/>. 
+	</para>
+    <!-- ==== Figure ==== -->
+	<figure id="gftp-mainwin-fig">
+	  <title>gFTP Main Window</title>
+	  <screenshot>	  
+	    <mediaobject> 
+	    <imageobject>
+		<imagedata
+		fileref="figures/mainwin.png" format="PNG"/> 
+	    </imageobject>
+	    <textobject> 
+	      <phrase>Shows &gftp; main window. </phrase>
+	    </textobject> 
+	  </mediaobject> 
+	</screenshot>
+      </figure>
+      <para>
+	This window contains the following areas and controls:
+      </para>
+      <variablelist>
+	<!-- ########## -->
+	<varlistentry>
+	  <term>Connection information: <guilabel>hostname</guilabel>,
+	    <guilabel>port</guilabel>, 
+	    <guilabel>User</guilabel>, 
+	    <guilabel>Pass</guilabel>, 
+	    <guilabel>Protocol type</guilabel> (FTP, HTTP, SSH) 
+          </term>
+	  <listitem>
+	    <para>
+	      These fields contain information about currently active
+	      connection (<guilabel>User</guilabel> and
+	      <guilabel>Pass</guilabel> stand for username and
+	      password respectively). You can also use them to open a new
+	      connection: enter the connection information in these
+	      fields and click on <guibutton>Connect</guibutton> button.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<!-- ########## -->
+	<varlistentry>
+	  <term><guibutton>Connect</guibutton> button</term>
+	  <listitem>
+	    <para>
+	      When not connected, enter connection settings (hostname,
+	      protocol, etc) and click on this button to connect to a
+	      remote computer. When connected to a remote computer,
+	      click on this button to disconnect.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<!-- ########## -->
+	<varlistentry>
+	  <term><guibutton>Stop</guibutton> button</term>
+	  <listitem>
+	    <para>
+	      Click on this button to stop connection attempts or a
+	      file transfer. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<!-- ########## -->
+	<varlistentry>
+	  <term><guilabel>File list</guilabel> panels</term>
+	  <listitem>
+	    <para>
+	      These tow panels show the contents of current directory
+	      on local (left panel) and remote (right panel)
+	      computers. They can also be used for navigation:
+	      double-clicking on a directory takes you to that
+	      directory. See <xref linkend="gftp-viewing"/> for more
+	      information.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<!-- ########## -->
+	<varlistentry>
+	  <term><guibutton>Transfer</guibutton> buttons</term>
+	  <listitem>
+	    <para>
+	      Click on one of this buttons to transfer selected files
+	      between local and remote computers. The arrow shows
+	      direction of transfer: top button transfers from the
+	      local computer to the remote  one (upload), the bottom
+	      button transfers from the remote computer to the local
+	      one (download) 
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<!-- ########## -->
+	<varlistentry>
+	  <term><guilabel>Transfer progress window</guilabel></term>
+	  <listitem>
+	    <para>
+	      This window shows file transfer progress. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<!-- ########## -->
+	<varlistentry>
+	  <term><guilabel>Log window</guilabel></term>
+	  <listitem>
+	    <para>
+	      This window shows all the messages exchanged by the local
+	      computer and the remote one. Mostly useful for
+	      troubleshooting and diagnostic purposes. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
+    <sect2 id="gftp-basic-transfer">
+      <title>Connecting and Transferring Files</title>
+      <para>
+	To connect to a remote computer, enter the computer address
+	(hostname) on the toolbar and select the protocol type (by
+	default, FTP). If using anonymous FTP or HTTP connection, leave
+	fields <guilabel>User</guilabel> and <guilabel>Pass</guilabel>
+	blank; otherwise, enter your username and password. After
+	entering this information, click on
+	<guibutton>Connect</guibutton> button. For detailed
+	instructions and other ways to establish connection, see <xref
+	linkend="gftp-connect"/>. 
+      </para>
+      <para>
+	To transfer files between local and remote computers,
+	double-click on the file you want to transfer. If you need to
+	transfer several files or whole directories, click on them
+	while holding down <keycap>Ctrl</keycap> key to select. After
+	selecting, click on the appropriate
+	<guibutton>Transfer</guibutton> button located between file
+	list panels. For detailed instructions, see <xref
+	linkend="gftp-transfer"/>.
+      </para>
+    </sect2>    
+  </sect1>
+
+<!-- ===========  Connecting To a  Remote Site ========================= -->
+  <sect1 id="gftp-connect"> 
+    <title>Connecting To a  Remote Site</title> 
+    <para>
+      The first step in transferring files is establishing a
+      connection to the remote site. 
+      &gftp; provides several ways to connect to a remote site,
+      described below. These descriptions assume that you are already
+      connected to the Internet. Please note that 
+      If you are behind a firewall and use HTTP or FTP proxy, you will
+      need to configure &gftp; before connecting as described in <xref
+      linkend="gftp-configuring"/>. Configuration changes are also likely to
+      be required when connecting to an SSH site; see <xref
+      linkend="gftp-ssh"/>. 
+    </para>
+    <para>
+      To disconnect from a remote site, click on
+      <guibutton>Connect</guibutton> button or choose 
+      <menuchoice><guimenu>Remote</guimenu>
+      <guimenuitem>Disconnect</guimenuitem></menuchoice>.
+    </para>
+
+
+    <!-- ===========  Using toolbar  ======== -->
+    <sect2 id="gftp-connect-toolbar">
+      <title>Connecting Using the Toolbar</title>
+    <para>
+      To connect to a remote site, enter the connection information in
+      the appropriate fields in the toolbar.
+    </para>
+    <variablelist>
+     <!-- ############### -->
+      <varlistentry>
+	<term><guilabel>Host</guilabel></term>
+	<listitem>
+	  <para>Enter the remote site hostname (e.g., <systemitem
+	  class="systemname">ftp.gnome.org</systemitem>). Do not
+	  include <systemitem>ftp://</systemitem> prefix or the
+	  directory (e.g., <systemitem>/pub</systemitem>). You can
+	  select one of recently visited sites by clicking on the down
+	  arrow and selecting it from the drop-down list. You can also
+	  drag the URL from any GNOME application to the
+	  <guibutton>Connect</guibutton> button.
+	  </para>
+	</listitem>
+      </varlistentry>
+     <!-- ############### -->
+      <varlistentry>
+	<term><guilabel>Port</guilabel></term>
+	<listitem>
+	  <para>Unless you know that the server uses non-standard
+	  port, leave this field blank
+	  </para>
+	</listitem>
+      </varlistentry>
+     <!-- ############### -->
+      <varlistentry>
+	<term><guilabel>User</guilabel> and <guilabel>Pass</guilabel></term>
+	<listitem>
+	  <para>
+	    If you have an account on the server you are connecting to
+	    and want to use this account, enter your username and
+	    password. If connecting to an anonymous FTP site (i.e.,
+	    one that allows connection to everyone, without requiring
+	    an account), leave these fields blank.  
+	    </para>
+
+
+	    <note>
+	      <title>NOTE</title>
+	      <para>
+		Most anonymous FTP servers ask that you enter
+		<systemitem>anonymous</systemitem> for username and
+		your e-mail address for password. Most of them only use
+		the e-mail address for statistics. However, there is a
+		potential risk that some less scrupulous FTP sites
+		will use your e-mail to send you spam. To avoid this,
+		&gftp; uses fake addresses (that is, strings that look
+		like a valid e-mail address) as passwords.
+	      </para>
+	    </note>
+	</listitem>
+      </varlistentry>
+     <!-- ############### -->
+      <varlistentry>
+	<term><guilabel>Protocol</guilabel></term>
+	<listitem>
+	  <para>Select the protocol to use (by default,
+	  <systemitem>FTP</systemitem>).  Possible protocols include
+	  FTP (File Transfer Protocol), HTTP and SSH (Secure Shell, a
+	  protocol for encrypted communications, described in <xref
+	  linkend="gftp-ssh"/>). 
+	  </para>
+	    <warning>
+	      <title>SECURITY WARNING</title>
+	      <para>
+		Using non-anonymous FTP connection is a serious
+		security risk, as your username and password are
+		transmitted unencrypted over the Internet and can be
+		easily intercepted by a third party. It is recommended
+		that you only use FTP for anonymous sites. When
+		username and password is required, use SSH instead.
+	      </para>
+	    </warning>
+
+	</listitem>
+      </varlistentry>
+    </variablelist>
+    <para>
+      After entering this information, click on
+      <guibutton>Connect</guibutton> button (see <xref
+      linkend="gftp-mainwin-fig"/>). &gftp; will try to connect to the
+      server. If successful, the files on the remote server will be
+      shown in the right file view pane. If there was an error when
+      connecting, the error message will be shown in the lower part of
+      &gftp; window.   
+    </para>
+    </sect2>
+  
+    <!-- ===========  Using menu  ======== -->
+    <sect2 id="gftp-connect-url">
+      <title>Connecting Using URL</title>
+      <para>
+	An equivalent way of connecting to a remote site is by
+	choosing <menuchoice><guimenu>Remote</guimenu>
+	  <guimenuitem>Open URL</guimenuitem></menuchoice> (<keycombo>
+	  <keycap>Ctrl</keycap><keycap>U</keycap></keycombo>). This
+	will prompt you for a URL to connect to. The following are
+	examples of valid URL's:
+      </para>
+      <simplelist>
+	<member>
+	    ftp://ftp.myhostname.com/pub (anonymous FTP connection)
+	</member>
+	<member>
+	    ftp://user@ftp.myhostname.com/pub (non-anonymous FTP
+                                               connection with given
+                                               username. You
+                                               will be
+                                               prompted for a password)
+	</member>
+	<member>
+	    ftp://user:pass@ftp.myhostname.com/pub (non-anonymous FTP
+                                               connection, with given
+                                               username and password)
+	</member>
+	<member>
+	    ssh://user:pass@myhostname.com (SSH connection, with given
+                                               username and password)
+	</member>
+      </simplelist>
+    </sect2>
+
+    <!-- ===========  Using toolbar  ======== -->
+    <sect2 id="gftp-connect-bookmarks">
+      <title>Connecting Using the Bookmarks</title>
+      <para>
+	You can also use &gftp; bookmarks for connecting to frequently
+	used sites, as described in <xref
+	linkend="gftp-bookmarks"/>. 
+      </para>
+    </sect2>
+  </sect1>
+<!-- ===========  Viewing and Selecting  Files ========================= -->
+  <sect1 id="gftp-viewing"> 
+    <title>Viewing  Files and Directories</title> 
+
+    <!-- ===========  Sect 2 ======== -->
+    <sect2 id="gftp-file-list">
+      <title>File List Panel</title>
+      <para>
+	After connecting, the right file list panel will show the files
+	on the remote computer (see <xref
+	  linkend="gftp-fileview-fig"/>. Similarly, the left file view
+	  panel shows the files on the local computer. 
+      </para>
+      <para>
+	At the top of file view panel there is the location field which
+	shows the path to current directory. Immediately below it, there
+	is the status line which shows remote computer name, file
+	selection filter (see below), and protocol. 
+      </para>
+      <para>FILE LIST - NEEDS WORK
+      </para>
+      <para>
+	You can refresh file list panel by choosing
+	<menuchoice><guimenu>Remote</guimenu>
+	  <guimenuitem>Refresh</guimenuitem>
+	</menuchoice>
+      </para> 
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-navigate">
+      <title>Navigating Directories</title>
+      <para>
+	To see the contents of a subdirectory, double-click on this
+	directory name in the file list window. To go up one level in
+	the directory tree, double-click on <filename>..</filename>
+	(usually the first item in the list). By a  common Unix
+	convention, <filename>..</filename> stands  for parent directory. 
+      </para>	
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-viewing-files">
+      <title>Viewing and Editing Individual Files</title>
+      <para>To view an individual file, select this file in the file
+      view window and choose <menuchoice><guimenu>Remote</guimenu>
+      <guimenuitem>View...</guimenuitem></menuchoice> (for files on
+      the remote computer) or <menuchoice><guimenu>Local</guimenu>
+      <guimenuitem>View...</guimenuitem></menuchoice> (for files on
+      the local  computer). Alternatively, you can select the file,
+      then right-click on it and choose
+      <guimenuitem>View</guimenuitem> from the context menu.  
+      </para>
+      <para>To edit an individual file, select this file in the file
+	view window and choose
+	<menuchoice><guimenu>Local/Remote</guimenu>
+	<guimenuitem>Edit...</guimenuitem></menuchoice>. Alternatively,
+	you can select the file, then right-click on it and choose
+	<guimenuitem>Edit...</guimenuitem> from the context menu.
+      </para>
+
+      <para>
+	Advanced users may configure which applications should be used
+	for opening files of different types by manually editing
+	&gftp; configuration file as described in <xref
+	linkend="gftp-configuring-advanced"/>. 
+      </para>
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-filter">
+      <title>File  Filter</title>
+      <para>
+	You can configure &gftp; so that the file list window only
+	shows files matching a given pattern. To do so, choose
+	<menuchoice><guimenu>Remote</guimenu> <guimenuitem>Change
+	Filespec...</guimenuitem></menuchoice> (for files on the
+	remote computer) or <menuchoice><guimenu>Local</guimenu>
+	<guimenuitem>Change Filespec...</guimenuitem></menuchoice>
+	(for files on the local computer) and enter the pattern in
+	<guilabel>Change Filespec...</guilabel> dialog. The pattern
+	may use wildcards <keycap>*</keycap> (matches any string) and
+	<keycap>?</keycap> (matches any single symbol). For example,
+	pattern <filename>*</filename>
+	matches all files, while <filename>*.tar*</filename> matches
+	all files with extension <filename>tar</filename>, possibly
+	followed by any sequence of symbols, for example
+	<filename>filename.tar.gz</filename>. Please note that
+	filenames in Unix are case-sensitive, so the pattern
+	<filename>*.jpeg</filename> will not match files with
+	extension <filename>.JPEG</filename>.  
+      </para>
+      <para>
+	Once you have selected a filter, the file list window will be
+	updated  to show only files matching the pattern. To remind
+	you of that, this pattern will be shown under the location
+	field.
+      </para>
+      <para>
+	To clear the filter and show all files, choose
+	<menuchoice><guimenu>Remote</guimenu> <guimenuitem>Change 
+	Filespec...</guimenuitem></menuchoice> and enter
+	<filename>*</filename> as the pattern. 
+      </para>
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-custom-view">
+      <title>Customizing File View</title>
+      <para>
+      </para>
+    </sect2>
+
+	
+  </sect1>
+
+<!-- ===========  Selecting and Transferring Files ========================= -->
+  <sect1 id="gftp-transfer"> 
+    <title>Transferring Files</title> 
+    <para>
+      This section describes how one transfers files between local and
+      remote computer. It assumes that you have already established
+      the connection with the remote computer as described in <xref
+      linkend="gftp-connect"/>. 
+    </para>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-transfer-single">
+      <title>Transferring a Single File</title>
+      <para>
+	To transfer a single file, double-click on the file in the
+	file list window, or drag the file   from one
+	file list window to another using the mouse. 
+      </para>
+    </sect2>
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-transfer-multiple">
+      <title>Transferring Multiple Files</title>
+      <para>
+	To transfer multiple files in the same directory, you need to
+	select files to transfer. To do so, click on each of the files
+	and directories you want to select while holding down
+	<keycap>Ctrl</keycap>. To select a continuous block of files
+	from the list, click on the first file, then hold down
+	<keycap>Shift</keycap> key and click on the last file of the
+	block. All files between them will be selected.
+      </para>
+      <para>
+	You can also select all files and subdirectories in the
+	current directory by choosing
+	<menuchoice><guimenu>Local</guimenu> <guimenuitem>Select
+	All</guimenuitem> </menuchoice> (respectively,
+	<menuchoice><guimenu>Remote</guimenu> <guimenuitem>Select
+	All</guimenuitem> </menuchoice>). You can also choose
+	<menuchoice><guimenu>Local</guimenu> <guimenuitem>Select 
+	All Files</guimenuitem> </menuchoice> which selects all files
+	but not subdirectories.  
+      </para>
+      <para>
+	To transfer selected files between the local and remote
+	computers, click on the appropriate
+	<guibutton>transfer</guibutton> buttons, located between the
+	file list windows. The arrow on the button shows the direction
+	of the transfer, so the top button will transfer files from
+	the local computer to the remote one, and the bottom button
+	will transfer files from the remote computer to the local
+	one. NEEDS WORK: TRANSFER MENU
+      </para>
+      <para>
+	Once the transfer has started, its progress will be shown in
+	<guilabel>Transfer progress</guilabel> window. NEEDS WORK
+      </para>
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-transfer-options">
+      <title>Transfer Options</title>
+      <para>
+	By default, &gftp; preserves file permissions and follows
+	symbolic links. It also starts transfers immediately after you
+	click on <guibutton>transfer</guibutton>` button and does one
+	transfer at a time, i.e. it only starts transferring the next
+	file after completing transfer of the previous file. These and
+	many other options can be modified as described in <xref
+	linkend="gftp-configuring"/>.
+      </para>
+      <para>
+	In addition, you can select whether the files should be
+	transferred in binary or text mode. In binary mode, the file
+	is transferred <quote>as is</quote>, without any changes. This
+	is the default mode, and in most cases, you should use it. 
+      </para>
+      <para>
+	In text (ascii) mode, &gftp; will also make necessary conversion of
+	end-of-line symbol. DOS and Microsoft Windows systems use
+	different way of denoting end-of-line than Unix and Linux
+	systems, which can lead to minor inconveniences if text files
+	are transferred between Windows and Unix/Linux systems
+	<quote>as is</quote>.  Therefore, when transferring text
+	files between Windows and Unix/Linux systems it is recommended
+	that you use text (ascii) mode.
+      </para>
+      <para>
+	You can switch between  binary and ascii modes using
+	<guimenu>FTP</guimenu> menu. 
+      </para> 
+    </sect2>
+
+
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-queue">
+      <title>Transfer Queue</title>
+      <para>
+	By default, &gftp;  starts the
+	transfer immediately after you click on
+	<guibutton>transfer</guibutton> 
+	button or double-click on a file. You can configure it
+	so that instead, it just adds the filename to the list of files
+	to be transferred but does not start the actual transfer until
+	you choose <menuchoice><guimenu>Transfers</guimenu>
+	<guimenuitem>Start transfer</guimenuitem> </menuchoice>. This
+	mode is especially convenient if you need to transfer a number
+	of files in different directories. 
+      </para>
+      <para>
+	To switch to this mode, open <guilabel>Options</guilabel>
+	dialog by choosing <menuchoice><guimenu>FTP</guimenu>
+	<guimenuitem>Options</guimenuitem>
+	</menuchoice>(<keycombo><keycap>Ctrl</keycap>
+	<keycap>O</keycap></keycombo>) and unselect <guilabel>Start
+	file transfers</guilabel> option in
+	<guilabel>General</guilabel> tab. 
+      </para>
+    </sect2>
+    
+	
+
+
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-overwrite">
+      <title>Overwriting Existing Files</title>
+      <para>
+	If some of the files being transferred already exist in the
+	target directory, &gftp; will open <guilabel>??</guilabel>
+	dialog shown in <xref linkend="gftp-overwrite-fig"/>.  
+      </para>
+      <para>
+	This dialog allows you to choose for each file one of the
+	following options:
+      </para>
+      <itemizedlist>
+        <!-- ############### -->
+	<listitem>
+	  <para><guilabel>Overwrite</guilabel>:
+	  transfer the  file overwriting the existing file. 
+	  </para>
+	</listitem> 
+        <!-- ############### -->
+	<listitem><guilabel>Skip</guilabel>: do not transfer the file
+	  <para>
+	  </para>
+	</listitem>
+        <!-- ############### -->
+	<listitem> 
+	  <para><guilabel>Resume</guilabel>:  this option should only
+	  be used if the existing file in the target directory is a
+	  result of interrupted file transfer. This option will resume
+	  the transfer from the place it was interrupted (provided
+	  that the remote computer supports this functionality; most
+	  FTP servers do). This is faster than starting the transfer
+	  form the beginning.
+	  </para>
+	  <warning>
+	    <title>WARNING</title>
+	    <para>
+	      <guilabel>Resume</guilabel> option should only be used
+	      if the file in the target directory is the result of
+	      interrupted transfer. Selecting this option in any other
+	      situation - for example, if the file in the target
+	      directory is a complete copy of an older or newer
+	      version of the file being transferred - will result in
+	      corrupted file. 
+	    </para>
+	  </warning>
+	</listitem>
+      </itemizedlist>
+      <para>
+	To choose one of these options, select the file in the
+	<guilabel></guilabel> dialog and click on the appropriate
+	button (<guibutton>Overwrite</guibutton>,
+	<guibutton>Skip</guibutton>, <guibutton>Resume</guibutton>) at
+	the bottom. After selecting the appropriate options for each
+	of the files in the dialog, click <guibutton>OK</guibutton>. 
+      </para>
+      <para>
+	By default, &gftp; uses <guilabel>Resume</guilabel>
+	option. You can change this using <guilabel>Options</guilabel>
+	dialog, as described in <xref linkend="gftp-configuring"/>.
+      </para>
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-resume">
+      <title>Resuming Interrupted Transfer</title>
+      <para>
+	If file transfer was interrupted for some reason (e.g., a
+	server overload or network or dialup problems), you do not
+	have to start the transfer again form the beginning. Instead,
+	&gftp; allows you to resume the transfer from the point where
+	it stopped. This requires that the remote computer supports
+	resume function of FTP protocol; most FTP servers do. 
+      </para>
+      <para>
+	To resume transfer manually, reconnect to the same server,
+	select again the files you want to transfer and start
+	transferring them. &gftp; will recognize partially
+	downloaded file in the local  directory and then ask you whether to
+	resume the download  or  overwrite the partially downloaded
+	file and to start all over (see <xref
+	linkend="gftp-overwrite"/>).  Choose
+	<guilabel>Resume</guilabel> and click <guibutton>OK</guibutton>. 
+      </para>
+      <para>
+	You can also configure &gftp; so that if connection closes for
+	some reason during file transfer, &gftp;  will try to reconnect
+	again and continue with the file transfer where it left
+	off. You can also specify how many times to reconnect and how
+	long to wait for connection. All these options can be set
+	using <guilabel>Options</guilabel> dialog described in <xref
+	linkend="gftp-configuring"/>.
+      </para>
+      <para>
+	In order to specify reasonable reconnect options you need to
+	understand some of the things that can go wrong with a
+	download.
+      </para>
+      <para>
+	The most common cause of download problems is an overloaded
+	FTP server.  When a server becomes overloaded there will be
+	times when the server just can't get around to passing gFTP
+	the next block of data.  In the gFTP progress window you will
+	get a message that the transfer is stalled.  If the transfer
+	is stalled for over 30 seconds gFTP will time out the transfer
+	and disconnect.  (Don't mess with the Read timeout Option
+	unless you know what you are doing.  You can get timeouts for
+	a lot of other reasons that an overloaded server.)  gFTP then
+	waits the time interval specified in Options and then
+	reconnects.
+      </para>
+      <para>
+	Some servers recognize when they are overloaded and begin
+	deliberately disconnecting clients until they get back down to
+	the maximum number of downloads that they can reasonably
+	serve.  If gFTP gets disconnected it waits the time interval
+	specified in Options and then reconnects.  These servers
+	sometimes remember who they have just bounced off and if you
+	try to reconnect immediately they tell gFTP to stop trying to
+	automatically reconnect.  So in the Options
+	(Ftp->Options->Network->Retry sleep time) you want to wait
+	just long enough that the busy server will have forgotten you
+	and then reconnect.  The gFTP default is 15 seconds.
+      </para>
+      <para>
+	The other reconnect Option that you are interested in is
+	Connect retries (Ftp->Options->Network->Connect retries).
+	Connect retries is the number of time that gFTP will reconnect
+	before giving up altogether.  There two ways to approach this
+	option.
+      </para>
+      <para>
+	If gFTP has to keep reconnecting to a remote server then the
+	download can be very slow.  You might want to switch another
+	remote server which is faster.  If the file name on the new
+	server is exactly the same as the file name on the first
+	server then you can resume the download at whatever point you
+	got to on the first server.  In this case set Connect retries
+	to 3, which is the default.
+      </para>
+      <para>
+	If you want to keep chugging away at the download until it
+	finishes, no matter what, then set Connect retries to 0.
+	(Incidentally, I once had a download shut down after 100
+	reconnects.  gFTP and that remote site just weren't getting
+	along and I was in bed asleep)
+      </para>
+	
+    </sect2>
+
+
+  </sect1>
+
+<!-- =========== File operations  ========================= -->
+  <sect1 id="gftp-fileops"> 
+    <title>Other File Operations</title> 
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-delete">
+      <title>Deleting, Renaming, Editing and Viewing Files</title>
+      <para>
+	To delete files or directories on local computer, select them
+	(see <xref linkend="gftp-transfer-multiple"/> for information
+	about selecting multiple files) and choose
+	<menuchoice><guimenu>Local</guimenu>
+	<guimenuitem>Delete</guimenuitem> </menuchoice>. Similarly, to
+	delete files or directories on remote computer, select themand
+	choose <menuchoice><guimenu>Remote</guimenu>
+	<guimenuitem>Delete</guimenuitem>
+	</menuchoice>. Alternatively,  after selecting the
+	files you can right-click in the corresponding file list panel
+	and choose <guimenuitem>Delete</guimenuitem> from the context
+	menu.
+      </para>
+      <para>
+	To rename, view, or edit file, select this file in the list
+	and choose corresponding command form <guimenu>Local</guimenu>
+	or <guimenu>Remote</guimenu> menu (or right-click and choose
+	the command from the context menu). You can only rename, view,
+	or edit a single file; if you have selected more than ne file,
+	&gftp; will give an error message. 
+      </para>
+      <para>
+	&gftp; will use the programs specified in
+	<guilabel>Options</guilabel> dialog (see <xref
+	linkend="gftp-configuring"/>) for viewing and editing
+	files. It is also possible to configure &gftp; to use
+	different programs for different file types by manually
+	editing configuration file (see <xref
+	linkend="gftp-configuring-advanced"/>). 
+      </para>
+    </sect2>
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-chmod">
+      <title>Changing File Permissions</title> 
+      <para> To change
+      permissions of a file or directory, select it and choose
+      <menuchoice><guimenu>Local/Remote</guimenu>
+      <guimenuitem>Chmod...</guimenuitem> </menuchoice> or right-click
+      and choose <guimenuitem>Chmod...</guimenuitem>  from the context
+      menu. You can only change permisions of one file at a time.
+      </para>
+      <para>
+	As usual, you can set three types of permissions: read, write,
+	and execute, independently for file owner, group of users
+	owning the file, and everyone else. If you are not fmailair
+	with Unix notion of file permission, read info page for GNU
+	<application>fileutils</application> package (if you are using
+	Linux), or any introductory book or document on Unix, such as
+	<citetitle>If you are new to Linux/UNIX</citetitle>, included
+	in GNOME desktop environment.
+      </para>
+    </sect2>
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-makedir">
+      <title>Creating Directories</title> 
+      <para> To create a
+	subdirectory in the current directory, choose
+	<menuchoice><guimenu>Local/Remote</guimenu> <guimenuitem>Make
+	    Directory...</guimenuitem> </menuchoice> or right-click and
+	choose <guimenuitem>Make Directory...</guimenuitem> from the
+	context menu. &gftp; will prompt you for directory name. 
+      </para>
+    </sect2>
+    <!-- ===========  Sect 2 ======== -->
+     <sect2 id="gftp-compare">
+      <title>Comparing Directories</title> 
+      <para>
+	&gftp; allows you to compare the directories on local and
+	remote computer, showing the files that are different in
+	them. This feature is very convenient for synchronizing you
+	local directory with the remotre one, as it shows the files
+	that were added or updated since your last synchronization. To
+	compare current directories on local and remote computer,
+	choose <menuchoice><guimenu>Tools</guimenu>
+	<guimenuitem>Compare
+	windows</guimenuitem></menuchoice>. &gftp; will show and
+	select in each window the files that are different from the
+	files in the other window. That is, it will select all files
+	that are not present in directory but not the other and those
+	files that are present in both directories but have differnt
+	sizes or modification dates. 
+      </para>
+      <tip>
+	<title>TIP</title>
+	<para>
+	  If you maintain on your local computer a copy of a directory
+	  on the remote computer, you can easily update your local
+	  directory as follows. First, choose
+	  <menuchoice><guimenu>Tools</guimenu> <guimenuitem>Compare
+	  windows</guimenuitem></menuchoice> (this will select in the
+	  remote directory all files that were added or changed since
+	  your last update). Next, click on lower
+	  <guibutton>transfer</guibutton> button (the one that
+	  transfers from remote computer to local one). This will
+	  automatically transfer all selected files from the remote
+	  computer to the local computer. For the files that were
+	  changed, &gftp; will ask you whether it should overwrite
+	  existing files in local directory or resume transfer (see
+	  <xref linkend="gftp-overwrite"/>). Select
+	  <guilabel>Overwrite</guilabel> and click
+	  <guibutton>OK</guibutton>.
+	 </para>
+	</tip>
+    </sect2>
+	
+
+
+  </sect1>
+<!-- =========== Bookmaks  ========================= -->
+  <sect1 id="gftp-bookmarks"> 
+    <title>Bookmarks</title> 
+    <para>
+      &gftp; allows you to create  bookmarks for quick access to
+      frequently used sites. Each bookmark contains the 
+      information about a connection:
+    </para>
+    <itemizedlist>
+      <listitem>
+	<para>
+	  Host name, port, username and password (for non-anonymous
+	  connection) 
+	</para>
+	<warning id="gftp-security-warning">
+	  <para>
+	    Storing your username and password in bookmarks is a
+	    potential security risk! &gftp; stores this information
+	    unencrypted in the configuration file. Thus, anyone who
+	    has access to your account (including any hacker who
+	    managed to break into your account) will be able to read
+	    these usernames and passwords. 
+	  </para>
+	</warning>
+      </listitem>
+      <listitem>
+	<para>
+	  Protocol (FTP, HTTP, SSH)
+	</para>
+      </listitem>
+      <listitem>
+	<para>
+	  Directories on the local and remote systems
+	</para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      To use one of bookmarked connections, choose the connection name
+      from <guimenu>Bookmarks</guimenu> menu. 
+    </para>
+    
+    <para>
+      To add current connection to the list of bookmarks, choose
+      <menuchoice> <guimenu>Bookmarks</guimenu> <guimenuitem>Add
+      Bookmark</guimenuitem> </menuchoice>
+      (<keycombo><keycap>Ctrl</keycap> <keycap>A</keycap></keycombo>). 
+    </para>
+    <para> To delete, rename, or  edit a bookmark, choose
+      <menuchoice> <guimenu>Bookmarks</guimenu> <guimenuitem>Edit
+      Bookmarks</guimenuitem> </menuchoice>. This will open
+      <guilabel>Edit Bookmarks</guilabel> dialog described below.
+    </para>
+    <sect2 id="gftp-edit-bookmarks">
+      <title>Edit Bookmarks Dialog</title>
+      <para>
+	This dialog allows you to create, delete, edit, and rename
+	bookmarks. 
+      </para>
+      <para>
+        To delete a bookmark, click on it to select, then right-click
+        and choose <guimenuitem>Delete</guimenuitem> from the context
+        menu. 
+      </para>
+      <para>
+	To create a new bookmark, right-click in the list of bookmarks
+	and choose <guimenuitem>New Item</guimenuitem> from the context
+        menu. &gftp; will prompt you for the bookmark name. After
+	creating the bookmark, you should edit it as described below
+	to enter the required information.  
+      </para>
+      <para>
+	To edit a bookmark, double-click on it. You can also click on
+        it to select, then right-click and choose
+        <guimenuitem>Properties</guimenuitem> from the context
+        menu. This will open <guilabel>Edit Entry</guilabel>
+        dialog. In this dialog, you can enter bookmark name and
+        connection information: hostname, port, protocol, directories
+        on local and remote computer. If using anonymous connection,
+        select <guilabel>Log in as ANONYMOUS</guilabel>. Otherwise,
+        unselect this option and enter your  username and
+        password (see <xref linkend="gftp-connect"/>). In addition, for SSH
+        connections you can also enter path to <command>sftp</command>
+        command (see <xref linkend="gftp-ssh"/>). If unsure, leave
+        this field blank.
+      </para>
+    </sect2>	
+  </sect1>
+
+<!-- =========== Using SSH Protocol ========================= -->
+  <sect1 id="gftp-ssh"> 
+    <title>Using SSH Protocol</title> 
+    <para>
+      This section contains some information about SSH (Secure Shell_
+      protocol. Normally, you do not need to read this section to use
+      &gftp;. However, if you have problems with configuring or
+      troubleshooting SSH connection, you will find here information
+      you need to fix it. 
+    </para>
+    <!-- ===========  Sect 2 ======== -->
+      <sect2 id="gftp-ssh-whatis">
+	<title>What Is SSH?</title>
+	<para>
+	  SSH (Secure Shell) is a protocol for connecting to a remote
+	  computer encrypting all communications (including username
+	  and password). It was originally designed as a secure
+	  replacement for <application>telnet</application>
+	  command. Later versions of SSH also allow file transfers
+	  over the SSH connection.
+	</para>
+	<para>
+	  As with all communications programs, to connect to a remote
+	  computer using SSH it is necessary to have communication
+	  programs supporting SSH protocol both on your local computer
+	  (ssh client) and on the remote one (ssh ser`ver). There are
+	  many applications supporting this protocol; the most popular
+	  ones for Linux include SSH and OpenSSH.
+	</para>
+      </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+      <sect2 id="gftp-ssh-versions">
+	<title>What Is the Difference Between SSH And SSH2?</title>
+	<para>
+	  There are two versions of SSH protocol, SSH1 and SSH2. SSH1
+	  is outdated, so you should use SSH2 whenever possible. If
+	  you select SSH as the protocol, then &gftp; (and most other
+	  SSH applications) will try to use SSH2; if it is not
+	  available, then it will try SSH1. If you select SSH2, then
+	  &gftp; will only try to use SSH2 and produce an error
+	  message if SSH2 is not available. 
+      </para>
+    </sect2>
+
+    <!-- ===========  Sect 2 ======== -->
+      <sect2 id="gftp-ssh-transfer">
+	<title>File Transfer Over SSH</title>
+	<para>
+	  SSH1 had no built-in mechanism for transferring
+	  files. However, there is an add-on program, called
+	  <application>sftp</application>, which allows transferring
+	  files over SSH1 connection. this program is available from
+	  <ulink type="http"
+	  url="http://www.xbill.org/sftp">http://www.xbill.org/sftp</ulink>.
+	  To transfer files over SSH1 connection, this program must be
+	  installed on the <emphasis>remote</emphasis>
+	  computer. &gftp; requires version 0.7 or later of
+	  <application>sftp</application>.  
+	</para>
+	<para>
+	  SSH2 has  built-in means of transferring files (so-called
+	  <quote>sftp subsystem</quote>).  So if you are using SSH2,
+	  there is no need to install any additional programs. 
+	</para>
+	<para>
+	  There are two options for transferring files using SSH2
+	  protocol:
+	</para>
+	<variablelist>
+          <!-- ######### --> 
+	  <varlistentry>
+	    <term>Using <quote>sftp subsystem</quote></term>
+	    <listitem>
+	      <para>
+	       This is <quote>the right way</quote> to transfer
+	      files. The downside of this method is that it is not
+	      enough to enter the password in
+	      <guilabel>Pass</guilabel> field;
+	      <application>ssh</application> will ask you for the 
+	      password independently. It also requires that you have
+	      utility <application>ssh-askpass</application>, used by
+	      <application>ssh</application> for asking hte password,
+	      installed on your system. You can test whether this
+	      utility is installed by entering command
+	      <command>ssh-askpass</command> on the command line. If
+	      you get an error message, it means that
+	      <application>ssh-askpass</application> is not installed.
+	      If you are using OpenSSH, you should install one of the
+	      packages  <application>openssh-askpass</application> or
+	      <application>openssh-askpass-gnome</application>.  
+	    </para>
+	    <para>To use this method, open
+	    <link
+	    linkend="gftp-configuring"><guilabel>Options</guilabel>
+	    dialog</link> and   make sure that in the 
+	    <guilabel>SSH</guilabel> tab the option <guilabel>Use SSH2
+	    sftp subsys</guilabel> is selected. In most cases, you
+	    will also need to select <guilabel>Need SSH
+	    User/Pass</guilabel> and <guilabel>Use ssh-askpass
+	    util</guilabel>. FIXME: I do not quite understand what
+	    these options do. In my experiments, I was able to connect
+	    to SSH2 server (requiring password)  whether or not these
+	    options were selected.  
+	    </para>
+	    </listitem>
+	  </varlistentry>
+          <!-- ######### --> 
+	  <varlistentry>
+	    <term>Calling sftp-exec directly</term>
+	    <listitem>
+	      <para> Using this method, &gftp; calls the
+	      <application>sftp-exec</application> directly rather
+	      than through <application>ssh</application>
+	      command. This method does not require
+	      <application>ssh-askpass</application> utility; all you
+	      need is to enter the password in
+	      <guilabel>Pass</guilabel> field.  However,
+	      it requires that the the executable file
+	      <application>sftp-exec</application> on remote computer
+	      be in PATH, i.e. in one of the standard locations  where
+	      the system looks for executables. If it is not in PATH,
+	      you will need to explicitly specify its location in
+	      <guilabel>SSH</guilabel> tab of <link
+	      linkend="gftp-configuring"><guilabel>Options</guilabel>
+	      dialog</link>.  
+	    </para>
+	    <para>
+	      To check whether <application>sftp-exec</application> is
+	      in PATH on the remote computer, connect to remote
+	      computer via ssh as described in <xref
+	      linkend="gftp-ssh-test"/> and enter comamnd
+	      <command>sft-exec</command> on remote computer. If you
+	      get an error message, this means that
+	      <application>sftp-exec</application> is not in PATH. In
+	      this case, you should ask the system administartor of
+	      the remote computer for help. You can also try one of
+	      standard locations (e.g., for OpenSSH server as packaged
+	      for Red Hat Linux, <application>sftp-exec</application>
+	      is in <filename>/usr/libexec/openssh</filename>).
+	    </para>
+	    <para>
+	      To use this method,  open
+	    <link
+	    linkend="gftp-configuring"><guilabel>Options</guilabel>
+	    dialog</link> and   make sure that in the 
+	    <guilabel>SSH</guilabel> tab the option <guilabel>Use SSH2
+	    sftp subsys</guilabel> is unselected. If
+	    <application>sftp-exec</application> is not in PATH, you
+	    will also need to enter its location in <guilabel>SSH2
+	    sftp-server path</guilabel>. 
+	    </para> 
+	    </listitem>
+	  </varlistentry>
+	</variablelist>
+    </sect2>
+
+
+    <!-- ===========  Sect 2 ======== -->
+    <sect2 id="gftp-ssh-test">
+      <title>Testing SSH Connection</title>
+      <para>
+	  If you have problems transferring files using SSH, you can
+	  test your SSH connection. To do so, open a terminal window
+	  and type <command>ssh
+	  <replaceable>username@hostname.domain</replaceable></command>.
+	  If you get no reply, it can mean that something is wrong
+	  with your internet connection, or that the remote computer
+	  is down, or that the remote computer is configured not to
+	  allow connections from your computer. 
+	</para>
+	<para>
+	  If you are connecting to the remote computer for the first
+	  time, you should  see a message like this:
+	</para>
+	<screen>
+The authenticity of host 'hostname (###.###.###.###)' can't be established.
+RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
+Are you sure you want to continue connecting (yes/no)?
+	</screen>
+	<para>
+	  This is normal; unless you are paranoid about security or
+	  have reasons to expect foul play (in which case you should
+	  consult an expert), answer <userinput>yes</userinput>. You
+	  only need to do it once; this message should not appear for
+	  the subsequent connections to the same computer. 
+	</para>
+	<para>
+	  After this, remote computer should ask you for the
+	  password. After confirming the password, you should be
+	  logged to the remote computer. 
+	</para>
+      </sect2>
+  </sect1>
+
+
+
+<!-- ===========  Configuring &gftp; ========================= -->
+  <sect1 id="gftp-configuring"> 
+    <title>Configuring &gftp;</title> 
+    <para>
+      To configure &gftp; choose <menuchoice><guimenu>FTP</guimenu>
+	<guimenuitem>Options</guimenuitem> </menuchoice>
+	(<keycombo><keycap>Ctrl</keycap>
+	<keycap>O</keycap></keycombo>). This will open
+	<guilabel>Options</guilabel>  dialog, shown in <xref
+	linkend="gftp-options-fig"/>. This dialog contains several
+	tabs described in detail below. After making your selections
+	in these tabs, click <guibutton>OK</guibutton> to save the
+	changes and close the dialog. You can also click
+	<guibutton>Apply</guibutton> to save the changes without
+	closing the dialog, or <guibutton>Cancel</guibutton> to close
+	the dialog discarding the changes.   
+    </para>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-general">
+      <title>General Configuration Tab</title>
+      <para>
+	This tab contains most general &gftp; options which are common
+	for all protocols (FTP, HTTP, SSH).
+      </para>
+      <variablelist>
+	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Email address</guilabel></term>
+	  <listitem>
+	    <para>
+	      
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>View Program</guilabel></term>
+	  <listitem>
+	    <para>
+	      The default command to use for viewing files (when you
+	      select <menuchoice><guimenu>Local/Remote</guimenu>
+	      <guimenuitem>View</guimenuitem></menuchoice>). If this
+	      field is left blank, &gftp; will use built-in text viewer. 
+	    </para>
+	    <para>
+	      You can specify different view programs for different
+	      file types as described in <xref
+	      linkend="gftp-configuring-advanced"/>.
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Edit Program</guilabel></term>
+	  <listitem>
+	    <para>The default command to use for editing files (when you
+	      select <menuchoice><guimenu>Local/Remote</guimenu>
+	      <guimenuitem>Edit</guimenuitem></menuchoice>)
+	    </para>	    
+	    <para>
+	      You can specify different edit programs for different
+	      file types as described in <xref
+	      linkend="gftp-configuring-advanced"/>.
+	    </para>
+
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Startup Directory</guilabel></term>
+	  <listitem>
+	    <para>
+	      The directory on local computer to show in the file list
+	      when starting &gftp;. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Log File</guilabel></term>
+	  <listitem>
+	    <para>In this field, you can enter the location of the log
+	    file (see <xref linkend="gftp-logging"/>. Default location
+	    is <filename>~/.gftp/gftp.log</filename>, where
+	    <filename>~</filename> is your home directory. 
+	    </para>
+	  </listitem>
+`	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Max Log Window Size</guilabel></term>
+	  <listitem>
+	    <para>This is the number of lines you can scroll back in
+	    the <guilabel>Log Window</guilabel>.
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Append File Transfers</guilabel></term>
+	  <listitem>
+	    <para>
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Confirm Delete</guilabel></term>
+	  <listitem>
+	    <para>If this option is selected, &gftp; will ask for
+	    confirmation before deleting files or directories.
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Overwrite by Default</guilabel></term>
+	  <listitem>
+	    <para>
+	      This option controls behavior of &gftp; if the file
+	      being transferred is already present in the target
+	      directory. As described in <xref
+	      linkend="gftp-overwrite"/>, in such situation &gftp;
+	      prompts you to select one of three possible actions:
+	      <guilabel>Overwrite</guilabel>,
+	      <guilabel>Resume</guilabel>,
+	      <guilabel>Skip</guilabel>. If this option is selected,
+	      then the default action suggested by &gftp; will be
+	      <guilabel>Overwrite</guilabel>. Otherwise, the default
+	      action will be <guilabel>Resume</guilabel>.
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Preserve permissions</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected, transferred files will have
+	      the same permissions as the original files. This is the
+	      default behavior. Otherwise, transferred files will have
+	      the default permissions for newly created files. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Resolve Remote Symlinks</guilabel></term>
+	  <listitem>
+	    <para>
+	      
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Show hidden files</guilabel></term>
+	  <listitem>
+	    <para>
+	      if this option is selected, &gftp; will show files and
+	      directories with names starting with a dot
+	      (<keycap>.</keycap>). By a common Unix/Linux
+	      conventions, such files are used for system data and
+	      applications' settings. Such files rarely contain user
+	      data.  
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Start file transfers</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected, &gftp; will start
+	      transferring files as soon as you click on
+	      <guibutton>File transfer</guibutton> button or
+	      double-clicked on the file. This is the default
+	      behavior. If this option is unselected, &gftp; will just
+	      add the names of files to be transferred to the
+	      queue. It will only 
+	      start the actual transfer when you choose
+	      <menuchoice><guimenu>Transfers</guimenu>
+	      <guimenuitem>Start Transfer</guimenuitem></menuchoice>.   
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Bring up reconnect dialog</guilabel></term>
+	  <listitem>
+	    <para>
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Do one transfer at a time</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected (default), &gftp; will do file
+	      transfers consecutively, i.e. it will only start
+	      transferring the next file after the transfer of the
+	      previous file has completed. If this option is not
+	      selected, &gftp; will transfer files simultaneously,
+	      opening as many connections to the remote computer as
+	      necessary.   
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Passive file transfers</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected (default), &gftp; will use
+	      <quote>passive</quote> file transfer; otherwise, it will
+	      use active file transfer. For most users, all you need
+	      to know about the difference between these two modes is
+	      that  many firewalls will not let you download a file
+	      using active file transfer. Thus, if you are behind a
+	      firewall, you should use passive file transfer. On the
+	      other hand, not all FTP servers support passive file
+	      transfer. Thus, if you get error message when
+	      transferring files, try unselecting this option. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Refresh after each file transfer</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected, &gftp; will refresh file
+	      list after each file transfer. Otherwise, &gftp; will
+	      only refresh file list when you choose
+	      <menuchoice><guimenu>Local</guimenu>
+	      <guimenutiem>Refresh</guimenutiem> </menuchoice> (or
+	      <menuchoice><guimenu>Remote</guimenu> 
+	      <guimenutiem>Refresh</guimenutiem> </menuchoice>).
+	    </para>
+	  </listitem>
+	</varlistentry>
+ 	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Save geometry</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected, &gftp; will remember window
+	      size and position on the screen and will use same size
+	      and position when started next time. 
+	    </para>
+	  </listitem>
+	</varlistentry>
+  	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Sort directories first</guilabel></term>
+	  <listitem>
+	    <para>
+	      If this option is selected, file list always shows
+	      directories before files. Otherwise, both directories
+	      and files will be sorted according to the order you have
+	      chosen (see <xref linkend="gftp-file-sort"/>).
+	    </para>
+	  </listitem>
+	</varlistentry>
+  	<!-- ######### --> 
+	<varlistentry>
+	  <term><guilabel>Use cache</guilabel></term>
+	  <listitem>
+	    <para>
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>      
+    </sect2>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-network">
+      <title>Network Configuration Tab</title>
+      <para>
+
+      </para>
+    </sect2>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-ftp">
+      <title>FTP Configuration Tab</title>
+      <para>
+
+      </para>
+    </sect2>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-http">
+      <title>HTTP Configuration Tab</title>
+      <para>
+
+      </para>
+    </sect2>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-ssh">
+      <title>SSH Configuration Tab</title>
+      <para>
+
+      </para>
+    </sect2>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-local">
+      <title>Local Hosts Configuration Tab</title>
+      <para>
+
+      </para>
+    </sect2>
+
+    <!-- ####### Sect2 ######### -->
+    <sect2 id="gftp-configuring-advanced">
+      <title>Advanced Configuration Options</title>
+      <para>
+	Advanced users can also configure &gftp; by manually editing
+	the configuration file. This file is located at
+	<filename>~/.gftp/gftprc</filename> (where
+	<filename>~</filename> is your home directory). This file
+	stores all the configuration options for &gftp;, including
+	those that can be configured in <guilabel>Options</guilabel>
+	dialog.     
+      </para>
+      <para>
+	In addition, there are some options that can only be
+	configured  by manually editing the configuration file. Most
+	importantly, you can configure  how &gftp; should treat files
+	of different types. More precisely, for every mime type, you
+	can select:
+      </para>
+      <itemizedlist>
+	<listitem>
+	  <para>
+	    The icon to be used in file list window
+	  </para>
+	  </listitem>
+	<listitem>
+	  <para>
+	    Default transfer type (binary or ascii)
+	  </para>
+	  </listitem>
+	<listitem>
+	  <para>
+	    Default view/edit program
+	  </para>
+	</listitem>
+      </itemizedlist>
+      <para>
+	Each mime type is described by a line in the configuration
+	file which looks like this:
+	<programlisting>
+	  ext=.xcf:gimp.xpm:B:gimp
+	</programlisting>
+
+	The first token, <literal>.xcf</literal>, is the file
+	extension (&gftp; uses file extensions to identify mime
+	types).  The next token, <literal>gimp.xpm</literal>, is the
+	default icon to use in the file list windows.  You don't have to
+	specify one if you don't have to. By default, &gftp; will
+	search <filename>~/.gftp</filename>,
+	<filename>$(PREFIX)/share/gftp</filename> (where
+	<filename>PREFIX</filename> is your installation prefix), and
+	then <filename>/usr/share/icons</filename> in that order.  The
+	files have to be a valid <filename>xpm</filename> file.  The
+	next token, <literal>B</literal>, specifies whether &gftp;
+	should use binary (B) or ascii (A) mode for transferring files
+	of this type.If you omit this field, then &gftp; will download
+	the file according to whether ascii or binary is selected in
+	the <guimenu>FTP</guimenu> menu.  The final token,
+	<literal>gimp</literal>, specifies the name of the program to
+	run to view or edit a file with that extension.  You can omit
+	this as well if you like.
+      </para>
+    </sect2>
+  </sect1>
+<!-- =========== Troubleshooting ========================= -->
+  <sect1 id="gftp-faq"> 
+    <title>Frequently Asked Questions</title> 
+    <para>
+    </para>
+
+  </sect1>
+
+<!-- ============= About ================================== -->
+  <sect1 id="gftp-about"> 
+    <title>About &gftp;</title> 
+
+    <para> &gftp; was written by Brian Masney 
+      (<email>masneyb@seul.org</email>). To find more information
+      about &gftp;, please visit the <ulink
+      url="http://gftp.seul.org/" type="http">gFTP
+      Web page</ulink>. 
+    </para>
+    <para>
+      This manual was written by Alexander Kirillov
+      (<email>kirillov@math.sunysb.edu</email>), using previous
+      documentation written by Brian Masney 
+      (<email>masneyb@seul.org</email> and ??. 
+    </para>
+
+    <para> This program is distributed under the terms of the GNU
+      General Public license as published by the Free Software
+      Foundation; either version 2 of the License, or (at your option)
+      any later version. A copy of this license can be found at this
+      <ulink url="ghelp:gpl" type="help">link</ulink>, or in the file
+      COPYING included with the source code of this program. </para>
+
+  </sect1> 
+</article>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/legal.xml	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,76 @@
+  <legalnotice id="legalnotice">
+	<para>
+	  Permission is granted to copy, distribute and/or modify this
+	  document under the terms of the GNU Free Documentation
+	  License (GFDL), Version 1.1 or any later version published
+	  by the Free Software Foundation with no Invariant Sections,
+	  no Front-Cover Texts, and no Back-Cover Texts.  You can find
+	  a copy of the GFDL at this <ulink type="help"
+	  url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS
+	  distributed with this manual.
+         </para>
+         <para> This manual is part of a collection of GNOME manuals
+          distributed under the GFDL.  If you want to distribute this
+          manual separately from the collection, you can do so by
+          adding a copy of the license to the manual, as described in
+          section 6 of the license.
+	</para>
+
+	<para>
+	  Many of the names used by companies to distinguish their
+	  products and services are claimed as trademarks. Where those
+	  names appear in any GNOME documentation, and the members of
+	  the GNOME Documentation Project are made aware of those
+	  trademarks, then the names are in capital letters or initial
+	  capital letters.
+	</para>
+
+	<para>
+	  DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
+	  UNDER  THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
+	  WITH THE FURTHER UNDERSTANDING THAT:
+
+	  <orderedlist>
+		<listitem>
+		  <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
+                    WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+                    IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+                    THAT THE DOCUMENT OR MODIFIED VERSION OF THE
+                    DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
+                    A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+                    RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
+                    OF THE DOCUMENT OR MODIFIED VERSION OF THE
+                    DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
+                    MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
+                    YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
+                    CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+                    SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+                    OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+                    LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
+                    VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
+                    EXCEPT UNDER THIS DISCLAIMER; AND
+		  </para>
+		</listitem>
+		<listitem>
+		  <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
+                       THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
+                       CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
+                       INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
+                       DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
+                       OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
+                       PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+                       DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+                       CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+                       INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
+                       OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+                       MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
+                       LOSSES ARISING OUT OF OR RELATING TO USE OF THE
+                       DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
+                       EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+                       THE POSSIBILITY OF SUCH DAMAGES.
+		  </para>
+		</listitem>
+	  </orderedlist>
+	</para>
+  </legalnotice>
+
--- a/docs/sample.gftp/gftprc	Fri Jul 11 20:35:58 2003 +0000
+++ b/docs/sample.gftp/gftprc	Sun Jul 13 12:38:35 2003 +0000
@@ -20,6 +20,9 @@
 # messages to the current locale
 remote_charsets=
 
+# The number of seconds to keep cache entries before they expire.
+cache_ttl=3600
+
 # Append new file transfers onto existing ones
 append_transfers=1
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/website/faq.html	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,148 @@
+<HTML>
+<HEAD>
+<TITLE>Frequently Asked Questions for gFTP</TITLE>
+<META NAME="author" CONTENT="Brian Masney"> 
+<LINK REV=MADE HREF="mailto:masneyb@gftp.org">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#336699" ALINK="#336699">
+<FONT FACE="Lucida,Verdana,Helvetica,Arial"><SMALL>
+
+<H4>I'm having problems with installing the RPMs off of your website.</H4>
+If the RPM installs fine, but when you run gFTP, if you get an error about the symbol GCC_3.0 not found, then you need to recompile the RPM. Or if you try to install the RPM and you get an error about unresolved dependency libreadline.so.1 and you have the readline RPM installed, you'll also have to get a different gFTP RPM. The RPMs on my website I built on a Debian GNU/Linux i386 box with gcc 3.0.3.
+
+<P>I would first suggest checking your distributions development tree (RedHat Rawhide or Mandrake Cooker for example), they probably have a RPM of the latest gFTP there. If not, download the SRC RPM and type <em>rpm -i gftp-version-1.src.rpm</em>. It will build a RPM and put it in /usr/src/redhat/RPMS/arch or /usr/src/rpm/RPMS/arch (arch is i386, sparc, axp, etc...)</P>
+
+<H4>What systems is gFTP known to run on?</H4>
+I develop gFTP on a Debian GNU/Linux machine. Here is a list of other platforms I have received successful compile reports on:
+<UL>
+<LI>FreeBSD/NetBSD/OpenBSD/BSDI
+<LI>Solaris
+<LI>IRIX
+<LI>Digital UNIX 
+<LI>HP-UX 11
+</UL>
+I have gotten reports about successful compiles more platforms, but I lost those emails. If you got gFTP to compile on a platform not listed here, please email me about it and I'll add it to this list. If you are having problems compiling gtk+ or gftp on another platform, try using GNU make instead of your vendor supplied make. Most of the vendor supplied makes are brain-dead.
+
+<H4>I'm having problems getting SSH2 transfers to work. I keep getting the error: <EM>Error: Message size 1644196712 too big from server</EM></H4>
+<P>What probably is the problem, sftp-server isn't in your path on the remote server. When you try to connect to the remote server, you'll see the command gftp is trying to run, and it'll look something like:</P> 
+<P><CENTER>ssh -l <EM>username hostname</EM> "echo -n xsftp ;  sftp-server"</CENTER></P>
+<P>Try running this command. If you get a prompt asking:</P>
+
+<P><EM>The authenticity of host 'hostname (###.###.###.###)' can't be established.<BR>
+RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.<BR>
+Are you sure you want to continue connecting (yes/no)?<BR></EM></P>
+
+<P>Tell it yes. gFTP won't even try to answer this question for you at the moment. Then, if you get the following output:</P>
+
+<P><EM>Enter passphrase for key '/home/brian/.ssh/id_dsa':<BR>
+xsftp<BR>
+bash: sftp-server: command not found<BR></EM></P>
+
+<P>You'll have to set the path to the sftp-server program. Alternatively you could go under FTP-&gt;Options-&gt;SSH and enable Use sftp subsys. If you enable this, then you don't have to know the remote path to your sftp executable. But if you enable this, gFTP won't be able to send your password over to the ssh client. So if you're not using ssh-agent, then ssh will spawn the ssh-askpass program to grab your password.</P>
+
+<H4>What is the difference between the SSH and SSH2 protocols?</H4>
+
+The SSH protocol uses sftp &gt;= 0.7 from <A HREF="http://www.xbill.org/sftp">http://www.xbill.org/sftp</A>. SSH2 uses the native file transfers found in the <A HREF="http://www.ssh.com/">commercial SSH2</A> and in later versions of <A HREF="http://www.openssh.org/">OpenSSH</A>.
+
+<H4>How do I force running the text or gtk+ version of gftp?</H4>
+
+To run the text port, you can type gftp-text or to run the gtk+ port, you can run the gftp-gtk. The gftp command is just a shell script that sees if your DISPLAY variable is set, and if so it'll run the appropriate version
+
+<H4>Is there a way for gftp to download a bunch of files/directories and then exit when it's completed?</H4>
+
+Yes, the text port of gftp supports this well. You can type:<BR>
+<P><CENTER>gftp-text -d ftp://ftp.somesite.com/someplace</CENTER></P>
+If someplace is a directory, it'll automatically download all its subdirs as well. If you want to transfer a file through ssh instead of ftp, just change the ftp:// to ssh://
+
+<H4>In the GTK+ version of gFTP, do I have to enter a port, username and password   to connect to a ftp server?</H4>
+
+No you don't. If you leave the port blank, it'll default to the default port for the protocol you selected (port 21 for FTP). If you leave the username blank, it will default to logging in as anonymous
+
+<H4>How do I set up my HTTP Proxy server?</H4>
+
+Go under FTP-&gt;Options and hit the FTP tab. Enter HTTP as the proxy type and fill in your proxy server info on that screen. Then hit the HTTP tab and enter your same proxy server info there.
+
+
+<H4>When gFTP tries to get the remote directory listing, it sends LIST -L, but the remote server sends an error back</H4>
+Go to FTP-&gt;Options and turn off resolve remote symlinks. gFTP will then send LIST instead of LIST -L.
+
+<H4>When gFTP tries to get the remote directory listing, I get an error that says: Cannot create a data connection: Connection refused</H4>
+
+Go under FTP-&gt;Options and turn off passive file transfers. Instead of sending the PASV command to open up the data connection on the server side, the data connection will be opened up on the client side, and the PORT command will be sent to the server instead.
+
+<H4>When I try to compile gFTP, I get some errors. One of them is undefined symbol LC_ALL</H4>
+Try typing <EM>make distclean ; configure --with-included-gettext</EM> and it should compile fine then.
+
+<H4>How do I report bugs in gFTP?</H4>
+If you find ANY bugs in gFTP, please email them to me at <A HREF="mailto:masneyb@gftp.org">masneyb@gftp.org</A>. 
+If there is a newer version of gFTP available, please try it first before you 
+send me a bug report. If the problem exists in that version, feel free to email
+me about it. When sending in bug reports, please try to be as descriptive as 
+possible. Send me what OS/version you are running, what compiler you are 
+compiling with, and any other important information. If you get gFTP to crash,
+it would be very helpful if you could send me a backtrace. If you do not know 
+how to do a backtrace, download the source code from my website. Edit the 
+Makefile, and make sure that -g appear in the CFLAGS variable. Then recompile 
+gFTP, but do NOT do a make install because it will install a stripped binary in
+$PREFIX/bin. Then type gdb ./gftp. Once you have a (gdb) prompt, type r. Once 
+you get gFTP to crash, go back to that terminal window, and type bt, and send 
+me that output in an email message along with a short description of how it 
+happened.
+
+<H4>I downloaded a binary off the internet and everytime I run gFTP I get an
+error saying: undefined symbol :__register_frame_info</H4>
+
+ObiTuarY <A HREF="mailto:obituary@freshmeat.net">obituary@freshmeat.net</A> says:<BR><P>
+This happens when you compile a library with egcs. The library then has
+the __register_frame_info symbol. If you link a program to it, it will    
+require this symbol. Now if you have the exact same library compiled with
+gcc 2.7.2.3 it won't have this symbol. The thing about glibc 2.1 under Red
+Hat 6 is it was compiled with egcs and glibc 2.0.x under Red Hat 5.x was  
+compiled with gcc 2.7.2.3, therefore it's not an incompatibility between  
+glibc 2.0.x and 2.1.x. What some people do for that is they get the .o file
+of egcs with __register_frame_info in it and link into the program so it's 
+always there, that way it works with libs compiled with egcs or gcc 2.7.2.3.
+(in /usr/lib/gcc-lib/i386-*-linux/egcs-*/ )"
+</P>
+Another alternative, is to recompile gftp on your machine, or you can
+download some RPMs off my website that were compiled against Red Hat 5.2
+
+<H4>I upgraded to a newer version of gFTP and now I am getting some warnings about some config file lines not having enough arguments, and it cannot find html.xpm.</H4>
+
+This is from upgrading from a very old version of gftp to a newer version. I removed some icons from the distribution (0.20 to 0.21). Edit your ~/.gftp/gftprc file. At the bottom of the file, there are some ext= lines. Some of them have html.xpm, rpm.xpm and pdf.xpm. Remove these lines and gFTP will startup fine. Don't worry about fixing the warnings...they will go away themselves.
+
+<H4>Where does gFTP store it's options?</H4>
+gFTP will automatically create a ~/.gftp directory when it is first run.
+Your config file is ~/.gftp/gftprc, and this is where all of gFTP's
+settings are stored. The config file is well commented, so take a glance
+at it and see if there is anything you want to change.
+
+<H4>I am trying to compile your program and I get some parse errors before
+GdkDragContext. What's wrong?</H4>
+You have an older version of gtk installed on your system. If you are
+using Red Hat or Debian Linux, simply remove the gtk and glib devel
+packages. You can still leave the gtk 1.0 libraries installed.
+
+<H4>I am having a hard time using the drag and drop in gFTP. How do I use it?</H4>
+To drag from the file listboxes in gFTP, you have to drag with button #3.
+On a two button mouse, you have to hold down both buttons. For this to work
+tho, you have to edit your XF86Config file, and go to the Pointer section.
+You have to make sure Emulate3Buttons is in there. Here's the section out of
+my config file:
+
+Section "Pointer"<BR>
+   Protocol        "PS/2"             # This will depend on your mouse<BR>
+   Device          "/dev/mouse"       # This will also depend on your mouse<BR>
+   Emulate3Buttons                    # You need this for a 2 button mouse<BR>
+EndSection<BR>
+
+<H4>I have a libc 5 based machine and everytime I run gFTP it instantly crashes. 
+I get an error something like: Gdk-ERROR **: an x io error occurred
+What's wrong?</H4>
+Your X libraries are not thread safe. They must be compiled with 
+-D_REENTRANT. You can either recompile your X libraries, or you can
+download some from my webpage at
+<A HREF="ftp://ftp.gftp.org/pub/gftp/libs/XFree86-libs-3.3-2_threading.i386.tgz">ftp://ftp.gftp.org/pub/gftp/libs/XFree86-libs-3.3-2_threading.i386.tgz</A>
+
+<P>Brian Masney <A HREF="mailto:masneyb@gftp.org">masneyb@gftp.org</A></P>
+</SMALL></FONT></BODY></HTML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/website/generate-gftp-website.pl	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,139 @@
+#!/usr/bin/perl -w
+
+# This script will generate the gFTP webpage. You will have to first build the 
+# RPMs, DEBs, and tarballs and put them all in the current directory.
+
+use Time::Local;
+
+my @date = localtime (time ());
+
+my $version = `cat ../../configure | grep ^VERSION= | awk -F= '{print \$2}'`;
+chop ($version);
+
+my %rep = ("STABLE_BZ2" => "gftp-" . $version . ".tar.bz2",
+           "STABLE_GZ" => "gftp-" . $version . ".tar.gz",
+           "STABLE_I386RPM" => "gftp-" . $version . "-1.i386.rpm",
+           "STABLE_SRCRPM" => "gftp-" . $version . "-1.src.rpm",
+           "STABLE_I386DEB" => "gftp_" . $version . "-1_i386.deb",
+           "STABLE_I386DEB_COMMON" => "gftp-common_" . $version . "-1_i386.deb",
+           "STABLE_I386DEB_GTK" => "gftp-gtk_" . $version . "-1_i386.deb",
+           "STABLE_I386DEB_TEXT" => "gftp-text_" . $version . "-1_i386.deb"); 
+
+$tarfiles = "MD5SUMS changelog.html faq.html gftp-screenshot.png index.html install.html logo.jpg robots.txt screenshots.html";
+
+print "Generating MD5SUMS...\n";
+
+open M, ">MD5SUMS" || die "Can't open MD5SUMS: $!\n";
+foreach $tag (keys %rep)
+  {
+    next if $tag =~ /_KB$/;
+
+    $file = $rep{$tag};
+    if (!-e $file)
+      {
+        undef ($rep{$tag});
+        next;
+      }
+
+    $tarfiles .= " $file";
+    print M `md5sum $file`;
+
+    @st = stat ($file);
+    $rep{$tag . "_KB"} = int ($st[7] / 1024);
+  }
+close M;
+
+$rep{"STABLE_VER"} = $version;
+$rep{"STABLE_DATE"} = ++$date[4] . "/$date[3]/" . ($date[5] + 1900);
+
+print "Generating changelog.html...\n";
+
+open C, "<../gftp/ChangeLog-old" or die "Can't open ../gftp/ChangeLog-old: $!\n";
+open N, ">changelog.html" or die "Can't open changelog.html: $!\n";
+
+print N "<HTML>\n";
+print N "<HEAD>\n";
+print N "<TITLE>gFTP Changelog</TITLE>\n";
+print N "<META NAME=\"author\" CONTENT=\"Brian Masney\">\n";
+print N "<LINK REV=MADE HREF=\"mailto:masneyb\@gftp.org\">\n";
+print N "</HEAD>\n";
+
+print N "<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\" LINK=\"#336699\" VLINK=\"#336699\" ALINK=\"#336699\">\n";
+print N "<FONT FACE=\"Lucida,Verdana,Helvetica,Arial\"><SMALL>\n";
+
+$close = 0;
+
+while (<C>)
+  {
+    chop;
+    next if /^\s*$/;
+
+    if (/^Changes/)
+      {
+        if ($close)
+          {
+            print N "\n</UL>\n";
+          }
+        else
+          {
+            $close = 1;
+          }  
+     
+        print N "\n<H4>$_</H4>\n";
+        print N "<UL>";
+        next;
+      }
+
+    s/\</&lt\;/g;
+    s/\>/&gt\;/g;
+    s/\s+$//;
+
+    if (!/^\*/)
+      {
+        s/^\s+//;
+        print N " $_";
+      }
+    else
+      {
+        s/^\*\s+//;
+        print N "\n<LI>$_";
+      }
+  }
+
+print N "\n</UL>\n\n";
+print N "<P>Brian Masney <A HREF=\"mailto:masneyb\@gftp.org\">masneyb\@gftp.org</A></P>\n";
+print N "</SMALL></FONT></BODY></HTML>\n";
+
+close C;
+close N;
+
+print "Generating index.html...\n";
+
+open I, "<index.html.in" || die "Can't open index.html.in: $!\n";
+open N, ">index.html" || die "Can't open index.html: $!\n";
+while (<I>)
+  {
+    $skip = 0;
+    while (($var) = /\%(.*?)\%/)
+      {
+        if (!defined ($rep{$var}))
+          {
+            print STDERR "Warning: $var not found in hash. Skipping.\n";
+            $skip = 1;
+            last;
+          }
+        s/\%$var\%/$rep{$var}/g;
+      }
+
+    next if $skip == 1;
+    print N $_;
+  }
+close I;
+close N;
+
+$tarcmd = "tar -jcvf gftp-$version-website.tar.bz2 $tarfiles";
+print "Running $tarcmd...\n";
+system ($tarcmd);
+
+print "Done.\n";
+
Binary file docs/website/gftp-screenshot.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/website/index.html.in	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,86 @@
+<HTML>
+<HEAD>
+<TITLE>gFTP Official Homepage</TITLE>
+<META NAME="description" CONTENT="gFTP is a free multithreaded ftp client for *NIX based machines running X11R6 or later.">
+<META NAME="keywords" CONTENT="gftp gtk ftp client x11r6 x windows linux bsd solaris unix">
+<META NAME="author" CONTENT="Brian Masney">
+<LINK REV=MADE HREF="mailto:masneyb@gftp.org">
+</HEAD>
+
+<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#336699" ALINK="#336699">
+<FONT FACE="Lucida,Verdana,Helvetica,Arial">
+
+<TABLE CELLSPACING="0" CELLPADDING="2" BORDER="0" WIDTH="100%">
+<TR>
+<TD ALIGN="left" VALIGN="bottom">
+<A HREF="http://www.gftp.org/"><IMG WIDTH=294 HEIGHT=108 SRC="logo.jpg" BORDER="0" ALT="gFTP Logo"></A>
+</TD>
+
+<TD ALIGN="right" VALIGN="top">
+<TABLE CELLSPACING="0" CELLPADDING="1" BORDER="0" WIDTH="100%"><TR>
+
+<TD ALIGN="right"><SMALL><STRONG>
+<A HREF="install.html">Installation Instructions</A><BR>
+<A HREF="screenshots.html">Screenshots</A><BR>
+<A HREF="changelog.html">Changelog</A><BR>
+<A HREF="faq.html">FAQ</A><BR>
+</STRONG></SMALL></TD>
+
+</TR></TABLE></TD>
+</TR></TABLE>
+<SMALL>
+Latest Stable Version: %STABLE_VER% (%STABLE_DATE%)<BR>
+</SMALL>
+<BR>
+
+gFTP is a <a href="http://www.gnu.org/philosophy/free-sw.html">free</a> multithreaded ftp client for *NIX based machines running X11R6 or later. It has the following features:
+<UL>
+<LI>Distributed under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html">GNU Public License Agreement</a>
+<LI>Written in C and has a text interface and a GTK+ 1.2/2.0 interface
+<LI>Supports the FTP, HTTP and SSH protocols
+<LI>Supports FXP file transfers (transfering files between 2 remote servers via FTP)
+<LI>Multithreaded to allow for simultaneous downloads
+<LI>File transfer queues to allow for downloading multiple files
+<LI>Supports downloading entire directories and subdirectories
+<LI>Bookmarks menu to allow you to quickly connect to remote sites
+<LI>Supports resuming interrupted file transfers
+<LI>Supports caching of remote directory listings
+<LI>Drag-N-Drop support
+<LI>FTP and HTTP proxy server support
+<LI>Allows for passive and non-passive file transfers
+<LI>Supports UNIX, EPLF, Novell, MacOS, and NT (DOS) style directory listings
+<LI>Full graphical configuration
+<LI>Fully Internationalized. I currently have a Bulgarian (bg), Chinese (zh_TW, zh_CN), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Hungarian (hu), Italian (it), Korean (ko), Japanese (ja), Norwegian (no), Polish (pl), Portuguese (pt_BR), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv) and Turkish (tr) translations available.
+</UL>
+
+<H2>Requirements</H2>
+<UL>
+<LI>GTK+ 1.2.3 or higher. GTK+/Glib is included with most systems now. If you don't have it installed, you may want to check to see if your vendor has a package available. If not, you can download the latest version of GTK+ and Glib from <A HREF="ftp://ftp.gtk.org/pub/gtk">ftp://ftp.gtk.org/pub/gtk</A>. gFTP will work with version 1.2 or 2.0 of GTK+, I would suggest using GTK+ 2.0, but installing GTK+ 2.0 does require installing more packages onto your system.
+<LI>pthread libraries. If you have a libc6 based machine (Debian 2.x+, Red Hat 5.x+), you should already have the pthread libraries installed. If you have a libc5 based machine, you will need to install LinuxThreads. You can download it from my website <A HREF="ftp://www.gftp.org/pub/gftp/libs/linuxthreads.tar.gz">here</A>. If you are running a pretty modern Linux distribution, this shouldn't be an issue. Also, if you don't have LinuxThreads installed, you most likely don't have thread safe X libraries. You must have thread safe X libraries or gFTP will constantly crash. You can download some thread safe X libraries off my website <A HREF="ftp://gftp.seul.org/pub/gftp/libs/XFree86-libs-3.3-2_threading.i386.tgz">here</A>. If you are on a platform other than GNU/Linux, you may want to take a look at the <A HREF="http://www.informatik.hu-berlin.de/~mueller/pthreads/">FSU Pthreads library</A>.
+<LI>I would recommend running X in at least 800x600 mode.
+</UL>
+
+<H2>Download gFTP</H2>
+
+<P>If you run into any problems compiling or using gFTP, please feel free to
+email me. The only thing that I ask is that you read the <A HREF="faq.html">FAQ</A> before you ask any questions. Most of the questions that I get asked are answered there. You can also download these files via FTP at <A HREF="ftp://www.gftp.org/pub/gftp">ftp://gftp.seul.org/pub/gftp</A>. For MD5 sum checks of these files, you can view them <A HREF="MD5SUMS">here</A></P>
+
+<UL>
+<LI><A HREF="%STABLE_BZ2%">%STABLE_BZ2%</A> - Stable Source (bzip2) [%STABLE_BZ2_KB% KB]
+<LI><A HREF="%STABLE_GZ%">%STABLE_GZ%</A> - Stable Source (gzip) [%STABLE_GZ_KB% KB]
+<LI><A HREF="%STABLE_I386RPM%">%STABLE_I386RPM%</A> - Stable Binary i386 RPM [%STABLE_I386RPM_KB% KB]
+<LI><A HREF="%STABLE_SRCRPM%">%STABLE_SRCRPM%</A> - Stable Source RPM [%STABLE_SRCRPM_KB% KB]
+<LI><A HREF="%STABLE_I386DEB%">%STABLE_I386DEB%</A> [%STABLE_I386DEB_KB% KB], <A HREF="%STABLE_I386DEB_COMMON%">%STABLE_I386DEB_COMMON%</A> [%STABLE_I386DEB_COMMON_KB% KB], <A HREF="%STABLE_I386DEB_GTK%">%STABLE_I386DEB_GTK%</A> [%STABLE_I386DEB_GTK_KB% KB], <A HREF="%STABLE_I386DEB_TEXT%">%STABLE_I386DEB_TEXT%</A> [%STABLE_I386DEB_TEXT_KB% KB] - Stable Binary i386 DEBs
+</UL>
+
+<H2>Mailing Lists</H2>
+<UL>
+<LI><A HREF="http://archives.seul.org/gftp/announce/">gftp-announce</A> - this list is announcements related to gFTP. To subscribe, send an email to <A HREF="mailto:majordomo@seul.org">majordomo@seul.org</A> with the words <EM>subscribe gftp-announce</EM> in the body.
+<LI><A HREF="http://archives.seul.org/gftp/users/">gftp-users</A> - this list is for questions regarding gFTP. Please check the list archives first to see if your question has already been answered. To subscribe, send an email to <A HREF="mailto:majordomo@seul.org">majordomo@seul.org</A> with the words <EM>subscribe gftp-users</EM> in the body.
+</UL>
+
+<P>
+Brian Masney <A HREF="mailto:masneyb@gftp.org">masneyb@gftp.org</A><BR>
+Elkview, WV USA
+</P>
+</FONT></BODY></HTML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/website/install.html	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,23 @@
+<HTML>
+<HEAD>
+<TITLE>Installation instructions for gFTP</TITLE>
+<META NAME="author" CONTENT="Brian Masney">
+<LINK REV=MADE HREF="mailto:masneyb@gftp.org">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#336699" ALINK="#336699">
+<FONT FACE="Lucida,Verdana,Helvetica,Arial"><SMALL>
+
+<H2>Installation instructions for gFTP</H2>
+<UL>
+<LI>If you do not want to compile this program yourself, you can check my <A HREF="http://www.gftp.org/">webpage</A>. I have DEBs for Debian and RPMs for RedHat available. If you're looking for Solaris binaries, check out <A HREF="http://www.sunfreeware.com">http://www.sunfreeware.com</A>.
+<LI>If you are compiling gFTP yourself, extract the files from the distribution with tar -zxvf gftp-<EM>version</EM>.tar.gz
+<LI>Go to the gftp-<EM>version</EM> directory and type
+<BR><BR><UL><EM>./configure</EM><BR><EM>make</EM></UL><BR><BR>
+The command <EM>configure</EM> will generate a Makefile for your machine, and <EM>make</EM> will compile a binary for your machine. By default, when you run <EM>configure</EM>, it will install gftp in /usr/local/bin/gftp. If you want to change this to say, /usr, add the --prefix=/usr to the <EM>configure</EM> line. It will then install the binary in /usr/bin/gftp, and the public files in /usr/share/gftp
+<LI>If the compile suceeds without any errors, you can type <EM>make install</EM> to install the binary in /usr/local/bin. This will also copy some necessary files to /usr/local/share/gftp. If you do not have root on your machine to install these files, copy the contents of the sample.gftp directory to ~/.gftp.
+<LI>[OPTIONAL] If you compiled gFTP on a platform other than Linux, could you please send me your OS name/version and I will post on my website (under the <A HREF="faq.html">faq</A>) the machines gFTP has been successfully compiled on.
+<LI>You may want to glance at the USERS-GUIDE file that comes with this distribution. It contains a little bit of information about how to use gftp
+</UL>
+
+<P>Brian Masney <A HREF="mailto:masneyb@gftp.org">masneyb@gftp.org</A></P>
+</SMALL></FONT></BODY></HTML>
Binary file docs/website/logo.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/website/robots.txt	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,5 @@
+# robots.txt for *.seul.org
+# questions/comments to seul@seul.org
+
+User-agent: *
+Disallow: /cgi-bin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/website/screenshots.html	Sun Jul 13 12:38:35 2003 +0000
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<TITLE>gFTP Screenshot</TITLE>
+<META NAME="author" CONTENT="Brian Masney">
+<LINK REV=MADE HREF="mailto:masneyb@gftp.org">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#336699" ALINK="#336699">
+<FONT FACE="Lucida,Verdana,Helvetica,Arial"><SMALL>
+
+
+<CENTER><IMG SRC="gftp-screenshot.png" ALT="gFTP Screenshot"></CENTER>
+
+<P>Brian Masney <A HREF="mailto:masneyb@gftp.org">masneyb@gftp.org</A></P>
+</SMALL></FONT></BODY></HTML>
--- a/lib/cache.c	Fri Jul 11 20:35:58 2003 +0000
+++ b/lib/cache.c	Sun Jul 13 12:38:35 2003 +0000
@@ -25,9 +25,11 @@
   char *url,
        *file;
   int server_type;
+  time_t expiration_date;
 
   char *pos1,
-       *pos2;
+       *pos2,
+       *pos3;
 };
   
 typedef struct gftp_cache_entry_tag gftp_cache_entry;
@@ -68,6 +70,19 @@
   *pos++ = '\0';
   centry->server_type = strtol (pos, NULL, 10);
 
+  if ((pos = strchr (pos, '\t')) == NULL || *(pos + 1) == '\0')
+    {
+      if (request != NULL)
+        request->logging_function (gftp_logging_error, request,
+                            _("Error: Invalid line %s in cache index file\n"), 
+                            line);
+      return (-1);
+    }
+
+  centry->pos3 = pos;
+  *pos++ = '\0';
+  centry->expiration_date = strtol (pos, NULL, 10);
+
   return (0);
 }
 
@@ -80,6 +95,9 @@
 
   if (centry->pos2 != NULL)
     *centry->pos2 = '\t';
+
+  if (centry->pos3 != NULL)
+    *centry->pos3 = '\t';
 }
 
 
@@ -100,8 +118,13 @@
 gftp_new_cache_entry (gftp_request * request)
 {
   char *cachedir, *tempstr, *temp1str;
-  int cache_fd, fd;
+  int cache_fd, fd, cache_ttl;
   ssize_t ret;
+  time_t t;
+
+  gftp_lookup_request_option (request, "cache_ttl", &cache_ttl);
+  time (&t);
+  t += cache_ttl;
 
   cachedir = expand_path (BASE_CONF_DIR "/cache");
   if (access (cachedir, F_OK) == -1)
@@ -141,13 +164,13 @@
   g_free (cachedir);
 
   lseek (fd, 0, SEEK_END);
-  temp1str = g_strdup_printf ("%s://%s@%s:%d%s\t%s\t%d\n", 
+  temp1str = g_strdup_printf ("%s://%s@%s:%d%s\t%s\t%d\t%ld\n", 
                            request->url_prefix,
                            request->username == NULL ? "" : request->username,
                            request->hostname == NULL ? "" : request->hostname,
                            request->port, 
                            request->directory == NULL ? "" : request->directory,
-                           tempstr, request->server_type);
+                           tempstr, request->server_type, t);
   g_free (tempstr);
   ret = gftp_fd_write (NULL, temp1str, strlen (temp1str), fd);
   g_free (temp1str);
@@ -174,6 +197,9 @@
   gftp_getline_buffer * rbuf;
   gftp_cache_entry centry;
   int indexfd, cachefd;
+  time_t now;
+
+  time (&now);
 
   gftp_generate_cache_description (request, description, sizeof (description),
                                    0);
@@ -192,6 +218,10 @@
       if (gftp_parse_cache_line (request, &centry, buf) < 0)
         continue;
 
+      /* See if this entry is still valid... */
+      if (centry.expiration_date < now)
+        continue;
+
       if (strcmp (description, centry.url) == 0)
 	{
 	  if (close (indexfd) != 0)
@@ -267,7 +297,10 @@
   gftp_getline_buffer * rbuf;
   gftp_cache_entry centry;
   int indexfd, newfd;
+  time_t now;
   int remove;
+ 
+  time (&now);
 
   if (request != NULL)
     {
@@ -304,7 +337,9 @@
         continue;
 
       remove = 0;
-      if (ignore_directory)
+      if (centry.expiration_date < now)
+        remove = 1;
+      else if (ignore_directory)
         {
           if (strncmp (centry.url, description, strlen (description)) == 0)
             remove = 1;
--- a/lib/options.h	Fri Jul 11 20:35:58 2003 +0000
+++ b/lib/options.h	Sun Jul 13 12:38:35 2003 +0000
@@ -49,6 +49,10 @@
    gftp_option_type_text, "", NULL, 0,
    N_("This is a comma separated list of charsets to try to convert the remote messages to the current locale"), 
    GFTP_PORT_ALL, NULL},
+  {"cache_ttl", N_("Cache TTL:"), 
+   gftp_option_type_int, GINT_TO_POINTER(3600), NULL, 0,
+   N_("The number of seconds to keep cache entries before they expire."), 
+   GFTP_PORT_ALL, NULL},
 
   {"append_transfers", N_("Append file transfers"), 
   gftp_option_type_checkbox, GINT_TO_POINTER(1), NULL, 0,
--- a/lib/protocols.c	Fri Jul 11 20:35:58 2003 +0000
+++ b/lib/protocols.c	Sun Jul 13 12:38:35 2003 +0000
@@ -2303,6 +2303,7 @@
   gftp_file * tempfle;
   struct timeval tv;
   float maxkbs;
+  int waited;
 
   gftp_lookup_request_option (tdata->fromreq, "maxkbs", &maxkbs);
 
@@ -2323,6 +2324,7 @@
   else
     tdata->kbs = tdata->trans_bytes / 1024.0 / start_difftime;
 
+  waited = 0;
   if (maxkbs > 0 && tdata->kbs > maxkbs)
     {
       waitusecs = num_read / 1024.0 / maxkbs * 1000000.0 - start_difftime;
@@ -2332,14 +2334,19 @@
           if (g_thread_supported ())
             g_static_mutex_unlock (&tdata->statmutex);
 
+          waited = 1;
           usleep (waitusecs);
 
           if (g_thread_supported ())
             g_static_mutex_lock (&tdata->statmutex);
         }
+
     }
 
-  gettimeofday (&tdata->lasttime, NULL);
+  if (waited)
+    gettimeofday (&tdata->lasttime, NULL);
+  else
+    memcpy (&tdata->lasttime, &tv, sizeof (tdata->lasttime));
 
   if (g_thread_supported ())
     g_static_mutex_unlock (&tdata->statmutex);