/////////////////////////////////////////////////////////////////////////////
-// Name: common/ftp.cpp
+// Name: src/common/ftp.cpp
// Purpose: FTP protocol
// Author: Guilhem Lavaux
// Modified by: Mark Johnson, wxWindows@mj10777.de
#include "wx/protocol/protocol.h"
#include "wx/protocol/ftp.h"
-#ifndef __MWERKS__
- #include <memory.h>
-#endif
+#include <memory.h>
// ----------------------------------------------------------------------------
// constants
return true;
}
-bool wxFTP::Connect(const wxString& host)
+bool wxFTP::Connect(const wxString& host, unsigned short port)
{
wxIPV4address addr;
addr.Hostname(host);
- addr.Service(wxT("ftp"));
+
+ if ( port )
+ addr.Service(port);
+ else if (!addr.Service(wxT("ftp")))
+ addr.Service(21);
return Connect(addr);
}
{
m_lastError = wxPROTO_CONNERR;
wxLogError(_("Timeout while waiting for FTP server to connect, try passive mode."));
- delete sock;
- sock = NULL;
+ wxDELETE(sock);
}
else
{
addrNew.Service(0); // pick an open port number.
wxSocketServer *sockSrv = new wxSocketServer(addrNew);
- if (!sockSrv->Ok())
+ if (!sockSrv->IsOk())
{
- // We use Ok() here to see if everything is ok
+ // We use IsOk() here to see if everything is ok
m_lastError = wxPROTO_PROTERR;
delete sockSrv;
return NULL;
// when checking the result, the stream will
// almost always show an error, even if the file was
- // properly transfered, thus, lets just grab the result
+ // properly transferred, thus, let's just grab the result
// we are looking for "226 transfer completed"
char code = m_ftp->GetResult();
int filesize = -1;
- // Check for existance of file via wxFTP::FileExists(...)
+ // Check for existence of file via wxFTP::FileExists(...)
if ( FileExists(fileName) )
{
wxString command;
}
// Set transfermode back to the original. Only the "SIZE"-command
- // is dependant on transfermode
+ // is dependent on transfermode
if ( oldTransfermode != NONE )
{
SetTransferMode(oldTransfermode);
// substring containing the name we are looking for. We
// stop the iteration at the first occurrence of the
// filename. The search is not case-sensitive.
- bool foundIt = false;
-
+ const size_t numFiles = fileList.size();
size_t i;
- for ( i = 0; !foundIt && i < fileList.GetCount(); i++ )
+ for ( i = 0; i < fileList.GetCount(); i++ )
{
- foundIt = fileList[i].Upper().Contains(fileName.Upper());
+ if ( fileList[i].Upper().Contains(fileName.Upper()) )
+ break;
}
- if ( foundIt )
+ if ( i != numFiles )
{
// The index i points to the first occurrence of
// fileName in the array Now we have to find out what