do not assert in wxFTP construction because of its 'staticness'; allocate it on the heap

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-01-09 16:50:43 +00:00
parent 00e3ea1c6f
commit d6accb8cd9

View File

@@ -2407,6 +2407,8 @@ static void TestSocketClient()
#define FTP_ANONYMOUS #define FTP_ANONYMOUS
static wxFTP *ftp;
#ifdef FTP_ANONYMOUS #ifdef FTP_ANONYMOUS
static const wxChar *directory = _T("/pub"); static const wxChar *directory = _T("/pub");
static const wxChar *filename = _T("welcome.msg"); static const wxChar *filename = _T("welcome.msg");
@@ -2419,8 +2421,12 @@ static bool TestFtpConnect()
{ {
wxPuts(_T("*** Testing FTP connect ***")); wxPuts(_T("*** Testing FTP connect ***"));
// wxFTP cannot be a static variable as its ctor needs to access
// wxWidgets internals after it has been initialized
ftp = new wxFTP;
#ifdef FTP_ANONYMOUS #ifdef FTP_ANONYMOUS
static const wxChar *hostname = _T("ftp.wxwidgets.org"); static const wxChar *hostname = _T("ftp->wxwidgets.org");
wxPrintf(_T("--- Attempting to connect to %s:21 anonymously...\n"), hostname); wxPrintf(_T("--- Attempting to connect to %s:21 anonymously...\n"), hostname);
#else // !FTP_ANONYMOUS #else // !FTP_ANONYMOUS
@@ -2429,18 +2435,18 @@ static bool TestFtpConnect()
wxChar user[256]; wxChar user[256];
wxFgets(user, WXSIZEOF(user), stdin); wxFgets(user, WXSIZEOF(user), stdin);
user[wxStrlen(user) - 1] = '\0'; // chop off '\n' user[wxStrlen(user) - 1] = '\0'; // chop off '\n'
ftp.SetUser(user); ftp->SetUser(user);
wxChar password[256]; wxChar password[256];
wxPrintf(_T("Password for %s: "), password); wxPrintf(_T("Password for %s: "), password);
wxFgets(password, WXSIZEOF(password), stdin); wxFgets(password, WXSIZEOF(password), stdin);
password[wxStrlen(password) - 1] = '\0'; // chop off '\n' password[wxStrlen(password) - 1] = '\0'; // chop off '\n'
ftp.SetPassword(password); ftp->SetPassword(password);
wxPrintf(_T("--- Attempting to connect to %s:21 as %s...\n"), hostname, user); wxPrintf(_T("--- Attempting to connect to %s:21 as %s...\n"), hostname, user);
#endif // FTP_ANONYMOUS/!FTP_ANONYMOUS #endif // FTP_ANONYMOUS/!FTP_ANONYMOUS
if ( !ftp.Connect(hostname) ) if ( !ftp->Connect(hostname) )
{ {
wxPrintf(_T("ERROR: failed to connect to %s\n"), hostname); wxPrintf(_T("ERROR: failed to connect to %s\n"), hostname);
@@ -2449,8 +2455,8 @@ static bool TestFtpConnect()
else else
{ {
wxPrintf(_T("--- Connected to %s, current directory is '%s'\n"), wxPrintf(_T("--- Connected to %s, current directory is '%s'\n"),
hostname, ftp.Pwd().c_str()); hostname, ftp->Pwd().c_str());
ftp.Close(); ftp->Close();
} }
return true; return true;
@@ -2499,22 +2505,22 @@ static void TestFtpList()
wxPuts(_T("*** Testing wxFTP file listing ***\n")); wxPuts(_T("*** Testing wxFTP file listing ***\n"));
// test CWD // test CWD
if ( !ftp.ChDir(directory) ) if ( !ftp->ChDir(directory) )
{ {
wxPrintf(_T("ERROR: failed to cd to %s\n"), directory); wxPrintf(_T("ERROR: failed to cd to %s\n"), directory);
} }
wxPrintf(_T("Current directory is '%s'\n"), ftp.Pwd().c_str()); wxPrintf(_T("Current directory is '%s'\n"), ftp->Pwd().c_str());
// test NLIST and LIST // test NLIST and LIST
wxArrayString files; wxArrayString files;
if ( !ftp.GetFilesList(files) ) if ( !ftp->GetFilesList(files) )
{ {
wxPuts(_T("ERROR: failed to get NLIST of files")); wxPuts(_T("ERROR: failed to get NLIST of files"));
} }
else else
{ {
wxPrintf(_T("Brief list of files under '%s':\n"), ftp.Pwd().c_str()); wxPrintf(_T("Brief list of files under '%s':\n"), ftp->Pwd().c_str());
size_t count = files.GetCount(); size_t count = files.GetCount();
for ( size_t n = 0; n < count; n++ ) for ( size_t n = 0; n < count; n++ )
{ {
@@ -2523,13 +2529,13 @@ static void TestFtpList()
wxPuts(_T("End of the file list")); wxPuts(_T("End of the file list"));
} }
if ( !ftp.GetDirList(files) ) if ( !ftp->GetDirList(files) )
{ {
wxPuts(_T("ERROR: failed to get LIST of files")); wxPuts(_T("ERROR: failed to get LIST of files"));
} }
else else
{ {
wxPrintf(_T("Detailed list of files under '%s':\n"), ftp.Pwd().c_str()); wxPrintf(_T("Detailed list of files under '%s':\n"), ftp->Pwd().c_str());
size_t count = files.GetCount(); size_t count = files.GetCount();
for ( size_t n = 0; n < count; n++ ) for ( size_t n = 0; n < count; n++ )
{ {
@@ -2538,12 +2544,12 @@ static void TestFtpList()
wxPuts(_T("End of the file list")); wxPuts(_T("End of the file list"));
} }
if ( !ftp.ChDir(_T("..")) ) if ( !ftp->ChDir(_T("..")) )
{ {
wxPuts(_T("ERROR: failed to cd to ..")); wxPuts(_T("ERROR: failed to cd to .."));
} }
wxPrintf(_T("Current directory is '%s'\n"), ftp.Pwd().c_str()); wxPrintf(_T("Current directory is '%s'\n"), ftp->Pwd().c_str());
} }
static void TestFtpDownload() static void TestFtpDownload()
@@ -2551,7 +2557,7 @@ static void TestFtpDownload()
wxPuts(_T("*** Testing wxFTP download ***\n")); wxPuts(_T("*** Testing wxFTP download ***\n"));
// test RETR // test RETR
wxInputStream *in = ftp.GetInputStream(filename); wxInputStream *in = ftp->GetInputStream(filename);
if ( !in ) if ( !in )
{ {
wxPrintf(_T("ERROR: couldn't get input stream for %s\n"), filename); wxPrintf(_T("ERROR: couldn't get input stream for %s\n"), filename);
@@ -2581,16 +2587,16 @@ static void TestFtpFileSize()
{ {
wxPuts(_T("*** Testing FTP SIZE command ***")); wxPuts(_T("*** Testing FTP SIZE command ***"));
if ( !ftp.ChDir(directory) ) if ( !ftp->ChDir(directory) )
{ {
wxPrintf(_T("ERROR: failed to cd to %s\n"), directory); wxPrintf(_T("ERROR: failed to cd to %s\n"), directory);
} }
wxPrintf(_T("Current directory is '%s'\n"), ftp.Pwd().c_str()); wxPrintf(_T("Current directory is '%s'\n"), ftp->Pwd().c_str());
if ( ftp.FileExists(filename) ) if ( ftp->FileExists(filename) )
{ {
int size = ftp.GetFileSize(filename); int size = ftp->GetFileSize(filename);
if ( size == -1 ) if ( size == -1 )
wxPrintf(_T("ERROR: couldn't get size of '%s'\n"), filename); wxPrintf(_T("ERROR: couldn't get size of '%s'\n"), filename);
else else
@@ -2606,23 +2612,23 @@ static void TestFtpMisc()
{ {
wxPuts(_T("*** Testing miscellaneous wxFTP functions ***")); wxPuts(_T("*** Testing miscellaneous wxFTP functions ***"));
if ( ftp.SendCommand(_T("STAT")) != '2' ) if ( ftp->SendCommand(_T("STAT")) != '2' )
{ {
wxPuts(_T("ERROR: STAT failed")); wxPuts(_T("ERROR: STAT failed"));
} }
else else
{ {
wxPrintf(_T("STAT returned:\n\n%s\n"), ftp.GetLastResult().c_str()); wxPrintf(_T("STAT returned:\n\n%s\n"), ftp->GetLastResult().c_str());
} }
if ( ftp.SendCommand(_T("HELP SITE")) != '2' ) if ( ftp->SendCommand(_T("HELP SITE")) != '2' )
{ {
wxPuts(_T("ERROR: HELP SITE failed")); wxPuts(_T("ERROR: HELP SITE failed"));
} }
else else
{ {
wxPrintf(_T("The list of site-specific commands:\n\n%s\n"), wxPrintf(_T("The list of site-specific commands:\n\n%s\n"),
ftp.GetLastResult().c_str()); ftp->GetLastResult().c_str());
} }
} }
@@ -2651,14 +2657,14 @@ static void TestFtpInteractive()
wildcard = buf + 5; wildcard = buf + 5;
wxArrayString files; wxArrayString files;
if ( !ftp.GetList(files, wildcard, start == _T("LIST")) ) if ( !ftp->GetList(files, wildcard, start == _T("LIST")) )
{ {
wxPrintf(_T("ERROR: failed to get %s of files\n"), start.c_str()); wxPrintf(_T("ERROR: failed to get %s of files\n"), start.c_str());
} }
else else
{ {
wxPrintf(_T("--- %s of '%s' under '%s':\n"), wxPrintf(_T("--- %s of '%s' under '%s':\n"),
start.c_str(), wildcard.c_str(), ftp.Pwd().c_str()); start.c_str(), wildcard.c_str(), ftp->Pwd().c_str());
size_t count = files.GetCount(); size_t count = files.GetCount();
for ( size_t n = 0; n < count; n++ ) for ( size_t n = 0; n < count; n++ )
{ {
@@ -2669,14 +2675,14 @@ static void TestFtpInteractive()
} }
else // !list else // !list
{ {
wxChar ch = ftp.SendCommand(buf); wxChar ch = ftp->SendCommand(buf);
wxPrintf(_T("Command %s"), ch ? _T("succeeded") : _T("failed")); wxPrintf(_T("Command %s"), ch ? _T("succeeded") : _T("failed"));
if ( ch ) if ( ch )
{ {
wxPrintf(_T(" (return code %c)"), ch); wxPrintf(_T(" (return code %c)"), ch);
} }
wxPrintf(_T(", server reply:\n%s\n\n"), ftp.GetLastResult().c_str()); wxPrintf(_T(", server reply:\n%s\n\n"), ftp->GetLastResult().c_str());
} }
} }
@@ -2690,7 +2696,7 @@ static void TestFtpUpload()
// upload a file // upload a file
static const wxChar *file1 = _T("test1"); static const wxChar *file1 = _T("test1");
static const wxChar *file2 = _T("test2"); static const wxChar *file2 = _T("test2");
wxOutputStream *out = ftp.GetOutputStream(file1); wxOutputStream *out = ftp->GetOutputStream(file1);
if ( out ) if ( out )
{ {
wxPrintf(_T("--- Uploading to %s ---\n"), file1); wxPrintf(_T("--- Uploading to %s ---\n"), file1);
@@ -2699,17 +2705,17 @@ static void TestFtpUpload()
} }
// send a command to check the remote file // send a command to check the remote file
if ( ftp.SendCommand(wxString(_T("STAT ")) + file1) != '2' ) if ( ftp->SendCommand(wxString(_T("STAT ")) + file1) != '2' )
{ {
wxPrintf(_T("ERROR: STAT %s failed\n"), file1); wxPrintf(_T("ERROR: STAT %s failed\n"), file1);
} }
else else
{ {
wxPrintf(_T("STAT %s returned:\n\n%s\n"), wxPrintf(_T("STAT %s returned:\n\n%s\n"),
file1, ftp.GetLastResult().c_str()); file1, ftp->GetLastResult().c_str());
} }
out = ftp.GetOutputStream(file2); out = ftp->GetOutputStream(file2);
if ( out ) if ( out )
{ {
wxPrintf(_T("--- Uploading to %s ---\n"), file1); wxPrintf(_T("--- Uploading to %s ---\n"), file1);