aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2018-12-18 12:43:42 -0500
committerScott Murray <scott.murray@konsulko.com>2019-01-17 21:24:17 +0000
commita33cbe3e083318a4f48d44a645ee24447536e3a6 (patch)
treeb3603fa28b97b9ccd9989365747a107268cdcaa1 /src/util.cpp
parent1d0966212b15c0481b506ba35374935601b0c861 (diff)
Reusing the windowmanager on the cluster demo platform requires modifications to the layers.json, areas.json, etc. configuration files. To allow this without breaking potential shared package feeds by building two versions, add a mechanism to allow over-riding the configuration files present in the widget with files in the directory /etc/xdg/windowmanager. Affected code has been refactored to use a new common configuration file path determination helper function to reduce duplication. Cherry-picked from flounder branch with rework to accommodate changes in master branch. Bug-AGL: SPEC-1805 Change-Id: Ib0014756fe684167950ddac534ea2363a1b6e7c3 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp
index eb6425d..f26a4a1 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
+#include <fstream>
#include <unistd.h>
@@ -140,3 +142,37 @@ void _DUMP(enum LOG_LEVEL level, const char *log, ...)
va_end(args);
free(message);
}
+
+std::string get_file_path(const char *file_name, const char *root_path)
+{
+ char const *default_base_path = root_path;
+ std::string path("");
+
+ if(!file_name) {
+ return path;
+ }
+
+ if (!default_base_path) {
+ default_base_path = getenv("AFM_APP_INSTALL_DIR");
+ if (!default_base_path) {
+ HMI_ERROR("AFM_APP_INSTALL_DIR is not defined");
+ }
+ }
+ if (default_base_path) {
+ path = default_base_path;
+ path.append("/etc/");
+ path.append(file_name);
+ }
+
+ // Check for over-ride in /etc/xdg/windowmanager
+ std::string override_path("/etc/xdg/windowmanager/");
+ override_path.append(file_name);
+ std::ifstream i(override_path);
+ if (i.good()) {
+ path = override_path;
+ }
+ i.close();
+
+ HMI_INFO("Using %s", path.c_str());
+ return path;
+}