/////////////////////////////////////////////////////////////////////////////
-// Name: protocol.cpp
+// Name: src/common/protocol.cpp
// Purpose: Implement protocol base class
// Author: Guilhem Lavaux
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "protocol.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
- #pragma hdrstop
+ #pragma hdrstop
#endif
#if wxUSE_PROTOCOL
#include "wx/protocol/protocol.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/module.h"
+#endif
+
#include "wx/url.h"
-#include "wx/module.h"
#include <stdlib.h>
{
m_cinfo = info;
m_needhost = need_host1;
+#if wxUSE_URL
next = wxURL::ms_protocols;
wxURL::ms_protocols = this;
+#else
+ next = NULL;
+#endif
}
/////////////////////////////////////////////////////////////////
if (!GetPeer(addr))
{
Close();
- return FALSE;
+ return false;
}
if (!Close())
- return FALSE;
-
+ return false;
+
if (!Connect(addr))
- return FALSE;
+ return false;
- return TRUE;
+ return true;
}
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
/* static */
-wxProtocolError wxProtocol::ReadLine(wxSocketBase *socket, wxString& result)
+wxProtocolError wxProtocol::ReadLine(wxSocketBase *sock, wxString& result)
{
static const int LINE_BUF = 4095;
result.clear();
wxCharBuffer buf(LINE_BUF);
+ char *pBuf = buf.data();
while ( sock->WaitForRead() )
{
// peek at the socket to see if there is a CRLF
- sock->Peek(buf.data(), LINE_BUF);
+ sock->Peek(pBuf, LINE_BUF);
size_t nRead = sock->LastCount();
if ( !nRead && sock->Error() )
// look for "\r\n" paying attention to a special case: "\r\n" could
// have been split by buffer boundary, so check also for \r at the end
// of the last chunk and \n at the beginning of this one
- buf.data()[nRead] = '\0';
- const char *eol = strchr(buf, '\n');
+ pBuf[nRead] = '\0';
+ const char *eol = strchr(pBuf, '\n');
// if we found '\n', is there a '\r' as well?
if ( eol )
{
- if ( eol == buf.data() )
+ if ( eol == pBuf )
{
// check for case of "\r\n" being split
if ( result.empty() || result.Last() != _T('\r') )
else // '\n' in the middle of the buffer
{
// in any case, read everything up to and including '\n'
- nRead = eol - buf + 1;
+ nRead = eol - pBuf + 1;
if ( eol[-1] != '\r' )
{
}
}
- sock->Read(buf.data(), nRead);
+ sock->Read(pBuf, nRead);
if ( sock->LastCount() != nRead )
return wxPROTO_NETERR;
- buf.data()[nRead] = '\0';
- result += wxString::FromAscii(buf);
+ pBuf[nRead] = '\0';
+ result += wxString::FromAscii(pBuf);
if ( eol )
{
// Not implemented on all systems
// ret = (char *)memccpy(tmp_str, tmp_buf, '\n', avail);
- found = FALSE;
+ found = false;
for (ret=tmp_str;ret < (tmp_str+avail); ret++)
- if (*ret == '\n')
+ if (*ret == '\n')
{
- found = TRUE;
+ found = true;
break;
}
if (!found)
return wxPROTO_PROTERR;
-
+
*ret = 0;
result = wxString::FromAscii( tmp_str );
- result = result.Left(result.Length()-1);
+ result = result.Left(result.length()-1);
size = ret-tmp_str+1;
sock->Unread(&tmp_buf[size], avail-size);
-
+
return wxPROTO_NOERR;
#undef PROTO_BSIZE
}
#endif // wxUSE_SOCKETS
#endif // wxUSE_PROTOCOL
-