From dca59145f66868e6462a61cc91a8a01fbe67a414 Mon Sep 17 00:00:00 2001 From: Alexander Babikov Date: Mon, 28 Jul 2025 20:25:20 +0500 Subject: [PATCH] Manager: Fix UUID generation for manager config headers Fix different UUIDs generating depending on the whether the path is absolute or relative; they now always match the ones saved inside .cfg files Also reduce some code duplication --- src/qt/qt_util.cpp | 13 +++++++++---- src/qt/qt_util.hpp | 1 + src/qt/qt_vmmanager_system.cpp | 11 +++-------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/qt/qt_util.cpp b/src/qt/qt_util.cpp index 5baaaaacf..bc9b9f1f8 100644 --- a/src/qt/qt_util.cpp +++ b/src/qt/qt_util.cpp @@ -117,11 +117,16 @@ DlgFilter(QStringList extensions, bool last) QString currentUuid() { - auto configPath = QFileInfo(cfg_path).dir().canonicalPath(); - if(!configPath.endsWith("/")) { - configPath.append("/"); + return generateUuid(QString(cfg_path)); +} + +QString generateUuid(const QString &path) +{ + auto dirPath = QFileInfo(path).dir().canonicalPath(); + if(!dirPath.endsWith("/")) { + dirPath.append("/"); } - return QUuid::createUuidV5(QUuid{}, configPath).toString(QUuid::WithoutBraces); + return QUuid::createUuidV5(QUuid{}, dirPath).toString(QUuid::WithoutBraces); } bool compareUuid() diff --git a/src/qt/qt_util.hpp b/src/qt/qt_util.hpp index e0d2648d0..de3457a88 100644 --- a/src/qt/qt_util.hpp +++ b/src/qt/qt_util.hpp @@ -18,6 +18,7 @@ QScreen *screenOfWidget(QWidget *widget); void setWin11RoundedCorners(WId hwnd, bool enable); #endif QString currentUuid(); +QString generateUuid(const QString &path); void storeCurrentUuid(); bool compareUuid(); void generateNewMacAdresses(); diff --git a/src/qt/qt_vmmanager_system.cpp b/src/qt/qt_vmmanager_system.cpp index cd0f9c3ec..bf40e1c36 100644 --- a/src/qt/qt_vmmanager_system.cpp +++ b/src/qt/qt_vmmanager_system.cpp @@ -28,6 +28,7 @@ #include #include #include +#include "qt_util.hpp" #include "qt_vmmanager_system.hpp" // #include "qt_vmmanager_details_section.hpp" #include "qt_vmmanager_detailsection.hpp" @@ -67,16 +68,10 @@ VMManagerSystem::VMManagerSystem(const QString &sysconfig_file) { // that contains the 86box configuration file config_name = config_file.dir().dirName(); // The full path of the directory that contains the 86box configuration file - config_dir = shortened_dir = config_file.dir().path(); + config_dir = shortened_dir = config_file.dir().absolutePath(); process_status = ProcessStatus::Stopped; - // Main 86Box uses usr_path for UUID which includes the trailing slash. - // Make sure to append the slash here so the UUIDs will match - auto uuid_path = config_dir; - if (!uuid_path.endsWith("/")) { - uuid_path.append("/"); - } // In the configuration file the UUID is used as a unique value - uuid = QUuid::createUuidV5(QUuid{}, uuid_path).toString(QUuid::WithoutBraces); + uuid = util::generateUuid(sysconfig_file); // That unique value is used to map the information to each individual system. config_settings = new VMManagerConfig(VMManagerConfig::ConfigType::System, uuid);