X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/89ba044b378ff9341fc32992cb00021190b2072b..d31d30d791201146a5e224d3bf0f0cd909300bba:/src/common/ftp.cpp diff --git a/src/common/ftp.cpp b/src/common/ftp.cpp index c9934c1bb3..909fe66861 100644 --- a/src/common/ftp.cpp +++ b/src/common/ftp.cpp @@ -38,6 +38,7 @@ #include "wx/utils.h" #include "wx/log.h" #include "wx/intl.h" + #include "wx/wxcrtvararg.h" #endif // WX_PRECOMP #include "wx/sckaddr.h" @@ -47,10 +48,6 @@ #include "wx/protocol/protocol.h" #include "wx/protocol/ftp.h" -#if defined(__WXMAC__) - #include "wx/mac/macsock.h" -#endif - #ifndef __MWERKS__ #include #endif @@ -110,7 +107,7 @@ wxFTP::~wxFTP() // wxFTP connect and login methods // ---------------------------------------------------------------------------- -bool wxFTP::Connect(wxSockAddress& addr, bool WXUNUSED(wait)) +bool wxFTP::Connect(const wxSockAddress& addr, bool WXUNUSED(wait)) { if ( !wxProtocol::Connect(addr) ) { @@ -313,7 +310,7 @@ char wxFTP::GetResult() } else // subsequent line of multiline reply { - if ( wxStrncmp(line, code, LEN_CODE) == 0 ) + if ( line.compare(0, LEN_CODE, code) == 0 ) { if ( chMarker == _T(' ') ) { @@ -377,7 +374,7 @@ bool wxFTP::SetTransferMode(TransferMode transferMode) if ( !DoSimpleCommand(_T("TYPE"), mode) ) { - wxLogError(_("Failed to set FTP transfer mode to %s."), (const wxChar*) + wxLogError(_("Failed to set FTP transfer mode to %s."), (transferMode == ASCII ? _("ASCII") : _("binary"))); return false; @@ -434,19 +431,20 @@ wxString wxFTP::Pwd() if ( CheckCommand(wxT("PWD"), '2') ) { // the result is at least that long if CheckCommand() succeeded - const wxChar *p = m_lastResult.c_str() + LEN_CODE + 1; + wxString::const_iterator p = m_lastResult.begin() + LEN_CODE + 1; if ( *p != _T('"') ) { - wxLogDebug(_T("Missing starting quote in reply for PWD: %s"), p); + wxLogDebug(_T("Missing starting quote in reply for PWD: %s"), + wxString(p, m_lastResult.end())); } else { - for ( p++; *p; p++ ) + for ( ++p; (bool)*p; ++p ) // FIXME-DMARS { if ( *p == _T('"') ) { // check if the quote is doubled - p++; + ++p; if ( !*p || *p != _T('"') ) { // no, this is the end @@ -685,7 +683,7 @@ wxSocketBase *wxFTP::GetActivePort() // addresses because the addrNew has an IP of "0.0.0.0", so we need the // value in addrLocal wxString port = GetPortCmdArgument(addrLocal, addrNew); - if ( !DoSimpleCommand(_T("PORT "), port) ) + if ( !DoSimpleCommand(_T("PORT"), port) ) { m_lastError = wxPROTO_PROTERR; delete sockSrv; @@ -705,18 +703,20 @@ wxSocketBase *wxFTP::GetPassivePort() return NULL; } - const wxChar *addrStart = wxStrchr(m_lastResult, _T('(')); - const wxChar *addrEnd = addrStart ? wxStrchr(addrStart, _T(')')) : NULL; - if ( !addrEnd ) + size_t addrStart = m_lastResult.find(_T('(')); + size_t addrEnd = (addrStart == wxString::npos) + ? wxString::npos + : m_lastResult.find(_T(')'), addrStart); + + if ( addrEnd == wxString::npos ) { m_lastError = wxPROTO_PROTERR; - return NULL; } // get the port number and address int a[6]; - wxString straddr(addrStart + 1, addrEnd); + wxString straddr(m_lastResult, addrStart + 1, addrEnd - (addrStart + 1)); wxSscanf(straddr, wxT("%d,%d,%d,%d,%d,%d"), &a[2],&a[3],&a[4],&a[5],&a[0],&a[1]); @@ -950,7 +950,7 @@ int wxFTP::GetFileSize(const wxString& fileName) bool foundIt = false; size_t i; - for ( i = 0; !foundIt && i < fileList.Count(); i++ ) + for ( i = 0; !foundIt && i < fileList.GetCount(); i++ ) { foundIt = fileList[i].Upper().Contains(fileName.Upper()); }