summarylogtreecommitdiffstats
path: root/0002-fix-Deduplicate-resources-directories.patch
blob: 273cf8c04a563adb17f70ec035643bf05232b429 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
From 13a35764a80c550824157149bc433d474ef8f901 Mon Sep 17 00:00:00 2001
From: KokaKiwi <kokakiwi+git@kokakiwi.net>
Date: Sat, 11 Jun 2022 23:08:31 +0200
Subject: [PATCH 2/2] fix: Deduplicate resources directories

It seems to actually happens despite xdgpp already doing that...
---
 lib/libimhex/include/hex/helpers/utils.hpp | 11 +++++++++++
 lib/libimhex/source/helpers/fs.cpp         |  5 +++++
 2 files changed, 16 insertions(+)

diff --git a/lib/libimhex/include/hex/helpers/utils.hpp b/lib/libimhex/include/hex/helpers/utils.hpp
index 025b5f76..f6baaaa6 100644
--- a/lib/libimhex/include/hex/helpers/utils.hpp
+++ b/lib/libimhex/include/hex/helpers/utils.hpp
@@ -182,6 +182,17 @@ namespace hex {
         return result;
     }
 
+    template<typename T>
+    void deduplicateVector(std::vector<T> &items) {
+        auto end = items.end();
+
+        for (auto it = items.begin(); it != end; ++it) {
+            end = std::remove(it + 1, end, *it);
+        }
+
+        items.erase(end, items.end());
+    }
+
     std::vector<std::string> splitString(const std::string &string, const std::string &delimiter);
     std::string combineStrings(const std::vector<std::string> &strings, const std::string &delimiter = "");
 
diff --git a/lib/libimhex/source/helpers/fs.cpp b/lib/libimhex/source/helpers/fs.cpp
index 55dc08b2..8e52cfce 100644
--- a/lib/libimhex/source/helpers/fs.cpp
+++ b/lib/libimhex/source/helpers/fs.cpp
@@ -1,4 +1,5 @@
 #include <hex/helpers/fs.hpp>
+#include <hex/helpers/utils.hpp>
 
 #include <hex/api/content_registry.hpp>
 #include <hex/helpers/fs_macos.hpp>
@@ -159,6 +160,8 @@ namespace hex::fs {
         auto additionalDirs = ImHexApi::System::getAdditionalFolderPaths();
         std::copy(additionalDirs.begin(), additionalDirs.end(), std::back_inserter(paths));
 
+        hex::deduplicateVector(paths);
+
         return paths;
     }
 
@@ -175,6 +178,8 @@ namespace hex::fs {
             auto dataDirs = xdg::DataDirs();
             std::copy(dataDirs.begin(), dataDirs.end(), std::back_inserter(paths));
 
+            hex::deduplicateVector(paths);
+
             return paths;
         #endif
     }
-- 
2.37.1