From c056e3a1f99736ace2323bf73c12f644b5fdf299 Mon Sep 17 00:00:00 2001 From: Mupceet Date: Wed, 11 May 2022 15:29:58 +0800 Subject: [PATCH] add: ueventd parse config in vendor Signed-off-by: Mupceet --- ueventd/BUILD.gn | 8 +++++++- ueventd/ueventd_main.c | 22 +++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ueventd/BUILD.gn b/ueventd/BUILD.gn index b2997872..55755f7c 100644 --- a/ueventd/BUILD.gn +++ b/ueventd/BUILD.gn @@ -32,6 +32,7 @@ if (defined(ohos_lite)) { include_dirs = [ "//third_party/bounds_checking_function/include", + "//base/startup/init_lite/services/include/param", "//base/startup/init_lite/services/log", "//base/startup/init_lite/interfaces/innerkits/include", "//base/startup/init_lite/services/include", @@ -41,6 +42,8 @@ if (defined(ohos_lite)) { deps = [ "//base/startup/init_lite/services/log:init_log", + "//base/startup/init_lite/services/param:param_client", + "//base/startup/init_lite/services/utils:libinit_tools", "//third_party/bounds_checking_function:libsec_static", ] } @@ -120,7 +123,10 @@ if (defined(ohos_lite)) { "//base/startup/init_lite/interfaces/innerkits/include", ] deps = service_ueventd_deps - deps += [ "//base/startup/init_lite/interfaces/innerkits:libbegetutil" ] + deps += [ + "//base/startup/init_lite/interfaces/innerkits:libbegetutil", + "//base/startup/init_lite/services/param:param_client", + ] cflags = [] if (build_selinux) { diff --git a/ueventd/ueventd_main.c b/ueventd/ueventd_main.c index 1c1beb54..8a82a13b 100644 --- a/ueventd/ueventd_main.c +++ b/ueventd/ueventd_main.c @@ -13,13 +13,16 @@ * limitations under the License. */ +#include #include #include "ueventd.h" #include "ueventd_read_cfg.h" #include "ueventd_socket.h" #define INIT_LOG_TAG "ueventd" #include "init_log.h" +#include "init_param.h" #include "init_socket.h" +#include "securec.h" static void PollUeventdSocketTimeout(int ueventSockFd) { @@ -46,7 +49,24 @@ static void PollUeventdSocketTimeout(int ueventSockFd) int main(int argc, char **argv) { - char *ueventdConfigs[] = {"/etc/ueventd.config", NULL}; + char *vendorConfig = NULL; + do { + char hardware[CMDLINE_VALUE_LEN_MAX] = {0}; + unsigned int buffLen = (unsigned int)CMDLINE_VALUE_LEN_MAX; + int ret = SystemReadParam("ohos.boot.hardware", hardware, &buffLen); + if (ret != 0) { + INIT_LOGE("Failed to get hardware parameter value"); + break; + } + char configFile[PATH_MAX] = {0}; + ret = snprintf_s(configFile, PATH_MAX, PATH_MAX -1, "/vendor/etc/ueventd.%s.config", hardware); + if (ret < 0) { + INIT_LOGE("Failed to format vendor config file path"); + break; + } + vendorConfig = configFile; + } while (0); + char *ueventdConfigs[] = {"/etc/ueventd.config", vendorConfig, NULL}; int i = 0; while (ueventdConfigs[i] != NULL) { ParseUeventdConfigFile(ueventdConfigs[i++]); -- GitLab