From b32e67c434144efed906d1d833c12f40e7315c79 Mon Sep 17 00:00:00 2001 From: JP Meijers Date: Tue, 11 Jun 2024 17:40:11 +0200 Subject: [PATCH 1/3] Read base path for config files from TMPDIR env var --- src/platform/Linux/CHIPLinuxStorage.h | 24 +++--------------------- src/platform/Linux/PosixConfig.cpp | 22 +++++++++++++++++++--- src/platform/Linux/PosixConfig.h | 2 ++ 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/platform/Linux/CHIPLinuxStorage.h b/src/platform/Linux/CHIPLinuxStorage.h index 448459d6962b5d..cf62611e348cc5 100644 --- a/src/platform/Linux/CHIPLinuxStorage.h +++ b/src/platform/Linux/CHIPLinuxStorage.h @@ -37,27 +37,9 @@ #include #include -#ifndef FATCONFDIR -#define FATCONFDIR "/tmp" -#endif - -#ifndef SYSCONFDIR -#define SYSCONFDIR "/tmp" -#endif - -#ifndef LOCALSTATEDIR -#define LOCALSTATEDIR "/tmp" -#endif - -#define CHIP_DEFAULT_FACTORY_PATH \ - FATCONFDIR "/" \ - "chip_factory.ini" -#define CHIP_DEFAULT_CONFIG_PATH \ - SYSCONFDIR "/" \ - "chip_config.ini" -#define CHIP_DEFAULT_DATA_PATH \ - LOCALSTATEDIR "/" \ - "chip_counters.ini" +#define CHIP_DEFAULT_FACTORY_FILE_NAME "chip_factory.ini" +#define CHIP_DEFAULT_CONFIG_FILE_NAME "chip_config.ini" +#define CHIP_DEFAULT_DATA_FILE_NAME "chip_counters.ini" namespace chip { namespace DeviceLayer { diff --git a/src/platform/Linux/PosixConfig.cpp b/src/platform/Linux/PosixConfig.cpp index 61a1fbd4dda6ed..e456845d59984b 100644 --- a/src/platform/Linux/PosixConfig.cpp +++ b/src/platform/Linux/PosixConfig.cpp @@ -453,6 +453,19 @@ bool PosixConfig::ConfigValueExists(Key key) return storage->HasValue(key.Name); } +std::string PosixConfig::GetFilePath(std::string defaultFileName) +{ + // Match what GetFilename in ExamplePersistentStorage.cpp does. + const char * dir = getenv("TMPDIR"); + if (dir == nullptr) + { + dir = "/tmp"; + } + std::string storageDir = dir; + + return storageDir + "/" + defaultFileName; +} + CHIP_ERROR PosixConfig::EnsureNamespace(const char * ns) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -461,17 +474,20 @@ CHIP_ERROR PosixConfig::EnsureNamespace(const char * ns) if (strcmp(ns, kConfigNamespace_ChipFactory) == 0) { storage = &gChipLinuxFactoryStorage; - err = storage->Init(CHIP_DEFAULT_FACTORY_PATH); + std::string filePath = GetFilePath(CHIP_DEFAULT_FACTORY_FILE_NAME); + err = storage->Init(filePath.c_str()); } else if (strcmp(ns, kConfigNamespace_ChipConfig) == 0) { storage = &gChipLinuxConfigStorage; - err = storage->Init(CHIP_DEFAULT_CONFIG_PATH); + std::string filePath = GetFilePath(CHIP_DEFAULT_CONFIG_FILE_NAME); + err = storage->Init(filePath.c_str()); } else if (strcmp(ns, kConfigNamespace_ChipCounters) == 0) { storage = &gChipLinuxCountersStorage; - err = storage->Init(CHIP_DEFAULT_DATA_PATH); + std::string filePath = GetFilePath(CHIP_DEFAULT_DATA_FILE_NAME); + err = storage->Init(filePath.c_str()); } SuccessOrExit(err); diff --git a/src/platform/Linux/PosixConfig.h b/src/platform/Linux/PosixConfig.h index c04d4a9be1093f..1c24f51c00267d 100644 --- a/src/platform/Linux/PosixConfig.h +++ b/src/platform/Linux/PosixConfig.h @@ -24,6 +24,7 @@ #pragma once #include +#include #include #include @@ -111,6 +112,7 @@ class PosixConfig private: static ChipLinuxStorage * GetStorageForNamespace(Key key); + static std::string GetFilePath(std::string defaultFileName); }; struct PosixConfig::Key From 76e44353321fd4f9ffd067d0458599ac74da22c2 Mon Sep 17 00:00:00 2001 From: JP Meijers Date: Wed, 12 Jun 2024 13:47:09 +0200 Subject: [PATCH 2/3] KVS_PATH also use env var Add suggestions by @locnnil --- src/platform/Linux/CHIPPlatformConfig.h | 4 +--- src/platform/Linux/PosixConfig.cpp | 13 +++++++------ src/platform/Linux/PosixConfig.h | 3 ++- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/platform/Linux/CHIPPlatformConfig.h b/src/platform/Linux/CHIPPlatformConfig.h index 9e2832307f27b2..f2ff68e3a012a7 100644 --- a/src/platform/Linux/CHIPPlatformConfig.h +++ b/src/platform/Linux/CHIPPlatformConfig.h @@ -66,6 +66,4 @@ using CHIP_CONFIG_PERSISTED_STORAGE_KEY_TYPE = const char *; // ==================== Security Configuration Overrides ==================== -#ifndef CHIP_CONFIG_KVS_PATH -#define CHIP_CONFIG_KVS_PATH "/tmp/chip_kvs" -#endif // CHIP_CONFIG_KVS_PATH +#define CHIP_DEFAULT_CONFIG_KVS_FILE_NAME "chip_kvs" diff --git a/src/platform/Linux/PosixConfig.cpp b/src/platform/Linux/PosixConfig.cpp index e456845d59984b..7d37ed4d168dc3 100644 --- a/src/platform/Linux/PosixConfig.cpp +++ b/src/platform/Linux/PosixConfig.cpp @@ -97,7 +97,8 @@ ChipLinuxStorage * PosixConfig::GetStorageForNamespace(Key key) CHIP_ERROR PosixConfig::Init() { - return PersistedStorage::KeyValueStoreMgrImpl().Init(CHIP_CONFIG_KVS_PATH); + std::string filePath = GetFilePath(CHIP_DEFAULT_CONFIG_KVS_FILE_NAME); + return PersistedStorage::KeyValueStoreMgrImpl().Init(filePath.c_str()); } CHIP_ERROR PosixConfig::ReadConfigValue(Key key, bool & val) @@ -453,17 +454,17 @@ bool PosixConfig::ConfigValueExists(Key key) return storage->HasValue(key.Name); } -std::string PosixConfig::GetFilePath(std::string defaultFileName) +std::string PosixConfig::GetFilePath(const std::string &defaultFileName) { // Match what GetFilename in ExamplePersistentStorage.cpp does. - const char * dir = getenv("TMPDIR"); + const char *dir = std::getenv("TMPDIR"); if (dir == nullptr) { dir = "/tmp"; } - std::string storageDir = dir; - - return storageDir + "/" + defaultFileName; + std::filesystem::path storageDir(dir); + std::filesystem::path filePath = storageDir / defaultFileName; + return filePath.string(); } CHIP_ERROR PosixConfig::EnsureNamespace(const char * ns) diff --git a/src/platform/Linux/PosixConfig.h b/src/platform/Linux/PosixConfig.h index 1c24f51c00267d..43ea0f3e87400f 100644 --- a/src/platform/Linux/PosixConfig.h +++ b/src/platform/Linux/PosixConfig.h @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -112,7 +113,7 @@ class PosixConfig private: static ChipLinuxStorage * GetStorageForNamespace(Key key); - static std::string GetFilePath(std::string defaultFileName); + static std::string GetFilePath(const std::string &defaultFileName); }; struct PosixConfig::Key From ceaafa6f0748f2af061dde6467c9779c3d207656 Mon Sep 17 00:00:00 2001 From: JP Meijers Date: Wed, 19 Jun 2024 17:15:10 +0200 Subject: [PATCH 3/3] ClangFormat changed files --- src/platform/Linux/PosixConfig.cpp | 16 ++++++++-------- src/platform/Linux/PosixConfig.h | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/platform/Linux/PosixConfig.cpp b/src/platform/Linux/PosixConfig.cpp index 7d37ed4d168dc3..285593f2d3a3ef 100644 --- a/src/platform/Linux/PosixConfig.cpp +++ b/src/platform/Linux/PosixConfig.cpp @@ -454,10 +454,10 @@ bool PosixConfig::ConfigValueExists(Key key) return storage->HasValue(key.Name); } -std::string PosixConfig::GetFilePath(const std::string &defaultFileName) +std::string PosixConfig::GetFilePath(const std::string & defaultFileName) { // Match what GetFilename in ExamplePersistentStorage.cpp does. - const char *dir = std::getenv("TMPDIR"); + const char * dir = std::getenv("TMPDIR"); if (dir == nullptr) { dir = "/tmp"; @@ -474,21 +474,21 @@ CHIP_ERROR PosixConfig::EnsureNamespace(const char * ns) if (strcmp(ns, kConfigNamespace_ChipFactory) == 0) { - storage = &gChipLinuxFactoryStorage; + storage = &gChipLinuxFactoryStorage; std::string filePath = GetFilePath(CHIP_DEFAULT_FACTORY_FILE_NAME); - err = storage->Init(filePath.c_str()); + err = storage->Init(filePath.c_str()); } else if (strcmp(ns, kConfigNamespace_ChipConfig) == 0) { - storage = &gChipLinuxConfigStorage; + storage = &gChipLinuxConfigStorage; std::string filePath = GetFilePath(CHIP_DEFAULT_CONFIG_FILE_NAME); - err = storage->Init(filePath.c_str()); + err = storage->Init(filePath.c_str()); } else if (strcmp(ns, kConfigNamespace_ChipCounters) == 0) { - storage = &gChipLinuxCountersStorage; + storage = &gChipLinuxCountersStorage; std::string filePath = GetFilePath(CHIP_DEFAULT_DATA_FILE_NAME); - err = storage->Init(filePath.c_str()); + err = storage->Init(filePath.c_str()); } SuccessOrExit(err); diff --git a/src/platform/Linux/PosixConfig.h b/src/platform/Linux/PosixConfig.h index 43ea0f3e87400f..286408d9213f68 100644 --- a/src/platform/Linux/PosixConfig.h +++ b/src/platform/Linux/PosixConfig.h @@ -23,10 +23,10 @@ #pragma once -#include -#include #include +#include #include +#include #include @@ -113,7 +113,7 @@ class PosixConfig private: static ChipLinuxStorage * GetStorageForNamespace(Key key); - static std::string GetFilePath(const std::string &defaultFileName); + static std::string GetFilePath(const std::string & defaultFileName); }; struct PosixConfig::Key