diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 37fd5c2f..805f1600 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -3,6 +3,9 @@ #include #include #include +#include +#include +#include #include #include @@ -226,20 +229,32 @@ RCoreLocked CutterCore::core() return RCoreLocked(this); } +QVector CutterCore::getCutterRCDirectories() const +{ + QVector result; + result.push_back(QDir::home()); + QStringList locations = QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation); + for (auto &location : locations) { + result.push_back(QDir(location)); + } + return result; +} + void CutterCore::loadCutterRC() { CORE_LOCK(); - auto home = QDir::home(); - if (!home.exists()) { - return; + + const auto result = getCutterRCDirectories(); + for(auto &dir : result){ + if(!dir.exists())continue; + auto cutterRCFileInfo = QFileInfo(dir, ".cutterrc"); + auto path = cutterRCFileInfo.absoluteFilePath(); + if (!cutterRCFileInfo.isFile()) { + continue; + } + qInfo() << "Loading initialization file from" << path; + r_core_cmd_file(core, path.toUtf8().constData()); } - auto cutterRCFileInfo = QFileInfo(home, ".cutterrc"); - if (!cutterRCFileInfo.isFile()) { - return; - } - auto path = cutterRCFileInfo.absoluteFilePath(); - qInfo() << "Loading" << path; - r_core_cmd_file(core, path.toUtf8().constData()); } diff --git a/src/core/Cutter.h b/src/core/Cutter.h index 71db856f..d6f09a0b 100644 --- a/src/core/Cutter.h +++ b/src/core/Cutter.h @@ -14,6 +14,7 @@ #include #include #include +#include class AsyncTaskManager; class BasicInstructionHighlighter; @@ -706,6 +707,8 @@ private: QSharedPointer debugTask; R2TaskDialog *debugTaskDialog; + + QVector getCutterRCDirectories() const; }; class RCoreLocked