\helpref{wxProtocol}{wxprotocol}
+\wxheading{Include files}
+
+<wx/protocol/ftp.h>
+
\wxheading{See also}
\helpref{wxSocketBase}{wxsocketbase}
% Members
% ----------------------------------------------------------------------------
-\latexignore{\rtfignore{\membersection{Members}}}
+\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxFTP::SendCommand}
-\func{bool}{SendCommand}{\param{const wxString\&}{command}, \param{char }{ret}}
+\func{bool}{SendCommand}{\param{const wxString\&}{ command}, \param{char }{ret}}
-Send the specified \it{command} to the FTP server. \it{ret} specifies
+Send the specified {\it command} to the FTP server. {\it ret} specifies
the expected result.
\wxheading{Return value}
\membersection{wxFTP::ChDir}
-\func{bool}{ChDir}{\param{const wxString\&}{dir}}
+\func{bool}{ChDir}{\param{const wxString\&}{ dir}}
Change the current FTP working directory.
-Returns TRUE, if successful.
+Returns TRUE if successful.
\membersection{wxFTP::MkDir}
-\func{bool}{MkDir}{\param{const wxString\&}{dir}}
+\func{bool}{MkDir}{\param{const wxString\&}{ dir}}
Create the specified directory in the current FTP working directory.
-Returns TRUE, if successful.
+Returns TRUE if successful.
\membersection{wxFTP::RmDir}
-\func{bool}{RmDir}{\param{const wxString\&}{dir}}
+\func{bool}{RmDir}{\param{const wxString\&}{ dir}}
Remove the specified directory from the current FTP working directory.
-Returns TRUE, if successful.
+Returns TRUE if successful.
\membersection{wxFTP::Pwd}
\membersection{wxFTP::Rename}
-\func{bool}{Rename}{\param{const wxString\&}{src}, \param{const wxString\&}{dst}}
+\func{bool}{Rename}{\param{const wxString\&}{ src}, \param{const wxString\&}{ dst}}
-Rename the specified \it{src} element into \it{dst}
-Returns TRUE, if successful.
+Rename the specified {\it src} element to {\it dst}. Returns TRUE if successful.
% ----------------------------------------------------------------------------
\membersection{wxFTP::RmFile}
-\func{bool}{RmFile}{\param{const wxString\&}{path}}
+\func{bool}{RmFile}{\param{const wxString\&}{ path}}
+
+Delete the file specified by {\it path}. Returns TRUE if successful.
+
+% ----------------------------------------------------------------------------
+
+\membersection{wxFTP::SetUser}
+
+\func{void}{SetUser}{\param{const wxString\&}{ user}}
+
+Sets the user name to be sent to the FTP server to be allowed to log in.
+
+\wxheading{Default value}
+
+The default value of the user name is "anonymous".
+
+\wxheading{Remark}
+
+This parameter can be included in a URL if you want to use the URL manager.
+For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory/a\_file"
+to specify a user and a password.
+
+\membersection{wxFTP::SetPassword}
+
+\func{void}{SetPassword}{\param{const wxString\&}{ passwd}}
+
+Sets the password to be sent to the FTP server to be allowed to log in.
+
+\wxheading{Default value}
+
+The default value of the user name is your email address. For example, it could
+be "username@userhost.domain". This password is built by getting the current
+user name and the host name of the local machine from the system.
+
+\wxheading{Remark}
+
+This parameter can be included in a URL if you want to use the URL manager.
+For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory/a\_file"
+to specify a user and a password.
+
+% ----------------------------------------------------------------------------
+\membersection{wxFTP::GetList}
+
+\func{wxList *}{GetList}{\param{const wxString\&}{ wildcard}}
+
+The GetList function is quite low-level. It returns the list of the files in
+the current directory. The list can be filtered using the {\it wildcard} string.
+If {\it wildcard} is a NULL string, it will return all files in directory.
+
+The form of the list can change from one peer system to another. For example,
+for a UNIX peer system, it will look like this:
+
+\begin{verbatim}
+-r--r--r-- 1 guilhem lavaux 12738 Jan 16 20:17 cmndata.cpp
+-r--r--r-- 1 guilhem lavaux 10866 Jan 24 16:41 config.cpp
+-rw-rw-rw- 1 guilhem lavaux 29967 Dec 21 19:17 cwlex_yy.c
+-rw-rw-rw- 1 guilhem lavaux 14342 Jan 22 19:51 cwy_tab.c
+-r--r--r-- 1 guilhem lavaux 13890 Jan 29 19:18 date.cpp
+-r--r--r-- 1 guilhem lavaux 3989 Feb 8 19:18 datstrm.cpp
+\end{verbatim}
-Delete the file specified by \it{path}.
-Returns TRUE, if successful.
+But on Windows system, it will look like this:
+
+\begin{verbatim}
+winamp~1 exe 520196 02-25-1999 19:28 winamp204.exe
+ 1 file(s) 520 196 bytes
+\end{verbatim}
+
+The list is a string list and one node corresponds to a line sent by the peer.
% ----------------------------------------------------------------------------
\membersection{wxFTP::GetOutputStream}
-\func{wxOutputStream *}{GetOutputStream}{\param{const wxString\&}{file}}
+\func{wxOutputStream *}{GetOutputStream}{\param{const wxString\&}{ file}}
-Initializes an output stream to the specified \it{file}. The returned
-stream has all but seek functionality of wxStreams. When the user finishes
+Initializes an output stream to the specified {\it file}. The returned
+stream has all but the seek functionality of wxStreams. When the user finishes
writing data, he has to delete the stream to close it.
\wxheading{Return value}
An initialized write-only stream.
+
+\wxheading{See also}
+
+\helpref{wxOutputStream}{wxoutputstream}
+
+% ----------------------------------------------------------------------------
+
+\membersection{wxFTP::GetInputStream}\label{wxftpgetinput}
+
+\func{wxInputStream *}{GetInputStream}{\param{const wxString\&}{ path}}
+
+Creates a new input stream on the the specified path. You can use all but seek
+functionnality of wxStream. Seek isn't available on all stream. For example,
+http or ftp streams doesn't deal with it. Other functions like Tell
+aren't available for the moment for this sort of stream.
+You will be notified when the EOF is reached by an error.
+
+\wxheading{Return value}
+
+Returns NULL if an error occured (it could be a network failure or the fact
+that the file doesn't exist).
+
+Returns the initialized stream. You will have to delete it yourself once you
+don't use it anymore. The destructor close the DATA stream connection but
+will leave the COMMAND stream connection opened. It means that you still
+can send new commands without reconnecting.
+
+\wxheading{Example of a standalone connection (without wxURL)}
+
+\begin{verbatim}
+ wxFTP ftp;
+ wxInputStream *in_stream;
+ char *data;
+
+ ftp.Connect("a.host.domain");
+ ftp.ChDir("a_directory");
+ in_stream = ftp.GetInputStream("a_file_to_get");
+
+ data = new char[in_stream->StreamSize()];
+
+ in_stream->Read(data, in_stream->StreamSize());
+ if (in_stream->LastError() != wxStream_NOERROR) {
+ // Do something.
+ }
+
+ delete in_stream; /* Close the DATA connection */
+
+ ftp.Close(); /* Close the COMMAND connection */
+\end{verbatim}
+
+\wxheading{See also}
+
+\helpref{wxInputStream}{wxinputstream}
+