Make QFtp compile as a standalone static lib

Change-Id: I0470846ce8574cca8d1992dac41f00545664169a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Shane Kearns 2012-01-11 16:10:49 +00:00
parent c9d938b1de
commit 16c0287d52
4 changed files with 67 additions and 64 deletions

View File

@ -1251,13 +1251,13 @@ void QFtpPI::dtpConnectState(int s)
* *
*********************************************************************/ *********************************************************************/
class QFtpPrivate : public QObjectPrivate class QFtpPrivate
{ {
Q_DECLARE_PUBLIC(QFtp) Q_DECLARE_PUBLIC(QFtp)
public: public:
inline QFtpPrivate() : close_waitForStateChange(false), state(QFtp::Unconnected), inline QFtpPrivate(QFtp *owner) : close_waitForStateChange(false), state(QFtp::Unconnected),
transferMode(QFtp::Passive), error(QFtp::NoError) transferMode(QFtp::Passive), error(QFtp::NoError), q_ptr(owner)
{ } { }
~QFtpPrivate() { while (!pending.isEmpty()) delete pending.takeFirst(); } ~QFtpPrivate() { while (!pending.isEmpty()) delete pending.takeFirst(); }
@ -1283,6 +1283,7 @@ public:
quint16 port; quint16 port;
QString proxyHost; QString proxyHost;
quint16 proxyPort; quint16 proxyPort;
QFtp *q_ptr;
}; };
int QFtpPrivate::addCommand(QFtpCommand *cmd) int QFtpPrivate::addCommand(QFtpCommand *cmd)
@ -1408,9 +1409,8 @@ int QFtpPrivate::addCommand(QFtpCommand *cmd)
Constructs a QFtp object with the given \a parent. Constructs a QFtp object with the given \a parent.
*/ */
QFtp::QFtp(QObject *parent) QFtp::QFtp(QObject *parent)
: QObject(*new QFtpPrivate, parent) : QObject(parent), d(new QFtpPrivate(this))
{ {
Q_D(QFtp);
d->errorString = tr("Unknown error"); d->errorString = tr("Unknown error");
connect(&d->pi, SIGNAL(connectState(int)), connect(&d->pi, SIGNAL(connectState(int)),
@ -1438,7 +1438,6 @@ QFtp::QFtp(QObject *parent)
QFtp::QFtp(QObject *parent, const char *name) QFtp::QFtp(QObject *parent, const char *name)
: QObject(*new QFtpPrivate, parent) : QObject(*new QFtpPrivate, parent)
{ {
Q_D(QFtp);
setObjectName(QLatin1String(name)); setObjectName(QLatin1String(name));
d->errorString = tr("Unknown error"); d->errorString = tr("Unknown error");
@ -1675,8 +1674,8 @@ int QFtp::connectToHost(const QString &host, quint16 port)
QStringList cmds; QStringList cmds;
cmds << host; cmds << host;
cmds << QString::number((uint)port); cmds << QString::number((uint)port);
int id = d_func()->addCommand(new QFtpCommand(ConnectToHost, cmds)); int id = d->addCommand(new QFtpCommand(ConnectToHost, cmds));
d_func()->pi.transferConnectionExtended = true; d->pi.transferConnectionExtended = true;
return id; return id;
} }
@ -1703,7 +1702,7 @@ int QFtp::login(const QString &user, const QString &password)
QStringList cmds; QStringList cmds;
cmds << (QLatin1String("USER ") + (user.isNull() ? QLatin1String("anonymous") : user) + QLatin1String("\r\n")); cmds << (QLatin1String("USER ") + (user.isNull() ? QLatin1String("anonymous") : user) + QLatin1String("\r\n"));
cmds << (QLatin1String("PASS ") + (password.isNull() ? QLatin1String("anonymous@") : password) + QLatin1String("\r\n")); cmds << (QLatin1String("PASS ") + (password.isNull() ? QLatin1String("anonymous@") : password) + QLatin1String("\r\n"));
return d_func()->addCommand(new QFtpCommand(Login, cmds)); return d->addCommand(new QFtpCommand(Login, cmds));
} }
/*! /*!
@ -1726,7 +1725,7 @@ int QFtp::login(const QString &user, const QString &password)
*/ */
int QFtp::close() int QFtp::close()
{ {
return d_func()->addCommand(new QFtpCommand(Close, QStringList(QLatin1String("QUIT\r\n")))); return d->addCommand(new QFtpCommand(Close, QStringList(QLatin1String("QUIT\r\n"))));
} }
/*! /*!
@ -1736,9 +1735,9 @@ int QFtp::close()
*/ */
int QFtp::setTransferMode(TransferMode mode) int QFtp::setTransferMode(TransferMode mode)
{ {
int id = d_func()->addCommand(new QFtpCommand(SetTransferMode, QStringList())); int id = d->addCommand(new QFtpCommand(SetTransferMode, QStringList()));
d_func()->pi.transferConnectionExtended = true; d->pi.transferConnectionExtended = true;
d_func()->transferMode = mode; d->transferMode = mode;
return id; return id;
} }
@ -1753,7 +1752,7 @@ int QFtp::setProxy(const QString &host, quint16 port)
{ {
QStringList args; QStringList args;
args << host << QString::number(port); args << host << QString::number(port);
return d_func()->addCommand(new QFtpCommand(SetProxy, args)); return d->addCommand(new QFtpCommand(SetProxy, args));
} }
/*! /*!
@ -1777,12 +1776,12 @@ int QFtp::list(const QString &dir)
{ {
QStringList cmds; QStringList cmds;
cmds << QLatin1String("TYPE A\r\n"); cmds << QLatin1String("TYPE A\r\n");
cmds << QLatin1String(d_func()->transferMode == Passive ? "PASV\r\n" : "PORT\r\n"); cmds << QLatin1String(d->transferMode == Passive ? "PASV\r\n" : "PORT\r\n");
if (dir.isEmpty()) if (dir.isEmpty())
cmds << QLatin1String("LIST\r\n"); cmds << QLatin1String("LIST\r\n");
else else
cmds << (QLatin1String("LIST ") + dir + QLatin1String("\r\n")); cmds << (QLatin1String("LIST ") + dir + QLatin1String("\r\n"));
return d_func()->addCommand(new QFtpCommand(List, cmds)); return d->addCommand(new QFtpCommand(List, cmds));
} }
/*! /*!
@ -1801,7 +1800,7 @@ int QFtp::list(const QString &dir)
*/ */
int QFtp::cd(const QString &dir) int QFtp::cd(const QString &dir)
{ {
return d_func()->addCommand(new QFtpCommand(Cd, QStringList(QLatin1String("CWD ") + dir + QLatin1String("\r\n")))); return d->addCommand(new QFtpCommand(Cd, QStringList(QLatin1String("CWD ") + dir + QLatin1String("\r\n"))));
} }
/*! /*!
@ -1852,9 +1851,9 @@ int QFtp::get(const QString &file, QIODevice *dev, TransferType type)
else else
cmds << QLatin1String("TYPE A\r\n"); cmds << QLatin1String("TYPE A\r\n");
cmds << QLatin1String("SIZE ") + file + QLatin1String("\r\n"); cmds << QLatin1String("SIZE ") + file + QLatin1String("\r\n");
cmds << QLatin1String(d_func()->transferMode == Passive ? "PASV\r\n" : "PORT\r\n"); cmds << QLatin1String(d->transferMode == Passive ? "PASV\r\n" : "PORT\r\n");
cmds << QLatin1String("RETR ") + file + QLatin1String("\r\n"); cmds << QLatin1String("RETR ") + file + QLatin1String("\r\n");
return d_func()->addCommand(new QFtpCommand(Get, cmds, dev)); return d->addCommand(new QFtpCommand(Get, cmds, dev));
} }
/*! /*!
@ -1888,10 +1887,10 @@ int QFtp::put(const QByteArray &data, const QString &file, TransferType type)
cmds << QLatin1String("TYPE I\r\n"); cmds << QLatin1String("TYPE I\r\n");
else else
cmds << QLatin1String("TYPE A\r\n"); cmds << QLatin1String("TYPE A\r\n");
cmds << QLatin1String(d_func()->transferMode == Passive ? "PASV\r\n" : "PORT\r\n"); cmds << QLatin1String(d->transferMode == Passive ? "PASV\r\n" : "PORT\r\n");
cmds << QLatin1String("ALLO ") + QString::number(data.size()) + QLatin1String("\r\n"); cmds << QLatin1String("ALLO ") + QString::number(data.size()) + QLatin1String("\r\n");
cmds << QLatin1String("STOR ") + file + QLatin1String("\r\n"); cmds << QLatin1String("STOR ") + file + QLatin1String("\r\n");
return d_func()->addCommand(new QFtpCommand(Put, cmds, data)); return d->addCommand(new QFtpCommand(Put, cmds, data));
} }
/*! /*!
@ -1915,11 +1914,11 @@ int QFtp::put(QIODevice *dev, const QString &file, TransferType type)
cmds << QLatin1String("TYPE I\r\n"); cmds << QLatin1String("TYPE I\r\n");
else else
cmds << QLatin1String("TYPE A\r\n"); cmds << QLatin1String("TYPE A\r\n");
cmds << QLatin1String(d_func()->transferMode == Passive ? "PASV\r\n" : "PORT\r\n"); cmds << QLatin1String(d->transferMode == Passive ? "PASV\r\n" : "PORT\r\n");
if (!dev->isSequential()) if (!dev->isSequential())
cmds << QLatin1String("ALLO ") + QString::number(dev->size()) + QLatin1String("\r\n"); cmds << QLatin1String("ALLO ") + QString::number(dev->size()) + QLatin1String("\r\n");
cmds << QLatin1String("STOR ") + file + QLatin1String("\r\n"); cmds << QLatin1String("STOR ") + file + QLatin1String("\r\n");
return d_func()->addCommand(new QFtpCommand(Put, cmds, dev)); return d->addCommand(new QFtpCommand(Put, cmds, dev));
} }
/*! /*!
@ -1938,7 +1937,7 @@ int QFtp::put(QIODevice *dev, const QString &file, TransferType type)
*/ */
int QFtp::remove(const QString &file) int QFtp::remove(const QString &file)
{ {
return d_func()->addCommand(new QFtpCommand(Remove, QStringList(QLatin1String("DELE ") + file + QLatin1String("\r\n")))); return d->addCommand(new QFtpCommand(Remove, QStringList(QLatin1String("DELE ") + file + QLatin1String("\r\n"))));
} }
/*! /*!
@ -1957,7 +1956,7 @@ int QFtp::remove(const QString &file)
*/ */
int QFtp::mkdir(const QString &dir) int QFtp::mkdir(const QString &dir)
{ {
return d_func()->addCommand(new QFtpCommand(Mkdir, QStringList(QLatin1String("MKD ") + dir + QLatin1String("\r\n")))); return d->addCommand(new QFtpCommand(Mkdir, QStringList(QLatin1String("MKD ") + dir + QLatin1String("\r\n"))));
} }
/*! /*!
@ -1976,7 +1975,7 @@ int QFtp::mkdir(const QString &dir)
*/ */
int QFtp::rmdir(const QString &dir) int QFtp::rmdir(const QString &dir)
{ {
return d_func()->addCommand(new QFtpCommand(Rmdir, QStringList(QLatin1String("RMD ") + dir + QLatin1String("\r\n")))); return d->addCommand(new QFtpCommand(Rmdir, QStringList(QLatin1String("RMD ") + dir + QLatin1String("\r\n"))));
} }
/*! /*!
@ -1998,7 +1997,7 @@ int QFtp::rename(const QString &oldname, const QString &newname)
QStringList cmds; QStringList cmds;
cmds << QLatin1String("RNFR ") + oldname + QLatin1String("\r\n"); cmds << QLatin1String("RNFR ") + oldname + QLatin1String("\r\n");
cmds << QLatin1String("RNTO ") + newname + QLatin1String("\r\n"); cmds << QLatin1String("RNTO ") + newname + QLatin1String("\r\n");
return d_func()->addCommand(new QFtpCommand(Rename, cmds)); return d->addCommand(new QFtpCommand(Rename, cmds));
} }
/*! /*!
@ -2022,7 +2021,7 @@ int QFtp::rename(const QString &oldname, const QString &newname)
int QFtp::rawCommand(const QString &command) int QFtp::rawCommand(const QString &command)
{ {
QString cmd = command.trimmed() + QLatin1String("\r\n"); QString cmd = command.trimmed() + QLatin1String("\r\n");
return d_func()->addCommand(new QFtpCommand(RawCommand, QStringList(cmd))); return d->addCommand(new QFtpCommand(RawCommand, QStringList(cmd)));
} }
/*! /*!
@ -2033,7 +2032,7 @@ int QFtp::rawCommand(const QString &command)
*/ */
qint64 QFtp::bytesAvailable() const qint64 QFtp::bytesAvailable() const
{ {
return d_func()->pi.dtp.bytesAvailable(); return d->pi.dtp.bytesAvailable();
} }
/*! \fn qint64 QFtp::readBlock(char *data, quint64 maxlen) /*! \fn qint64 QFtp::readBlock(char *data, quint64 maxlen)
@ -2049,7 +2048,7 @@ qint64 QFtp::bytesAvailable() const
*/ */
qint64 QFtp::read(char *data, qint64 maxlen) qint64 QFtp::read(char *data, qint64 maxlen)
{ {
return d_func()->pi.dtp.read(data, maxlen); return d->pi.dtp.read(data, maxlen);
} }
/*! /*!
@ -2060,7 +2059,7 @@ qint64 QFtp::read(char *data, qint64 maxlen)
*/ */
QByteArray QFtp::readAll() QByteArray QFtp::readAll()
{ {
return d_func()->pi.dtp.readAll(); return d->pi.dtp.readAll();
} }
/*! /*!
@ -2094,11 +2093,11 @@ QByteArray QFtp::readAll()
*/ */
void QFtp::abort() void QFtp::abort()
{ {
if (d_func()->pending.isEmpty()) if (d->pending.isEmpty())
return; return;
clearPendingCommands(); clearPendingCommands();
d_func()->pi.abort(); d->pi.abort();
} }
/*! /*!
@ -2109,9 +2108,9 @@ void QFtp::abort()
*/ */
int QFtp::currentId() const int QFtp::currentId() const
{ {
if (d_func()->pending.isEmpty()) if (d->pending.isEmpty())
return 0; return 0;
return d_func()->pending.first()->id; return d->pending.first()->id;
} }
/*! /*!
@ -2122,9 +2121,9 @@ int QFtp::currentId() const
*/ */
QFtp::Command QFtp::currentCommand() const QFtp::Command QFtp::currentCommand() const
{ {
if (d_func()->pending.isEmpty()) if (d->pending.isEmpty())
return None; return None;
return d_func()->pending.first()->command; return d->pending.first()->command;
} }
/*! /*!
@ -2139,9 +2138,9 @@ QFtp::Command QFtp::currentCommand() const
*/ */
QIODevice* QFtp::currentDevice() const QIODevice* QFtp::currentDevice() const
{ {
if (d_func()->pending.isEmpty()) if (d->pending.isEmpty())
return 0; return 0;
QFtpCommand *c = d_func()->pending.first(); QFtpCommand *c = d->pending.first();
if (c->is_ba) if (c->is_ba)
return 0; return 0;
return c->data.dev; return c->data.dev;
@ -2158,7 +2157,7 @@ QIODevice* QFtp::currentDevice() const
*/ */
bool QFtp::hasPendingCommands() const bool QFtp::hasPendingCommands() const
{ {
return d_func()->pending.count() > 1; return d->pending.count() > 1;
} }
/*! /*!
@ -2171,8 +2170,8 @@ bool QFtp::hasPendingCommands() const
void QFtp::clearPendingCommands() void QFtp::clearPendingCommands()
{ {
// delete all entires except the first one // delete all entires except the first one
while (d_func()->pending.count() > 1) while (d->pending.count() > 1)
delete d_func()->pending.takeLast(); delete d->pending.takeLast();
} }
/*! /*!
@ -2183,7 +2182,7 @@ void QFtp::clearPendingCommands()
*/ */
QFtp::State QFtp::state() const QFtp::State QFtp::state() const
{ {
return d_func()->state; return d->state;
} }
/*! /*!
@ -2195,7 +2194,7 @@ QFtp::State QFtp::state() const
*/ */
QFtp::Error QFtp::error() const QFtp::Error QFtp::error() const
{ {
return d_func()->error; return d->error;
} }
/*! /*!
@ -2211,7 +2210,7 @@ QFtp::Error QFtp::error() const
*/ */
QString QFtp::errorString() const QString QFtp::errorString() const
{ {
return d_func()->errorString; return d->errorString;
} }
/*! \internal /*! \internal

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved. ** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com) ** Contact: Nokia Corporation (qt-info@nokia.com)
** **
@ -48,15 +48,9 @@
QT_BEGIN_HEADER QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Network)
#ifndef QT_NO_FTP
class QFtpPrivate; class QFtpPrivate;
class Q_NETWORK_EXPORT QFtp : public QObject class QFtp : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -162,19 +156,15 @@ public:
private: private:
Q_DISABLE_COPY(QFtp) Q_DISABLE_COPY(QFtp)
Q_DECLARE_PRIVATE(QFtp) QScopedPointer<QFtpPrivate> d;
Q_PRIVATE_SLOT(d_func(), void _q_startNextCommand()) Q_PRIVATE_SLOT(d, void _q_startNextCommand())
Q_PRIVATE_SLOT(d_func(), void _q_piFinished(const QString&)) Q_PRIVATE_SLOT(d, void _q_piFinished(const QString&))
Q_PRIVATE_SLOT(d_func(), void _q_piError(int, const QString&)) Q_PRIVATE_SLOT(d, void _q_piError(int, const QString&))
Q_PRIVATE_SLOT(d_func(), void _q_piConnectState(int)) Q_PRIVATE_SLOT(d, void _q_piConnectState(int))
Q_PRIVATE_SLOT(d_func(), void _q_piFtpReply(int, const QString&)) Q_PRIVATE_SLOT(d, void _q_piFtpReply(int, const QString&))
}; };
#endif // QT_NO_FTP
QT_END_NAMESPACE
QT_END_HEADER QT_END_HEADER
#endif // QFTP_H #endif // QFTP_H

12
src/qftp/qftp.pro Normal file
View File

@ -0,0 +1,12 @@
TEMPLATE = lib
CONFIG += staticlib
CONFIG -= shared
QT += network
# Input
HEADERS += qftp.h
SOURCES += qftp.cpp
# Output
DESTDIR = "../../lib"

View File

@ -3,7 +3,9 @@ TARGET = tst_qftp
SOURCES += tst_qftp.cpp SOURCES += tst_qftp.cpp
QT = core network network-private testlib QT = core network testlib
LIBS += -lqftp
INCLUDEPATH += "../../include"
wince*: { wince*: {
addFiles.files = rfc3252.txt addFiles.files = rfc3252.txt