summaryrefslogtreecommitdiff
path: root/src/helpers/MiscFunctions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers/MiscFunctions.cpp')
-rw-r--r--src/helpers/MiscFunctions.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index b7285637..b27489ca 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -40,6 +40,28 @@ static const float transforms[][9] = {{
},
};
+std::string absolutePath(const std::string& rawpath, const std::string& currentPath) {
+ auto value = rawpath;
+
+ if (value[0] == '.') {
+ auto currentDir = currentPath.substr(0, currentPath.find_last_of('/'));
+
+ if (value[1] == '.') {
+ auto parentDir = currentDir.substr(0, currentDir.find_last_of('/'));
+ value.replace(0, 2, parentDir);
+ } else {
+ value.replace(0, 1, currentDir);
+ }
+ }
+
+ if (value[0] == '~') {
+ static const char* const ENVHOME = getenv("HOME");
+ value.replace(0, 1, std::string(ENVHOME));
+ }
+
+ return value;
+}
+
void addWLSignal(wl_signal* pSignal, wl_listener* pListener, void* pOwner, std::string ownerString) {
ASSERT(pSignal);
ASSERT(pListener);