summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--policy_manager/policy_manager.cpp30
-rw-r--r--src/util.cpp36
-rw-r--r--src/util.hpp4
-rw-r--r--src/wm_layer_control.cpp11
4 files changed, 49 insertions, 32 deletions
diff --git a/policy_manager/policy_manager.cpp b/policy_manager/policy_manager.cpp
index 1c6995b..90256bb 100644
--- a/policy_manager/policy_manager.cpp
+++ b/policy_manager/policy_manager.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018 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.
@@ -729,20 +730,7 @@ int PolicyManager::setStateTransitionProcessToSystemd(int event_id, uint64_t del
int PolicyManager::loadRoleDb()
{
- std::string file_name;
-
- // Get afm application installed dir
- char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR");
- HMI_DEBUG("afm_app_install_dir:%s", afm_app_install_dir);
-
- if (!afm_app_install_dir)
- {
- HMI_ERROR("AFM_APP_INSTALL_DIR is not defined");
- }
- else
- {
- file_name = std::string(afm_app_install_dir) + std::string("/etc/roles.db");
- }
+ std::string file_name(get_file_path("roles.db"));
// Load roles.db
json_object *json_obj;
@@ -832,19 +820,7 @@ int PolicyManager::loadStateDb()
{
HMI_DEBUG("Call");
- // Get afm application installed dir
- char const *afm_app_install_dir = getenv("AFM_APP_INSTALL_DIR");
- HMI_DEBUG("afm_app_install_dir:%s", afm_app_install_dir);
-
- std::string file_name;
- if (!afm_app_install_dir)
- {
- HMI_ERROR("AFM_APP_INSTALL_DIR is not defined");
- }
- else
- {
- file_name = std::string(afm_app_install_dir) + std::string("/etc/states.db");
- }
+ std::string file_name(get_file_path("states.db"));
// Load states.db
json_object *json_obj;
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;
+}
diff --git a/src/util.hpp b/src/util.hpp
index 65b29e0..36e556c 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -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.
@@ -117,4 +118,7 @@ class rectangle
long _bottom;
};
+// Configuration file path helper
+std::string get_file_path(const char *file_name, const char *root_path = NULL);
+
#endif // !WM_UTIL_HPP
diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp
index 17443de..6c9aa6c 100644
--- a/src/wm_layer_control.cpp
+++ b/src/wm_layer_control.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.
@@ -21,8 +22,8 @@
#include "request.hpp"
#include "json_helper.hpp"
-#define LC_AREA_PATH "/etc/areas.json"
-#define LC_LAYER_SETTING_PATH "/etc/layers.json"
+#define LC_AREA_FILE "areas.json"
+#define LC_LAYER_SETTING_FILE "layers.json"
#define LC_DEFAULT_AREA "fullscreen"
#define BACK_GROUND_LAYER "BackGroundLayer"
@@ -58,8 +59,8 @@ static void layerCallback_static(t_ilm_layer layer,
LayerControl::LayerControl(const std::string& root)
{
- string area_path = root + LC_AREA_PATH;
- string layer_path= root + LC_LAYER_SETTING_PATH;
+ string area_path(get_file_path(LC_AREA_FILE, root.c_str()));
+ string layer_path(get_file_path(LC_LAYER_SETTING_FILE, root.c_str()));
// load layers.setting.json
WMError ret = this->loadLayerSetting(layer_path);
assert(ret == WMError::SUCCESS);
@@ -640,4 +641,4 @@ bool LayerControl::moveForeGround(const shared_ptr<WMClient> client)
return ret;
}
-} // namespace wm \ No newline at end of file
+} // namespace wm