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/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 61a1fbd4dda6ed..285593f2d3a3ef 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,6 +454,19 @@ bool PosixConfig::ConfigValueExists(Key key) return storage->HasValue(key.Name); } +std::string PosixConfig::GetFilePath(const std::string & defaultFileName) +{ + // Match what GetFilename in ExamplePersistentStorage.cpp does. + const char * dir = std::getenv("TMPDIR"); + if (dir == nullptr) + { + dir = "/tmp"; + } + std::filesystem::path storageDir(dir); + std::filesystem::path filePath = storageDir / defaultFileName; + return filePath.string(); +} + CHIP_ERROR PosixConfig::EnsureNamespace(const char * ns) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -460,18 +474,21 @@ CHIP_ERROR PosixConfig::EnsureNamespace(const char * ns) if (strcmp(ns, kConfigNamespace_ChipFactory) == 0) { - storage = &gChipLinuxFactoryStorage; - err = storage->Init(CHIP_DEFAULT_FACTORY_PATH); + storage = &gChipLinuxFactoryStorage; + 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); + storage = &gChipLinuxConfigStorage; + 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); + storage = &gChipLinuxCountersStorage; + 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..286408d9213f68 100644 --- a/src/platform/Linux/PosixConfig.h +++ b/src/platform/Linux/PosixConfig.h @@ -23,8 +23,10 @@ #pragma once +#include #include #include +#include #include @@ -111,6 +113,7 @@ class PosixConfig private: static ChipLinuxStorage * GetStorageForNamespace(Key key); + static std::string GetFilePath(const std::string & defaultFileName); }; struct PosixConfig::Key