From: Enar Väikene Date: Tue, 5 Jun 2012 06:23:10 +0000 (+0300) Subject: Merge branch 'master' of ssh://vaikene.net/var/gitpub/evaf X-Git-Url: https://vaikene.ee/gitweb/highlight.css?a=commitdiff_plain;h=6fb7963d523b32158fc3d4b88a933825f8535a0b;hp=8ca71a4ced13c50ecd1e3b9d9c15546ac0d48045;p=evaf Merge branch 'master' of ssh://vaikene.net/var/gitpub/evaf --- diff --git a/CMakeWin.txt b/CMakeWin.txt index 6e43b9a..95a9500 100644 --- a/CMakeWin.txt +++ b/CMakeWin.txt @@ -1,3 +1,18 @@ # Extra rules for Windows builds -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:wchar_t-") +if(MINGW) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + + # gcc options for release and debug builds + IF(CMAKE_BUILD_TYPE STREQUAL Release) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") + ELSE(CMAKE_BUILD_TYPE STREQUAL Release) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") + ENDIF(CMAKE_BUILD_TYPE STREQUAL Release) + + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") + +else(MINGW) + # Assume a Microsoft Visual C++ compiler + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:wchar_t-") +endif(MINGW) diff --git a/src/apps/FileFinder/Engine/CMakeLists.txt b/src/apps/FileFinder/Engine/CMakeLists.txt index 4e9e9ba..af9c24a 100644 --- a/src/apps/FileFinder/Engine/CMakeLists.txt +++ b/src/apps/FileFinder/Engine/CMakeLists.txt @@ -26,9 +26,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/apps/FileFinder/GUI/CMakeLists.txt b/src/apps/FileFinder/GUI/CMakeLists.txt index cdc585f..56b5db4 100644 --- a/src/apps/FileFinder/GUI/CMakeLists.txt +++ b/src/apps/FileFinder/GUI/CMakeLists.txt @@ -26,9 +26,9 @@ set(MOC_HDRS #) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_add_resources(RCC_SRCS ${RCCS}) diff --git a/src/apps/PswGen/CLI/CMakeLists.txt b/src/apps/PswGen/CLI/CMakeLists.txt index 63f57a7..ef8ee22 100644 --- a/src/apps/PswGen/CLI/CMakeLists.txt +++ b/src/apps/PswGen/CLI/CMakeLists.txt @@ -22,9 +22,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/apps/PswGen/CLI/cli.cpp b/src/apps/PswGen/CLI/cli.cpp index cd18b85..51ea2b6 100644 --- a/src/apps/PswGen/CLI/cli.cpp +++ b/src/apps/PswGen/CLI/cli.cpp @@ -3,7 +3,7 @@ * @brief Command line interface for the PswGen application * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -159,7 +160,10 @@ void Module::generatePassword() { QString masterPassword; QString appName; + QString suffix; int passwordLength = 0; + uint flags = 0; + int alnum = -1; // Process command-line arguments QStringList args = QCoreApplication::arguments(); @@ -170,6 +174,18 @@ void Module::generatePassword() masterPassword = arg.at(1); else if (QRegExp("-[-]?n(ame)?").exactMatch(arg.at(0)) && arg.size() > 1) appName = arg.at(1); + else if (QRegExp("-[-]?s(uffix)?").exactMatch(arg.at(0)) && arg.size() > 1) + suffix = arg.at(1); + else if (QRegExp("-[-]?a(lphanumeric)?").exactMatch(arg.at(0))) { + if (arg.size() > 1) { + if (Common::isTrue(arg.at(1))) + alnum = 1; + else if (Common::isFalse(arg.at(1))) + alnum = 0; + } + else + alnum = 1; + } else if (QRegExp("-[-]?l(ength)?").exactMatch(arg.at(0)) && arg.size() > 1) { bool ok; int t = arg.at(1).toInt(&ok); @@ -181,6 +197,14 @@ void Module::generatePassword() } } + // Set flags + if (alnum != -1) { + if (alnum == 1) + flags |= uint(iGenerator::ALPHANUMERIC); + else + flags &= ~uint(iGenerator::ALPHANUMERIC); + } + QTextStream cin(stdin); QTextStream cout(stdout); @@ -199,8 +223,14 @@ void Module::generatePassword() QExplicitlySharedDataPointer data; if (mStorage) { data = mStorage->query(appName); - if (data && passwordLength == 0) - passwordLength = data->length(); + if (data) { + if (passwordLength == 0) + passwordLength = data->length(); + if (suffix.isEmpty()) + suffix = data->suffix(); + if (alnum == -1) + flags = data->flags(); + } } // If the length argument is still not initialized, use the default length value @@ -208,15 +238,17 @@ void Module::generatePassword() passwordLength = DefaultPasswordLength; // Generate password - QString password = mGenerator->generatePassword(appName, masterPassword, passwordLength); + QString password = mGenerator->generatePassword(appName + suffix, masterPassword, passwordLength); cout << "Generated password : " << password << endl; // Store arguments for this password if (mStorage) { if (!data) - data = new Storage::Data(appName, passwordLength); - else + data = new Storage::Data(appName, suffix, passwordLength); + else { + data->setSuffix(suffix); data->setLength(passwordLength); + } mStorage->save(appName, data); } } diff --git a/src/apps/PswGen/CLI/version.h b/src/apps/PswGen/CLI/version.h index 348e78a..eb872f5 100644 --- a/src/apps/PswGen/CLI/version.h +++ b/src/apps/PswGen/CLI/version.h @@ -3,7 +3,7 @@ * @brief Version information for eVaf modules * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -25,12 +25,12 @@ /** * Module/library version number in the form major,minor,release,build */ -#define VER_FILE_VERSION 0,1,1,2 +#define VER_FILE_VERSION 0,2,1,3 /** * Module/library version number in the string format (shall end with \0) */ -#define VER_FILE_VERSION_STR "0.1.1.2\0" +#define VER_FILE_VERSION_STR "0.2.1.3\0" /** * Module/library name (shall end with \0) diff --git a/src/apps/PswGen/GUI/CMakeLists.txt b/src/apps/PswGen/GUI/CMakeLists.txt index bea3cd6..561060e 100644 --- a/src/apps/PswGen/GUI/CMakeLists.txt +++ b/src/apps/PswGen/GUI/CMakeLists.txt @@ -21,9 +21,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/apps/PswGen/GUI/gui.cpp b/src/apps/PswGen/GUI/gui.cpp index 1ced109..9ab2645 100644 --- a/src/apps/PswGen/GUI/gui.cpp +++ b/src/apps/PswGen/GUI/gui.cpp @@ -3,7 +3,7 @@ * @brief GUI for the PswGen application * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -111,24 +111,35 @@ bool Module::init(QString const & args) g->addWidget(wName, 1, 1, 1, 2); panel->setFocusProxy(wName); - l = new QLabel(tr("&Length of the password:", VER_MODULE_NAME_STR)); + l = new QLabel(tr("&Suffix:", VER_MODULE_NAME_STR)); l->setAlignment(Qt::AlignRight); g->addWidget(l, 2, 0); + wSuffix = new QLineEdit; + l->setBuddy(wSuffix); + g->addWidget(wSuffix, 2, 1, 1, 2); + + l = new QLabel(tr("&Length of the password:", VER_MODULE_NAME_STR)); + l->setAlignment(Qt::AlignRight); + g->addWidget(l, 3, 0); + wLength = new QSpinBox; l->setBuddy(wLength); wLength->setRange(0, mGenerator->maxLength()); wLength->setValue(DefaultPasswordLength); wLength->setSpecialValueText(tr("Maximum", VER_MODULE_NAME_STR)); - g->addWidget(wLength, 2, 1); + g->addWidget(wLength, 3, 1); + + wAlNum = new QCheckBox(tr("&Alpha-Numeric only", VER_MODULE_NAME_STR)); + g->addWidget(wAlNum, 3, 2); l = new QLabel(tr("Password:")); l->setAlignment(Qt::AlignRight); - g->addWidget(l, 3, 0); + g->addWidget(l, 4, 0); wPassword = new QLineEdit; wPassword->setReadOnly(true); - g->addWidget(wPassword, 3, 1, 1, 2); + g->addWidget(wPassword, 4, 1, 1, 2); v->addStretch(); @@ -176,8 +187,11 @@ void Module::textChanged(QString const &) wGenerate->setDisabled(wMasterPassword->text().isEmpty() || wName->text().isEmpty()); if (!wName->text().isEmpty() && mStorage) { QExplicitlySharedDataPointer data = mStorage->query(wName->text()); - if (data) + if (data) { wLength->setValue(data->length()); + wSuffix->setText(data->suffix()); + wAlNum->setChecked(data->flags() & uint(iGenerator::ALPHANUMERIC)); + } } } @@ -185,14 +199,27 @@ void Module::generateClicked() { if (wMasterPassword->text().isEmpty() || wName->text().isEmpty()) return; - wPassword->setText(mGenerator->generatePassword(wName->text(), wMasterPassword->text(), wLength->value())); + uint flags = 0; + if (wAlNum->isChecked()) + flags |= iGenerator::ALPHANUMERIC; + wPassword->setText(mGenerator->generatePassword(wName->text() + wSuffix->text(), + wMasterPassword->text(), + wLength->value(), + flags)); wCopy->setEnabled(true); if (mStorage) { QExplicitlySharedDataPointer data = mStorage->query(wName->text()); - if (!data) - data = new Storage::Data(wName->text(), wLength->value()); - else + if (!data) { + data = new Storage::Data(wName->text(), wSuffix->text(), wLength->value()); + } + else { + data->setSuffix(wSuffix->text()); data->setLength(wLength->value()); + if (wAlNum->isChecked()) + data->setFlags(data->flags() | iGenerator::ALPHANUMERIC); + else + data->setFlags(data->flags() & ~uint(iGenerator::ALPHANUMERIC)); + } mStorage->save(wName->text(), data); } } diff --git a/src/apps/PswGen/GUI/gui.h b/src/apps/PswGen/GUI/gui.h index d3c89d4..246b556 100644 --- a/src/apps/PswGen/GUI/gui.h +++ b/src/apps/PswGen/GUI/gui.h @@ -3,7 +3,7 @@ * @brief GUI for the PswGen application * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -28,6 +28,7 @@ class QLineEdit; class QSpinBox; class QPushButton; +class QCheckBox; namespace eVaf { namespace PswGen { @@ -84,9 +85,11 @@ private: // Members eVaf::PswGen::iStorage * mStorage; /// Widgets on the screen - QLineEdit * wName; QLineEdit * wMasterPassword; + QLineEdit * wName; + QLineEdit * wSuffix; QSpinBox * wLength; + QCheckBox * wAlNum; QLineEdit * wPassword; QPushButton * wGenerate; QPushButton * wCopy; diff --git a/src/apps/PswGen/GUI/version.h b/src/apps/PswGen/GUI/version.h index 8f3e970..b9003fd 100644 --- a/src/apps/PswGen/GUI/version.h +++ b/src/apps/PswGen/GUI/version.h @@ -3,7 +3,7 @@ * @brief Version information for eVaf modules * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -25,12 +25,12 @@ /** * Module/library version number in the form major,minor,release,build */ -#define VER_FILE_VERSION 0,1,5,6 +#define VER_FILE_VERSION 0,2,1,7 /** * Module/library version number in the string format (shall end with \0) */ -#define VER_FILE_VERSION_STR "0.1.5.6\0" +#define VER_FILE_VERSION_STR "0.2.1.7\0" /** * Module/library name (shall end with \0) diff --git a/src/apps/PswGen/Generator/CMakeLists.txt b/src/apps/PswGen/Generator/CMakeLists.txt index 9325fe9..3d7c7eb 100644 --- a/src/apps/PswGen/Generator/CMakeLists.txt +++ b/src/apps/PswGen/Generator/CMakeLists.txt @@ -25,9 +25,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/apps/PswGen/Generator/module.cpp b/src/apps/PswGen/Generator/module.cpp index e19933b..9e24e56 100644 --- a/src/apps/PswGen/Generator/module.cpp +++ b/src/apps/PswGen/Generator/module.cpp @@ -3,7 +3,7 @@ * @brief Implementation of the iGenerator interface * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -94,7 +94,17 @@ QString GeneratorImpl::generatePassword(QString const & name, QString const & ma hash.addData(inputString); QByteArray result = hash.result().toBase64(); if (length > 0) - return result.left(length); - else - return result; + result.resize(length); + + if (flags & uint(ALPHANUMERIC)) { + // Convert all characters to alpha-numeric + for (int i = 0; i < result.size(); ++i) { + unsigned char c = result.at(i); + while (isalnum(c) == 0) + c++; + result[i] = c; + } + } + + return result; } diff --git a/src/apps/PswGen/Generator/version.h b/src/apps/PswGen/Generator/version.h index b118cdc..c2e78d0 100644 --- a/src/apps/PswGen/Generator/version.h +++ b/src/apps/PswGen/Generator/version.h @@ -3,7 +3,7 @@ * @brief Version information for eVaf modules * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -25,12 +25,12 @@ /** * Module/library version number in the form major,minor,release,build */ -#define VER_FILE_VERSION 0,1,1,1 +#define VER_FILE_VERSION 0,1,2,2 /** * Module/library version number in the string format (shall end with \0) */ -#define VER_FILE_VERSION_STR "0.1.1.1\0" +#define VER_FILE_VERSION_STR "0.1.2.2\0" /** * Module/library name (shall end with \0) diff --git a/src/apps/PswGen/Storage/CMakeLists.txt b/src/apps/PswGen/Storage/CMakeLists.txt index 13722c3..2169469 100644 --- a/src/apps/PswGen/Storage/CMakeLists.txt +++ b/src/apps/PswGen/Storage/CMakeLists.txt @@ -26,9 +26,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/apps/PswGen/Storage/istorage.h b/src/apps/PswGen/Storage/istorage.h index 48226d0..e9abef9 100644 --- a/src/apps/PswGen/Storage/istorage.h +++ b/src/apps/PswGen/Storage/istorage.h @@ -3,7 +3,7 @@ * @brief Interface for password storage modules * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -43,14 +43,16 @@ public: : QSharedData() , mModified(false) , mName(name) + , mSuffix() , mLength(0) , mFlags(0) {} - Data(QString const & name, int l, uint f = 0) + Data(QString const & name, QString const & suffix, int l, uint f = 0) : QSharedData() , mModified(false) , mName(name) + , mSuffix(suffix) , mLength(l) , mFlags(f) {} @@ -58,6 +60,16 @@ public: /// Name of the password inline QString const & name() const { return mName; } + /// Optional suffix added to the name + inline QString const & suffix() const { return mSuffix; } + void setSuffix(QString const & suffix) + { + if (suffix != mSuffix) { + mSuffix = suffix; + mModified = true; + } + } + /// Length of the generated password inline int length() const { return mLength; } inline void setLength(int value) @@ -89,6 +101,7 @@ private: bool mModified; QString mName; + QString mSuffix; int mLength; uint mFlags; diff --git a/src/apps/PswGen/Storage/module.cpp b/src/apps/PswGen/Storage/module.cpp index b7676ab..12fda42 100644 --- a/src/apps/PswGen/Storage/module.cpp +++ b/src/apps/PswGen/Storage/module.cpp @@ -3,7 +3,7 @@ * @brief Implementation of the iStorage interface * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -150,8 +150,8 @@ bool StorageImpl::save(QString const & name, QExplicitlySharedDataPointermodified()) { QSqlQuery q(mDb); - if (!q.exec(QString("UPDATE data SET length = \'%1\', flags = \'%2\' WHERE name = \'%3\';") - .arg(data->length()).arg(data->flags()).arg(name))) { + if (!q.exec(QString("UPDATE data SET suffix = \'%1\', length = \'%2\', flags = \'%3\' WHERE name = \'%4\';") + .arg(data->suffix()).arg(data->length()).arg(data->flags()).arg(name))) { QSqlError err = mDb.lastError(); EVAF_ERROR("Failed to update \'%s\' : %s", qPrintable(name), qPrintable(err.text())); return false; @@ -161,8 +161,8 @@ bool StorageImpl::save(QString const & name, QExplicitlySharedDataPointerlength()) + if (!q.exec(QString("INSERT INTO data (name, suffix, length, flags) VALUES (\'%1\', \'%2\', %3, %4);") + .arg(name).arg(data->suffix()).arg(data->length()) .arg(int(data->flags())))) { QSqlError err = mDb.lastError(); EVAF_ERROR("Failed to insert \'%s\' : %s", qPrintable(name), qPrintable(err.text())); @@ -210,11 +210,13 @@ bool StorageImpl::createTables() return false; } - if (q.isActive() && q.isSelect() && q.first()) - return true; // We already have a table called 'data' + if (q.isActive() && q.isSelect() && q.first()) { + // Check if the table needs to be upgraded + return upgradeTables(); + } // Create the 'data' table - if (!q.exec("CREATE TABLE data (name text primary key not null, length integer, flags integer);")) { + if (!q.exec("CREATE TABLE data (name text primary key not null, suffix text, length integer, flags integer);")) { QSqlError err = mDb.lastError(); EVAF_ERROR("Failed to create table \'data\' : %s", qPrintable(err.text())); return false; @@ -223,10 +225,29 @@ bool StorageImpl::createTables() return true; } +bool StorageImpl::upgradeTables() +{ + QSqlQuery q(mDb); + + // Check if the 'suffix' column exists + if (q.exec("SELECT suffix from data;")) { + return true; + } + + // Add the 'suffix' columnt + if (!q.exec("ALTER TABLE data ADD COLUMN suffix TEXT;")) { + QSqlError err = mDb.lastError(); + EVAF_ERROR("Failed to upgrade table \'data\' : %s", qPrintable(err.text())); + return false; + } + + return true; +} + bool StorageImpl::loadData() { QSqlQuery q(mDb); - if (!q.exec("SELECT name, length, flags FROM data;")) { + if (!q.exec("SELECT name, suffix, length, flags FROM data;")) { QSqlError err = mDb.lastError(); EVAF_ERROR("Failed to query database : %s", qPrintable(err.text())); return false; @@ -234,7 +255,8 @@ bool StorageImpl::loadData() while (q.next()) { QString name = q.value(0).toString(); - QExplicitlySharedDataPointer data(new Storage::Data(name, q.value(1).toInt(), uint(q.value(2).toInt()))); + QExplicitlySharedDataPointer data( + new Storage::Data(name, q.value(1).toString(), q.value(2).toInt(), uint(q.value(3).toInt()))); mData.insert(name, data); } diff --git a/src/apps/PswGen/Storage/module.h b/src/apps/PswGen/Storage/module.h index 95b935f..7f53b26 100644 --- a/src/apps/PswGen/Storage/module.h +++ b/src/apps/PswGen/Storage/module.h @@ -3,7 +3,7 @@ * @brief Implementation of the iStorage interface * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -139,6 +139,16 @@ private: // Methods */ bool createTables(); + /** + * Upgrades database tables if necessary + * @return True if ok; false if failed + * + * This function checks if database tables need to upgraded and + * performs the upgrade without a loss of data if possible. + * Returns false if upgrade is not possible or fails. + */ + bool upgradeTables(); + /** * Loads data from the database * @return True if ok; false if failed diff --git a/src/apps/PswGen/Storage/version.h b/src/apps/PswGen/Storage/version.h index 2712b36..cbcf67f 100644 --- a/src/apps/PswGen/Storage/version.h +++ b/src/apps/PswGen/Storage/version.h @@ -3,7 +3,7 @@ * @brief Version information for eVaf modules * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2012 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -25,12 +25,12 @@ /** * Module/library version number in the form major,minor,release,build */ -#define VER_FILE_VERSION 0,1,2,2 +#define VER_FILE_VERSION 0,2,1,3 /** * Module/library version number in the string format (shall end with \0) */ -#define VER_FILE_VERSION_STR "0.1.2.2\0" +#define VER_FILE_VERSION_STR "0.2.1.3\0" /** * Module/library name (shall end with \0) diff --git a/src/libs/Common/CMakeLists.txt b/src/libs/Common/CMakeLists.txt index a9916b4..83affd4 100644 --- a/src/libs/Common/CMakeLists.txt +++ b/src/libs/Common/CMakeLists.txt @@ -45,9 +45,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/libs/Common/logger.cpp b/src/libs/Common/logger.cpp index bb88073..358b314 100644 --- a/src/libs/Common/logger.cpp +++ b/src/libs/Common/logger.cpp @@ -421,7 +421,11 @@ QString Logger::printf(char const * const fmt, ...) const va_list ap; #ifdef Q_OS_WIN32 va_start(ap, fmt); +# ifdef Q_CC_GNU + vsnprintf(str, sizeof(str), fmt, ap); +# else _vsnprintf_s(str, sizeof(str), _TRUNCATE, fmt, ap); +# endif va_end(ap); #else ::va_start(ap, fmt); diff --git a/src/libs/Gui/CMakeLists.txt b/src/libs/Gui/CMakeLists.txt index 19fd172..8821dc1 100644 --- a/src/libs/Gui/CMakeLists.txt +++ b/src/libs/Gui/CMakeLists.txt @@ -24,9 +24,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/libs/Plugins/CMakeLists.txt b/src/libs/Plugins/CMakeLists.txt index 0aadd65..edcfae6 100644 --- a/src/libs/Plugins/CMakeLists.txt +++ b/src/libs/Plugins/CMakeLists.txt @@ -29,9 +29,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/libs/Plugins/pluginmanager.h b/src/libs/Plugins/pluginmanager.h index f79193c..c9806af 100644 --- a/src/libs/Plugins/pluginmanager.h +++ b/src/libs/Plugins/pluginmanager.h @@ -58,7 +58,11 @@ namespace Internal { inline QString expandPluginName(QString const & name) { #ifdef Q_OS_WIN32 +# ifdef Q_CC_MINGW + return "lib" + name + ".dll"; +# else return name + ".dll"; +# endif #elif defined Q_OS_LINUX return "lib" + name + ".so"; #else diff --git a/src/main/CLI/CMakeLists.txt b/src/main/CLI/CMakeLists.txt index d6a5b14..a3983a6 100644 --- a/src/main/CLI/CMakeLists.txt +++ b/src/main/CLI/CMakeLists.txt @@ -23,9 +23,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc cli.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/main/GUI/CMakeLists.txt b/src/main/GUI/CMakeLists.txt index 8483bb5..367e2f5 100644 --- a/src/main/GUI/CMakeLists.txt +++ b/src/main/GUI/CMakeLists.txt @@ -38,9 +38,9 @@ set(MOC_HDRS #) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc gui.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_add_resources(RCC_SRCS ${RCCS}) diff --git a/src/plugins/LogView/CMakeLists.txt b/src/plugins/LogView/CMakeLists.txt index 8f68dd1..ac0d07f 100644 --- a/src/plugins/LogView/CMakeLists.txt +++ b/src/plugins/LogView/CMakeLists.txt @@ -26,9 +26,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/plugins/SdiWindow/CMakeLists.txt b/src/plugins/SdiWindow/CMakeLists.txt index c87eed6..cd0a8c0 100644 --- a/src/plugins/SdiWindow/CMakeLists.txt +++ b/src/plugins/SdiWindow/CMakeLists.txt @@ -26,9 +26,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS}) diff --git a/src/plugins/Test/CMakeLists.txt b/src/plugins/Test/CMakeLists.txt index 35393d7..bbf03ba 100644 --- a/src/plugins/Test/CMakeLists.txt +++ b/src/plugins/Test/CMakeLists.txt @@ -23,9 +23,9 @@ set(MOC_HDRS ) # Version info resource file for Windows builds -if(WIN32) +if(WIN32 AND NOT MINGW) set(SRCS ${SRCS} version.rc) -endif(WIN32) +endif(WIN32 AND NOT MINGW) qt4_wrap_cpp(MOC_SRCS ${MOC_HDRS})