diff --git a/libretroshare/src/ft/ftfilecreator.cc b/libretroshare/src/ft/ftfilecreator.cc index a798d51ad..c42deac84 100644 --- a/libretroshare/src/ft/ftfilecreator.cc +++ b/libretroshare/src/ft/ftfilecreator.cc @@ -251,7 +251,13 @@ int ftFileCreator::locked_initializeFileAttrs() * attempt to open file */ +#ifdef WINDOWS_SYS + std::wstring wfile_name; + librs::util::ConvertUtf8ToUtf16(file_name, wfile_name); + fd = _wfopen(wfile_name.c_str(), L"r+b"); +#else fd = fopen64(file_name.c_str(), "r+b"); +#endif if (!fd) { @@ -262,7 +268,11 @@ int ftFileCreator::locked_initializeFileAttrs() std::cerr << std::endl; /* try opening for write */ +#ifdef WINDOWS_SYS + fd = _wfopen(wfile_name.c_str(), L"w+b"); +#else fd = fopen64(file_name.c_str(), "w+b"); +#endif if (!fd) { std::cerr << "ftFileCreator::initializeFileAttrs()"; diff --git a/libretroshare/src/services/p3distrib.cc b/libretroshare/src/services/p3distrib.cc index 874877083..3bf7ed2ac 100644 --- a/libretroshare/src/services/p3distrib.cc +++ b/libretroshare/src/services/p3distrib.cc @@ -60,7 +60,16 @@ RSA *extractPrivateKey(RsTlvSecurityKey &key); void setRSAPublicKey(RsTlvSecurityKey &key, RSA *rsa_pub); void setRSAPrivateKey(RsTlvSecurityKey &key, RSA *rsa_priv); +GroupInfo::~GroupInfo() +{ + delete distribGroup ; + for(std::map::const_iterator it(msgs.begin());it!=msgs.end();++it) + delete it->second ; + + for(std::map::const_iterator it(decrypted_msg_cache.begin());it!=decrypted_msg_cache.end();++it) + delete it->second ; +} p3GroupDistrib::p3GroupDistrib(uint16_t subtype, CacheStrapper *cs, CacheTransfer *cft, @@ -88,6 +97,14 @@ p3GroupDistrib::p3GroupDistrib(uint16_t subtype, return; } +p3GroupDistrib::~p3GroupDistrib() +{ + for(std::map::iterator it(mRecvdPubKeys.begin());it!=mRecvdPubKeys.end();++it) + delete it->second ; + + for(std::list::iterator it(mPendingPublish.begin());it!=mPendingPublish.end();++it) + delete *it ; +} int p3GroupDistrib::tick() { diff --git a/libretroshare/src/services/p3distrib.h b/libretroshare/src/services/p3distrib.h index 5dd237dd2..29cda9404 100644 --- a/libretroshare/src/services/p3distrib.h +++ b/libretroshare/src/services/p3distrib.h @@ -169,6 +169,7 @@ class GroupInfo { return; } + virtual ~GroupInfo() ; std::string grpId; /// the group id RsDistribGrp *distribGroup; /// item which contains further information on group @@ -297,6 +298,7 @@ class p3GroupDistrib: public CacheSource, public CacheStore, public p3Config, pu uint32_t configId, uint32_t storePeriod, uint32_t pubPeriod); + virtual ~p3GroupDistrib() ; /***************************************************************************************/ /******************************* CACHE SOURCE / STORE Interface ************************/ diff --git a/libretroshare/src/services/p3msgservice.cc b/libretroshare/src/services/p3msgservice.cc index 6589121ac..99682ffae 100644 --- a/libretroshare/src/services/p3msgservice.cc +++ b/libretroshare/src/services/p3msgservice.cc @@ -501,24 +501,18 @@ void p3MsgService::loadWelcomeMsg() /* Load Welcome Message */ RsMsgItem *msg = new RsMsgItem(); - //msg -> PeerId(mConnMgr->getOwnId()); + //msg -> PeerId(mConnMgr->getOwnId()); - msg -> sendTime = time(NULL); - msg -> recvTime = time(NULL); - msg -> msgFlags = RS_MSG_FLAGS_NEW; + msg -> sendTime = time(NULL); + msg -> recvTime = time(NULL); + msg -> msgFlags = RS_MSG_FLAGS_NEW; msg -> subject = L"Welcome to Retroshare"; - msg -> message = L"Send and receive messages\n"; - msg -> message += L"with your friends...\n\n"; - - msg -> message += L"These can hold recommendations\n"; - msg -> message += L"from your local shared files\n\n"; - - msg -> message += L"Add recommendations through\n"; - msg -> message += L"the Local Files Dialog\n\n"; - - msg -> message += L"Enjoy.\n"; + msg -> message = L"Send and receive messages with your friends...\n"; + msg -> message += L"These can hold recommendations from your local shared files.\n\n"; + msg -> message += L"Add recommendations through the Local Files Dialog.\n\n"; + msg -> message += L"Enjoy."; msg -> msgId = getNewUniqueMsgId(); @@ -1280,11 +1274,11 @@ void p3MsgService::initRsMI(RsMsgItem *msg, MessageInfo &mi) { mi.msgflags |= RS_MSG_PENDING; } - if (msg->msgFlags & RS_MSG_FLAGS_DRAFT) - { - mi.msgflags |= RS_MSG_DRAFT; - } - if (msg->msgFlags & RS_MSG_FLAGS_NEW) + if (msg->msgFlags & RS_MSG_FLAGS_DRAFT) + { + mi.msgflags |= RS_MSG_DRAFT; + } + if (msg->msgFlags & RS_MSG_FLAGS_NEW) { mi.msgflags |= RS_MSG_NEW; } @@ -1292,7 +1286,7 @@ void p3MsgService::initRsMI(RsMsgItem *msg, MessageInfo &mi) { mi.msgflags |= RS_MSG_TRASH; } - if (msg->msgFlags & RS_MSG_FLAGS_UNREAD_BY_USER) + if (msg->msgFlags & RS_MSG_FLAGS_UNREAD_BY_USER) { mi.msgflags |= RS_MSG_UNREAD_BY_USER; } @@ -1348,7 +1342,7 @@ void p3MsgService::initRsMI(RsMsgItem *msg, MessageInfo &mi) it != msg->attachment.items.end(); it++) { FileInfo fi; - fi.fname = RsDirUtil::getTopDir(it->name); + fi.fname = RsDirUtil::getTopDir(it->name); fi.size = it->filesize; fi.hash = it->hash; fi.path = it->path; @@ -1375,11 +1369,11 @@ void p3MsgService::initRsMIS(RsMsgItem *msg, MsgInfoSummary &mis) { mis.msgflags |= RS_MSG_PENDING; } - if (msg->msgFlags & RS_MSG_FLAGS_DRAFT) - { - mis.msgflags |= RS_MSG_DRAFT; - } - if (msg->msgFlags & RS_MSG_FLAGS_NEW) + if (msg->msgFlags & RS_MSG_FLAGS_DRAFT) + { + mis.msgflags |= RS_MSG_DRAFT; + } + if (msg->msgFlags & RS_MSG_FLAGS_NEW) { mis.msgflags |= RS_MSG_NEW; } diff --git a/libretroshare/src/util/rsdir.cc b/libretroshare/src/util/rsdir.cc index 3b82105f8..7581f0e90 100644 --- a/libretroshare/src/util/rsdir.cc +++ b/libretroshare/src/util/rsdir.cc @@ -426,54 +426,70 @@ bool RsDirUtil::checkDirectory(const std::string& dir) bool RsDirUtil::checkCreateDirectory(const std::string& dir) { #ifdef RSDIR_DEBUG - std::cerr << "RsDirUtil::checkCreateDirectory() dir: " << dir << std::endl; + std::cerr << "RsDirUtil::checkCreateDirectory() dir: " << dir << std::endl; #endif - DIR *direc = opendir(dir.c_str()); - if (!direc) - { - // directory don't exist. create. + +#ifdef WINDOWS_SYS + std::wstring wdir; + librs::util::ConvertUtf8ToUtf16(dir, wdir); + _WDIR *direc = _wopendir(wdir.c_str()); + if (!direc) +#else + DIR *direc = opendir(dir.c_str()); + if (!direc) +#endif + { + // directory don't exist. create. /******************************** WINDOWS/UNIX SPECIFIC PART ******************/ #ifndef WINDOWS_SYS // UNIX - if (-1 == mkdir(dir.c_str(), 0777)) + if (-1 == mkdir(dir.c_str(), 0777)) #else // WIN - if (-1 == mkdir(dir.c_str())) + if (-1 == _wmkdir(wdir.c_str())) #endif /******************************** WINDOWS/UNIX SPECIFIC PART ******************/ - { + { #ifdef RSDIR_DEBUG - std::cerr << "check_create_directory() Fatal Error et oui--"; - std::cerr < -//#include -//#include -//#include +#ifdef WINDOWS_SYS + _wclosedir(direc); +#else + closedir(direc) ; +#endif + + return 1; +} bool RsDirUtil::cleanupDirectory(const std::string& cleandir, const std::list &keepFiles) { /* check for the dir existance */ +#ifdef WINDOWS_SYS + std::wstring wcleandir; + librs::util::ConvertUtf8ToUtf16(cleandir, wcleandir); + _WDIR *dir = _wopendir(wcleandir.c_str()); +#else DIR *dir = opendir(cleandir.c_str()); +#endif + std::list::const_iterator it; if (!dir) @@ -481,31 +497,60 @@ bool RsDirUtil::cleanupDirectory(const std::string& cleandir, const std::list d_name; + std::wstring wfullname = wcleandir + L"/" + wfname; +#else const std::string &fname = dent -> d_name; std::string fullname = cleandir + "/" + fname; +#endif - if (-1 != stat(fullname.c_str(), &buf)) +#ifdef WINDOWS_SYS + if (-1 != _wstat(wfullname.c_str(), &buf)) +#else + if (-1 != stat(fullname.c_str(), &buf)) +#endif { /* only worry about files */ if (S_ISREG(buf.st_mode)) { +#ifdef WINDOWS_SYS + std::string fname; + librs::util::ConvertUtf16ToUtf8(wfname, fname); +#endif /* check if we should keep it */ if (keepFiles.end() == (it = std::find(keepFiles.begin(), keepFiles.end(), fname))) { /* can remove */ +#ifdef WINDOWS_SYS + _wremove(wfullname.c_str()); +#else remove(fullname.c_str()); +#endif } } } } + /* close directory */ +#ifdef WINDOWS_SYS + _wclosedir(dir); +#else closedir(dir); +#endif return true; } diff --git a/retroshare-gui/src/gui/NetworkView.cpp b/retroshare-gui/src/gui/NetworkView.cpp index 267bd7f36..006160060 100644 --- a/retroshare-gui/src/gui/NetworkView.cpp +++ b/retroshare-gui/src/gui/NetworkView.cpp @@ -63,6 +63,12 @@ NetworkView::NetworkView(QWidget *parent) _should_update = true ; } +NetworkView::~NetworkView() +{ + if(mScene != NULL) + delete mScene ; +} + void NetworkView::setEdgeLength(int l) { ui.graphicsView->setEdgeLength(l); diff --git a/retroshare-gui/src/gui/NetworkView.h b/retroshare-gui/src/gui/NetworkView.h index c3f2f2c2d..eec403ab4 100644 --- a/retroshare-gui/src/gui/NetworkView.h +++ b/retroshare-gui/src/gui/NetworkView.h @@ -34,6 +34,7 @@ class NetworkView : public RsAutoUpdatePage public: NetworkView(QWidget *parent = 0); + virtual ~NetworkView(); virtual void updateDisplay() ; // derived from RsAutoUpdatePage diff --git a/retroshare-gui/src/gui/ShareDialog.cpp b/retroshare-gui/src/gui/ShareDialog.cpp index 7398cebd9..2e0c3323d 100644 --- a/retroshare-gui/src/gui/ShareDialog.cpp +++ b/retroshare-gui/src/gui/ShareDialog.cpp @@ -67,7 +67,7 @@ ShareDialog::ShareDialog(std::string filename, QWidget *parent, Qt::WFlags flags void ShareDialog::browseDirectory() { /* select a dir*/ - QString qdir = QFileDialog::getExistingDirectory(this, tr("Select A Folder To Share"), "", QFileDialog::DontUseNativeDialog | QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString qdir = QFileDialog::getExistingDirectory(this, tr("Select A Folder To Share"), "", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); /* add it to the server */ if (qdir.isEmpty()) { diff --git a/retroshare-gui/src/gui/TransfersDialog.cpp b/retroshare-gui/src/gui/TransfersDialog.cpp index e5bdf35f7..356eb3a72 100644 --- a/retroshare-gui/src/gui/TransfersDialog.cpp +++ b/retroshare-gui/src/gui/TransfersDialog.cpp @@ -1339,7 +1339,7 @@ void TransfersDialog::openFolderTransfer() } /* open folder with a suitable application */ - qinfo.setFile(path.c_str()); + qinfo.setFile(QString::fromUtf8(path.c_str())); if (qinfo.exists() && qinfo.isDir()) { if (!QDesktopServices::openUrl(QUrl::fromLocalFile(qinfo.absoluteFilePath()))) { std::cerr << "openFolderTransfer(): can't open folder " << path << std::endl; @@ -1379,16 +1379,16 @@ void TransfersDialog::previewTransfer() /* open or preview them with a suitable application */ QFileInfo qinfo; if (complete) { - qinfo.setFile(QString::fromStdString(path)); + qinfo.setFile(QString::fromUtf8(path.c_str())); if (qinfo.exists()) { if (!QDesktopServices::openUrl(QUrl::fromLocalFile(qinfo.absoluteFilePath()))) { std::cerr << "previewTransfer(): can't preview file " << path << std::endl; } } } else { - QString linkName = QString::fromStdString(path) + - QString::fromStdString(info.fname.substr(info.fname.find_last_of('.'))); - if (QFile::link(QString::fromStdString(path), linkName)) { + QString linkName = QString::fromUtf8(path.c_str()) + + QString::fromUtf8(info.fname.substr(info.fname.find_last_of('.')).c_str()); + if (QFile::link(QString::fromUtf8(path.c_str()), linkName)) { qinfo.setFile(linkName); if (qinfo.exists()) { if (!QDesktopServices::openUrl(QUrl::fromLocalFile(qinfo.absoluteFilePath()))) { @@ -1427,7 +1427,7 @@ void TransfersDialog::openTransfer() /* open file with a suitable application */ QFileInfo qinfo; - qinfo.setFile(path.c_str()); + qinfo.setFile(QString::fromUtf8(path.c_str())); if (qinfo.exists()) { if (!QDesktopServices::openUrl(QUrl::fromLocalFile(qinfo.absoluteFilePath()))) { std::cerr << "openTransfer(): can't open file " << path << std::endl; @@ -1436,7 +1436,7 @@ void TransfersDialog::openTransfer() } else { /* rise a message box for incompleted download file */ QMessageBox::information(this, tr("Open Transfer"), - tr("File %1 is not completed. If it is a media file, try to preview it.").arg(info.fname.c_str())); + tr("File %1 is not completed. If it is a media file, try to preview it.").arg(QString::fromUtf8(info.fname.c_str()))); } } diff --git a/retroshare-gui/src/gui/chat/HandleRichText.cpp b/retroshare-gui/src/gui/chat/HandleRichText.cpp index 48e24093f..ad76a191c 100644 --- a/retroshare-gui/src/gui/chat/HandleRichText.cpp +++ b/retroshare-gui/src/gui/chat/HandleRichText.cpp @@ -19,6 +19,7 @@ * Boston, MA 02110-1301, USA. ****************************************************************/ +#include #include "HandleRichText.h" @@ -49,7 +50,12 @@ QString formatText(const QString &text, unsigned int flag) } QDomDocument doc; - doc.setContent(text); + if (doc.setContent(text) == false) { + // convert text with QTextBrowser + QTextBrowser textBrowser; + textBrowser.setText(text); + doc.setContent(textBrowser.toHtml()); + } QDomElement body = doc.documentElement(); if (flag & RSHTML_FORMATTEXT_EMBED_SMILEYS) { diff --git a/retroshare-gui/src/gui/settings/DirectoriesPage.cpp b/retroshare-gui/src/gui/settings/DirectoriesPage.cpp index f9dfe0eb7..83bc5fdb8 100755 --- a/retroshare-gui/src/gui/settings/DirectoriesPage.cpp +++ b/retroshare-gui/src/gui/settings/DirectoriesPage.cpp @@ -220,10 +220,9 @@ void DirectoriesPage::removeShareDirectory() void DirectoriesPage::setIncomingDirectory() { - QString qdir = QFileDialog::getExistingDirectory(this, tr("Set Incoming Directory"), "", - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString qdir = QFileDialog::getExistingDirectory(this, tr("Set Incoming Directory"), "", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); - std::string dir = qdir.toStdString(); + std::string dir = qdir.toUtf8().constData(); if (dir != "") { rsFiles->setDownloadDirectory(dir); @@ -249,10 +248,9 @@ void DirectoriesPage::setIncomingDirectory() void DirectoriesPage::setPartialsDirectory() { - QString qdir = QFileDialog::getExistingDirectory(this, tr("Set Partials Directory"), "", - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString qdir = QFileDialog::getExistingDirectory(this, tr("Set Partials Directory"), "", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); - std::string dir = qdir.toStdString(); + std::string dir = qdir.toUtf8().constData(); if (dir != "") { rsFiles->setPartialsDirectory(dir);