diff --git a/CMakeLists.txt b/CMakeLists.txt index 825ed5cb..d0d40591 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,8 +76,19 @@ IF(MSVC) #set(CMAKE_CXX_FLAGS_DEBUG "/Zi") ELSEIF (CMAKE_COMPILER_IS_GNUCXX) # linux/gcc, bsd/gcc, windows/mingw + include(CheckCXXCompilerFlag) + set(CMAKE_CXX_FLAGS_RELEASE "-s -O2") - set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0 -Wall -Wextra -pedantic -Werror -Wcast-align -Wmissing-declarations -Winline -Wno-long-long -Wno-error=extra -Wno-error=unused-parameter -Wno-inline -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=reorder -Wno-error=missing-declarations") + set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O0 -Wall -Wextra -pedantic -Werror") + + set(ADDITIONAL_DEBUG_FLAGS -Wcast-align -Wmissing-declarations -Winline -Wno-long-long -Wno-error=extra -Wno-error=unused-parameter -Wno-inline -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=reorder -Wno-error=missing-declarations) + + FOREACH(FLAG ${ADDITIONAL_DEBUG_FLAGS}) + CHECK_CXX_COMPILER_FLAG("${FLAG}" CXX_HAS_WARNING_${FLAG}) + IF(CXX_HAS_WARNING_${FLAG}) + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${FLAG}") + ENDIF() + ENDFOREACH() ELSE() # other: osx/llvm, bsd/llvm set(CMAKE_CXX_FLAGS_RELEASE "-O2") diff --git a/README.md b/README.md index 61b44ed4..b2896773 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,10 @@ To compile: The following flags can be passed to `cmake`: - `-DWITH_SERVER=1` Build the server -- `-DWITHOUT_CLIENT=1` Do not build the client +- `-DWITH_CLIENT=0` Do not build the client +- `-DWITH_ORACLE=0` Do not build Oracle - `-DWITH_QT4=1` Force compilation to use Qt4 instead of Qt5. +- `-DCMAKE_BUILD_TYPE=Debug` Compile in debug mode. Enables extra logging output, debug symbols, and much more verbose compiler warnings. # Running diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 16738a50..c4a6a6e2 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -129,21 +129,22 @@ void PictureLoader::processLoadQueue() QString setName = ptl.getSetName(); QImage image; - if (!image.load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg(setName).arg(correctedName))) - if (!image.load(QString("%1/%2/%3%4.full.jpg").arg(picsPath).arg(setName).arg(correctedName).arg(1))) - if (!image.load(QString("%1/%2/%3/%4.full.jpg").arg(picsPath).arg("downloadedPics").arg(setName).arg(correctedName))) { - if (picDownload) { - cardsToDownload.append(ptl); - if (!downloadRunning) - startNextPicDownload(); - } else { - if (ptl.nextSet()) - loadQueue.prepend(ptl); - else - emit imageLoaded(ptl.getCard(), QImage()); + if (!image.load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg("CUSTOM").arg(correctedName))) { + if (!image.load(QString("%1/%2/%3.full.jpg").arg(picsPath).arg(setName).arg(correctedName))) + //if (!image.load(QString("%1/%2/%3%4.full.jpg").arg(picsPath).arg(setName).arg(correctedName).arg(1))) + if (!image.load(QString("%1/%2/%3/%4.full.jpg").arg(picsPath).arg("downloadedPics").arg(setName).arg(correctedName))) { + if (picDownload) { + cardsToDownload.append(ptl); + if (!downloadRunning) + startNextPicDownload(); + } else { + if (ptl.nextSet()) + loadQueue.prepend(ptl); + else + emit imageLoaded(ptl.getCard(), QImage()); + } } - continue; - } + } emit imageLoaded(ptl.getCard(), image); } @@ -153,9 +154,24 @@ QString PictureLoader::getPicUrl(CardInfo *card) { if (!picDownload) return 0; - QString picUrl = picDownloadHq ? settingsCache->getPicUrlHq() : settingsCache->getPicUrl(); - picUrl.replace("!name!", QUrl::toPercentEncoding(card->getCorrectedName())); CardSet *set = card->getPreferredSet(); + QString picUrl = QString(""); + // first check if Hq is enabled and a custom Hq card url exists in cards.xml + if(picDownloadHq) + { + picUrl = card->getCustomPicURLHq(set->getShortName()); + if (!picUrl.isEmpty()) + return picUrl; + } + + // then, test for a custom, non-Hq card url in cards.xml + picUrl = card->getCustomPicURL(set->getShortName()); + if (!picUrl.isEmpty()) + return picUrl; + + // otherwise, fallback to the default url + picUrl = picDownloadHq ? settingsCache->getPicUrlHq() : settingsCache->getPicUrl(); + picUrl.replace("!name!", QUrl::toPercentEncoding(card->getCorrectedName())); picUrl.replace("!setcode!", QUrl::toPercentEncoding(set->getShortName())); picUrl.replace("!setname!", QUrl::toPercentEncoding(set->getLongName())); picUrl.replace("!cardid!", QUrl::toPercentEncoding(QString::number(card->getPreferredMuId()))); @@ -275,6 +291,8 @@ CardInfo::CardInfo(CardDatabase *_db, bool _cipt, int _tableRow, const SetList &_sets, + const QStringMap &_customPicURLs, + const QStringMap &_customPicURLsHq, MuidMap _muIds) : db(_db), name(_name), @@ -286,6 +304,8 @@ CardInfo::CardInfo(CardDatabase *_db, text(_text), colors(_colors), loyalty(_loyalty), + customPicURLs(_customPicURLs), + customPicURLsHq(_customPicURLsHq), muIds(_muIds), cipt(_cipt), tableRow(_tableRow), @@ -464,6 +484,14 @@ static QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardInfo *info) tmpSet=sets[i]->getShortName(); xml.writeAttribute("muId", QString::number(info->getMuId(tmpSet))); + tmpString = info->getCustomPicURL(tmpSet); + if(!tmpString.isEmpty()) + xml.writeAttribute("picURL", tmpString); + + tmpString = info->getCustomPicURLHq(tmpSet); + if(!tmpString.isEmpty()) + xml.writeAttribute("picURLHq", tmpString); + xml.writeCharacters(tmpSet); xml.writeEndElement(); } @@ -628,6 +656,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens) if (xml.name() == "card") { QString name, manacost, type, pt, text; QStringList colors; + QStringMap customPicURLs, customPicURLsHq; MuidMap muids; SetList sets; int tableRow = 0; @@ -654,6 +683,12 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens) if (attrs.hasAttribute("muId")) { muids[setName] = attrs.value("muId").toString().toInt(); } + if (attrs.hasAttribute("picURL")) { + customPicURLs[setName] = attrs.value("picURL").toString(); + } + if (attrs.hasAttribute("picURLHq")) { + customPicURLsHq[setName] = attrs.value("picURLHq").toString(); + } } else if (xml.name() == "color") colors << xml.readElementText(); else if (xml.name() == "tablerow") @@ -667,7 +702,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens) } if (isToken == tokens) { - addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, muids)); + addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids)); } } } diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index b318f27d..ed2d72e1 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -110,6 +110,7 @@ private: QString text; QStringList colors; int loyalty; + QStringMap customPicURLs, customPicURLsHq; MuidMap muIds; bool cipt; int tableRow; @@ -128,6 +129,8 @@ public: bool _cipt = false, int _tableRow = 0, const SetList &_sets = SetList(), + const QStringMap &_customPicURLs = QStringMap(), + const QStringMap &_customPicURLsHq = QStringMap(), MuidMap muids = MuidMap()); ~CardInfo(); const QString &getName() const { return name; } @@ -145,12 +148,16 @@ public: void setText(const QString &_text) { text = _text; emit cardInfoChanged(this); } void setColors(const QStringList &_colors) { colors = _colors; emit cardInfoChanged(this); } const QStringList &getColors() const { return colors; } + QString getCustomPicURL(const QString &set) const { return customPicURLs.value(set); } + QString getCustomPicURLHq(const QString &set) const { return customPicURLsHq.value(set); } int getMuId(const QString &set) const { return muIds.value(set); } QString getMainCardType() const; QString getCorrectedName() const; int getTableRow() const { return tableRow; } void setTableRow(int _tableRow) { tableRow = _tableRow; } void setLoyalty(int _loyalty) { loyalty = _loyalty; emit cardInfoChanged(this); } + void setCustomPicURL(const QString &_set, const QString &_customPicURL) { customPicURLs.insert(_set, _customPicURL); } + void setCustomPicURLHq(const QString &_set, const QString &_customPicURL) { customPicURLsHq.insert(_set, _customPicURL); } void setMuId(const QString &_set, const int &_muId) { muIds.insert(_set, _muId); } void addToSet(CardSet *set); QPixmap *loadPixmap(); diff --git a/cockatrice/src/dlg_edit_tokens.cpp b/cockatrice/src/dlg_edit_tokens.cpp index 28fefa7d..e2de2cd4 100644 --- a/cockatrice/src/dlg_edit_tokens.cpp +++ b/cockatrice/src/dlg_edit_tokens.cpp @@ -113,7 +113,7 @@ DlgEditTokens::DlgEditTokens(CardDatabaseModel *_cardDatabaseModel, QWidget *par setWindowTitle(tr("Edit tokens")); } -void DlgEditTokens::tokenSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous) +void DlgEditTokens::tokenSelectionChanged(const QModelIndex ¤t, const QModelIndex & /* previous */) { const QModelIndex realIndex = cardDatabaseDisplayModel->mapToSource(current); CardInfo *cardInfo = current.row() >= 0 ? cardDatabaseModel->getCard(realIndex.row()) : cardDatabaseModel->getDatabase()->getCard(); diff --git a/cockatrice/src/filtertree.h b/cockatrice/src/filtertree.h index a6c4536d..d945e567 100644 --- a/cockatrice/src/filtertree.h +++ b/cockatrice/src/filtertree.h @@ -18,10 +18,10 @@ public: virtual void enable() { enabled = true; nodeChanged(); } virtual void disable() { enabled = false; nodeChanged(); } virtual FilterTreeNode *parent() const { return NULL; } - virtual FilterTreeNode *nodeAt(int i) const { return NULL; } - virtual void deleteAt(int i) {} + virtual FilterTreeNode *nodeAt(int /* i */) const { return NULL; } + virtual void deleteAt(int /* i */) {} virtual int childCount() const { return 0; } - virtual int childIndex(const FilterTreeNode *node) const { return -1; } + virtual int childIndex(const FilterTreeNode * /* node */) const { return -1; } virtual int index() const { return (parent() != NULL)? parent()->childIndex(this) : -1; } virtual QString text() const { return QString(textCStr()); } virtual bool isLeaf() const { return false; } @@ -48,7 +48,7 @@ class FilterTreeBranch : public FilterTreeNode { protected: QList childNodes; public: - ~FilterTreeBranch(); + virtual ~FilterTreeBranch(); FilterTreeNode *nodeAt(int i) const; void deleteAt(int i); int childCount() const { return childNodes.size(); } @@ -102,6 +102,7 @@ public: FilterItem(QString trm, FilterItemList *parent) : p(parent), term(trm) {} + virtual ~FilterItem() {}; CardFilter::Attr attr() const { return p->attr(); } CardFilter::Type type() const { return p->type; } diff --git a/cockatrice/src/localserver.cpp b/cockatrice/src/localserver.cpp index dc49078a..a7eda3d1 100644 --- a/cockatrice/src/localserver.cpp +++ b/cockatrice/src/localserver.cpp @@ -33,7 +33,7 @@ ServerInfo_User LocalServer_DatabaseInterface::getUserData(const QString &name, return result; } -AuthenticationResult LocalServer_DatabaseInterface::checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password, QString &reasonStr, int &secondsLeft) +AuthenticationResult LocalServer_DatabaseInterface::checkUserPassword(Server_ProtocolHandler * /* handler */, const QString & /* user */, const QString & /* password */, QString & /* reasonStr */, int & /* secondsLeft */) { return UnknownUser; } diff --git a/cockatrice/src/main.cpp b/cockatrice/src/main.cpp index b7e2c0ea..df38bbf6 100644 --- a/cockatrice/src/main.cpp +++ b/cockatrice/src/main.cpp @@ -136,7 +136,6 @@ int main(int argc, char *argv[]) qsrand(QDateTime::currentDateTime().toTime_t()); - bool startMainProgram = true; #if QT_VERSION < 0x050000 const QString dataDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); #else diff --git a/cockatrice/src/playerlistwidget.cpp b/cockatrice/src/playerlistwidget.cpp index ee088203..b535c2c1 100644 --- a/cockatrice/src/playerlistwidget.cpp +++ b/cockatrice/src/playerlistwidget.cpp @@ -178,5 +178,5 @@ void PlayerListWidget::showContextMenu(const QPoint &pos, const QModelIndex &ind int playerId = index.sibling(index.row(), 4).data(Qt::UserRole + 1).toInt(); UserLevelFlags userLevel(index.sibling(index.row(), 3).data(Qt::UserRole).toInt()); - userContextMenu->showContextMenu(pos, userName, userLevel, playerId); + userContextMenu->showContextMenu(pos, userName, userLevel, true, playerId); } diff --git a/cockatrice/src/replay_timeline_widget.cpp b/cockatrice/src/replay_timeline_widget.cpp index 6127489f..fb3efc1d 100644 --- a/cockatrice/src/replay_timeline_widget.cpp +++ b/cockatrice/src/replay_timeline_widget.cpp @@ -43,7 +43,7 @@ void ReplayTimelineWidget::setTimeline(const QList &_replayTimeline) update(); } -void ReplayTimelineWidget::paintEvent(QPaintEvent *event) +void ReplayTimelineWidget::paintEvent(QPaintEvent * /* event */) { QPainter painter(this); painter.drawRect(0, 0, width() - 1, height() - 1); diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index e402ea11..c0138931 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -646,6 +646,7 @@ void TabDeckEditor::actDecrement() void TabDeckEditor::setPriceTagFeatureEnabled(int enabled) { aUpdatePrices->setVisible(enabled); + deckModel->pricesUpdated(); } void TabDeckEditor::actUpdatePrices() diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index b99fff02..715c75f7 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -254,7 +254,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay) // Create list: event number -> time [ms] // Distribute simultaneous events evenly across 1 second. - int lastEventTimestamp = -1; + unsigned int lastEventTimestamp = 0; const int eventCount = replay->event_list_size(); for (int i = 0; i < eventCount; ++i) { int j = i + 1; diff --git a/cockatrice/src/tab_replays.cpp b/cockatrice/src/tab_replays.cpp index 6b3a6210..00a7f9c0 100644 --- a/cockatrice/src/tab_replays.cpp +++ b/cockatrice/src/tab_replays.cpp @@ -202,7 +202,7 @@ void TabReplays::actDownload() client->sendCommand(pend); } -void TabReplays::downloadFinished(const Response &r, const CommandContainer &commandContainer, const QVariant &extraData) +void TabReplays::downloadFinished(const Response &r, const CommandContainer & /* commandContainer */, const QVariant &extraData) { if (r.response_code() != Response::RespOk) return; diff --git a/cockatrice/src/tab_supervisor.cpp b/cockatrice/src/tab_supervisor.cpp index dda918a0..166a766a 100644 --- a/cockatrice/src/tab_supervisor.cpp +++ b/cockatrice/src/tab_supervisor.cpp @@ -76,7 +76,7 @@ void CloseButton::paintEvent(QPaintEvent * /*event*/) } TabSupervisor::TabSupervisor(AbstractClient *_client, QWidget *parent) - : QTabWidget(parent), userInfo(0), client(_client), tabUserLists(0), tabServer(0), tabDeckStorage(0), tabAdmin(0), tabReplays(0) + : QTabWidget(parent), userInfo(0), client(_client), tabServer(0), tabUserLists(0), tabDeckStorage(0), tabReplays(0), tabAdmin(0) { tabChangedIcon = new QIcon(":/resources/icon_tab_changed.svg"); setElideMode(Qt::ElideRight); diff --git a/cockatrice/src/user_context_menu.cpp b/cockatrice/src/user_context_menu.cpp index eab48f47..df324653 100644 --- a/cockatrice/src/user_context_menu.cpp +++ b/cockatrice/src/user_context_menu.cpp @@ -102,7 +102,7 @@ void UserContextMenu::banUser_dialogFinished() client->sendCommand(client->prepareModeratorCommand(cmd)); } -void UserContextMenu::showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, int playerId) +void UserContextMenu::showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, bool online, int playerId) { aUserName->setText(userName); @@ -132,7 +132,8 @@ void UserContextMenu::showContextMenu(const QPoint &pos, const QString &userName menu->addAction(aBan); } bool anotherUser = userName != QString::fromStdString(tabSupervisor->getUserInfo()->name()); - aChat->setEnabled(anotherUser); + aDetails->setEnabled(online); + aChat->setEnabled(anotherUser && online); aShowGames->setEnabled(anotherUser); aAddToBuddyList->setEnabled(anotherUser); aRemoveFromBuddyList->setEnabled(anotherUser); diff --git a/cockatrice/src/user_context_menu.h b/cockatrice/src/user_context_menu.h index 8e6708b0..9aeadfd4 100644 --- a/cockatrice/src/user_context_menu.h +++ b/cockatrice/src/user_context_menu.h @@ -36,7 +36,7 @@ private slots: public: UserContextMenu(const TabSupervisor *_tabSupervisor, QWidget *_parent, TabGame *_game = 0); void retranslateUi(); - void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, int playerId = -1); + void showContextMenu(const QPoint &pos, const QString &userName, UserLevelFlags userLevel, bool online = true, int playerId = -1); }; #endif diff --git a/cockatrice/src/userlist.cpp b/cockatrice/src/userlist.cpp index 29d13781..c6174a6e 100644 --- a/cockatrice/src/userlist.cpp +++ b/cockatrice/src/userlist.cpp @@ -311,8 +311,9 @@ void UserList::userClicked(QTreeWidgetItem *item, int /*column*/) void UserList::showContextMenu(const QPoint &pos, const QModelIndex &index) { const ServerInfo_User &userInfo = static_cast(userTree->topLevelItem(index.row()))->getUserInfo(); - - userContextMenu->showContextMenu(pos, QString::fromStdString(userInfo.name()), UserLevelFlags(userInfo.user_level())); + bool online = index.sibling(index.row(), 0).data(Qt::UserRole + 1).toBool(); + + userContextMenu->showContextMenu(pos, QString::fromStdString(userInfo.name()), UserLevelFlags(userInfo.user_level()), online); } void UserList::sortItems() diff --git a/common/decklist.cpp b/common/decklist.cpp index af2f6270..0b2558b5 100644 --- a/common/decklist.cpp +++ b/common/decklist.cpp @@ -355,7 +355,8 @@ DeckList::DeckList() // TODO: http://qt-project.org/doc/qt-4.8/qobject.html#no-copy-constructor-or-assignment-operator DeckList::DeckList(const DeckList &other) - : name(other.name), + : QObject(), + name(other.name), comments(other.comments), deckHash(other.deckHash) { diff --git a/common/server.h b/common/server.h index 6742f6e2..275891cc 100644 --- a/common/server.h +++ b/common/server.h @@ -97,7 +97,7 @@ protected slots: void externalGameEventContainerReceived(const GameEventContainer &cont, qint64 sessionId); void externalResponseReceived(const Response &resp, qint64 sessionId); - virtual void doSendIslMessage(const IslMessage &msg, int serverId) { } + virtual void doSendIslMessage(const IslMessage & /* msg */, int /* serverId */) { } protected: void prepareDestroy(); void setDatabaseInterface(Server_DatabaseInterface *_databaseInterface); diff --git a/common/server_database_interface.h b/common/server_database_interface.h index df75cd63..798ae9d9 100644 --- a/common/server_database_interface.h +++ b/common/server_database_interface.h @@ -12,18 +12,18 @@ public: : QObject(parent) { } virtual AuthenticationResult checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password, QString &reasonStr, int &secondsLeft) = 0; - virtual bool userExists(const QString &user) { return false; } - virtual QMap getBuddyList(const QString &name) { return QMap(); } - virtual QMap getIgnoreList(const QString &name) { return QMap(); } - virtual bool isInBuddyList(const QString &whoseList, const QString &who) { return false; } - virtual bool isInIgnoreList(const QString &whoseList, const QString &who) { return false; } + virtual bool userExists(const QString & /* user */) { return false; } + virtual QMap getBuddyList(const QString & /* name */) { return QMap(); } + virtual QMap getIgnoreList(const QString & /* name */) { return QMap(); } + virtual bool isInBuddyList(const QString & /* whoseList */, const QString & /* who */) { return false; } + virtual bool isInIgnoreList(const QString & /* whoseList */, const QString & /* who */) { return false; } virtual ServerInfo_User getUserData(const QString &name, bool withId = false) = 0; - virtual void storeGameInformation(const QString &roomName, const QStringList &roomGameTypes, const ServerInfo_Game &gameInfo, const QSet &allPlayersEver, const QSet &allSpectatorsEver, const QList &replayList) { } - virtual DeckList *getDeckFromDatabase(int deckId, int userId) { return 0; } + virtual void storeGameInformation(const QString & /* roomName */, const QStringList & /* roomGameTypes */, const ServerInfo_Game & /* gameInfo */, const QSet & /* allPlayersEver */, const QSet & /* allSpectatorsEver */, const QList & /* replayList */) { } + virtual DeckList *getDeckFromDatabase(int /* deckId */, int /* userId */) { return 0; } - virtual qint64 startSession(const QString &userName, const QString &address) { return 0; } + virtual qint64 startSession(const QString & /* userName */, const QString & /* address */) { return 0; } public slots: - virtual void endSession(qint64 sessionId) { } + virtual void endSession(qint64 /* sessionId */ ) { } public: virtual int getNextGameId() = 0; virtual int getNextReplayId() = 0; @@ -31,7 +31,7 @@ public: virtual void clearSessionTables() { } virtual void lockSessionTables() { } virtual void unlockSessionTables() { } - virtual bool userSessionExists(const QString &userName) { return false; } + virtual bool userSessionExists(const QString & /* userName */) { return false; } }; #endif diff --git a/common/server_player.cpp b/common/server_player.cpp index c25151e8..b9277a2d 100644 --- a/common/server_player.cpp +++ b/common/server_player.cpp @@ -1594,7 +1594,7 @@ Response::ResponseCode Server_Player::cmdRevealCards(const Command_RevealCards & return Response::RespOk; } -Response::ResponseCode Server_Player::cmdChangeZoneProperties(const Command_ChangeZoneProperties &cmd, ResponseContainer &rc, GameEventStorage &ges) +Response::ResponseCode Server_Player::cmdChangeZoneProperties(const Command_ChangeZoneProperties &cmd, ResponseContainer & /* rc */, GameEventStorage &ges) { Server_CardZone *zone = zones.value(QString::fromStdString(cmd.zone_name())); if (!zone) diff --git a/common/server_protocolhandler.h b/common/server_protocolhandler.h index 0cea37ae..98e0f6cc 100644 --- a/common/server_protocolhandler.h +++ b/common/server_protocolhandler.h @@ -49,7 +49,7 @@ protected: AuthenticationResult authState; bool acceptsUserListChanges; bool acceptsRoomListChanges; - virtual void logDebugMessage(const QString &message) { } + virtual void logDebugMessage(const QString & /* message */) { } private: QList messageSizeOverTime, messageCountOverTime; int timeRunning, lastDataReceived; @@ -71,13 +71,13 @@ private: Response::ResponseCode cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc); Response::ResponseCode processSessionCommandContainer(const CommandContainer &cont, ResponseContainer &rc); - virtual Response::ResponseCode processExtendedSessionCommand(int cmdType, const SessionCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } + virtual Response::ResponseCode processExtendedSessionCommand(int /* cmdType */, const SessionCommand & /* cmd */, ResponseContainer & /* rc */) { return Response::RespFunctionNotAllowed; } Response::ResponseCode processRoomCommandContainer(const CommandContainer &cont, ResponseContainer &rc); Response::ResponseCode processGameCommandContainer(const CommandContainer &cont, ResponseContainer &rc); Response::ResponseCode processModeratorCommandContainer(const CommandContainer &cont, ResponseContainer &rc); - virtual Response::ResponseCode processExtendedModeratorCommand(int cmdType, const ModeratorCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } + virtual Response::ResponseCode processExtendedModeratorCommand(int /* cmdType */, const ModeratorCommand & /* cmd */, ResponseContainer & /* rc */) { return Response::RespFunctionNotAllowed; } Response::ResponseCode processAdminCommandContainer(const CommandContainer &cont, ResponseContainer &rc); - virtual Response::ResponseCode processExtendedAdminCommand(int cmdType, const AdminCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } + virtual Response::ResponseCode processExtendedAdminCommand(int /* cmdType */, const AdminCommand & /* cmd */, ResponseContainer & /* rc */) { return Response::RespFunctionNotAllowed; } private slots: void pingClockTimeout(); public slots: diff --git a/oracle/src/oraclewizard.cpp b/oracle/src/oraclewizard.cpp index 96b78145..2a597d45 100644 --- a/oracle/src/oraclewizard.cpp +++ b/oracle/src/oraclewizard.cpp @@ -383,7 +383,7 @@ void SaveSetsPage::initializePage() QMessageBox::critical(this, tr("Error"), tr("No set has been imported.")); } -void SaveSetsPage::updateTotalProgress(int cardsImported, int setIndex, const QString &setName) +void SaveSetsPage::updateTotalProgress(int cardsImported, int /* setIndex */, const QString &setName) { if (setName.isEmpty()) { messageLog->append("" + tr("Import finished: %1 cards.").arg(wizard()->importer->getCardList().size()) + ""); diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp index 37b750f4..c5bf9cde 100644 --- a/servatrice/src/main.cpp +++ b/servatrice/src/main.cpp @@ -37,6 +37,23 @@ RNG_Abstract *rng; ServerLogger *logger; QThread *loggerThread; +/* Prototypes */ + +void testRNG(); +void testHash(); +#if QT_VERSION < 0x050000 +void myMessageOutput(QtMsgType type, const char *msg); +void myMessageOutput2(QtMsgType type, const char *msg); +#else +void myMessageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg); +void myMessageOutput2(QtMsgType type, const QMessageLogContext &, const QString &msg); +#endif +#ifdef Q_OS_UNIX +void sigSegvHandler(int sig); +#endif + +/* Implementations */ + void testRNG() { const int n = 500000; diff --git a/servatrice/src/passwordhasher.cpp b/servatrice/src/passwordhasher.cpp index 785034b4..0d8cda36 100644 --- a/servatrice/src/passwordhasher.cpp +++ b/servatrice/src/passwordhasher.cpp @@ -18,12 +18,15 @@ QString PasswordHasher::computeHash(const QString &password, const QString &salt QByteArray passwordBuffer = (salt + password).toUtf8(); int hashLen = gcry_md_get_algo_dlen(algo); - char hash[hashLen], tmp[hashLen]; + char *hash = new char[hashLen], *tmp = new char[hashLen]; gcry_md_hash_buffer(algo, hash, passwordBuffer.data(), passwordBuffer.size()); for (int i = 1; i < rounds; ++i) { memcpy(tmp, hash, hashLen); gcry_md_hash_buffer(algo, hash, tmp, hashLen); } - return salt + QString(QByteArray(hash, hashLen).toBase64()); + QString hashedPass = salt + QString(QByteArray(hash, hashLen).toBase64()); + delete[] tmp; + delete[] hash; + return hashedPass; }