1f61f2921SMatt Spinler #pragma once 2f61f2921SMatt Spinler 3f61f2921SMatt Spinler #include <fstream> 4*a06b4c6bSPatrick Williams #include <map> 5f61f2921SMatt Spinler #include <optional> 6f61f2921SMatt Spinler #include <string> 7*a06b4c6bSPatrick Williams #include <vector> 8f61f2921SMatt Spinler 9f61f2921SMatt Spinler namespace phosphor::logging::util 10f61f2921SMatt Spinler { 11f61f2921SMatt Spinler 12f61f2921SMatt Spinler /** 13f61f2921SMatt Spinler * @brief Return a value found in the /etc/os-release file 14f61f2921SMatt Spinler * 15f61f2921SMatt Spinler * @param[in] key - The key name, like "VERSION" 16f61f2921SMatt Spinler * 17f61f2921SMatt Spinler * @return std::optional<std::string> - The value 18f61f2921SMatt Spinler */ 19f61f2921SMatt Spinler std::optional<std::string> getOSReleaseValue(const std::string& key); 20f61f2921SMatt Spinler 21271d143dSMatt Spinler /** 22271d143dSMatt Spinler * @brief Synchronize unwritten journal messages to disk. 23271d143dSMatt Spinler * @details This is the same implementation as the systemd command 24271d143dSMatt Spinler * "journalctl --sync". 25271d143dSMatt Spinler */ 26271d143dSMatt Spinler void journalSync(); 27271d143dSMatt Spinler 28*a06b4c6bSPatrick Williams namespace additional_data 29*a06b4c6bSPatrick Williams { 30*a06b4c6bSPatrick Williams /** @brief Pull out metadata name and value from the string 31*a06b4c6bSPatrick Williams * <metadata name>=<metadata value> 32*a06b4c6bSPatrick Williams * @param [in] data - metadata key=value entries 33*a06b4c6bSPatrick Williams * @return map of metadata name:value 34*a06b4c6bSPatrick Williams */ 35*a06b4c6bSPatrick Williams auto parse(const std::vector<std::string>& data) 36*a06b4c6bSPatrick Williams -> std::map<std::string, std::string>; 37*a06b4c6bSPatrick Williams /** @brief Combine the metadata keys and values from the map 38*a06b4c6bSPatrick Williams * into a vector of strings that look like: 39*a06b4c6bSPatrick Williams * "<metadata name>=<metadata value>" 40*a06b4c6bSPatrick Williams * @param [in] data - metadata key:value map 41*a06b4c6bSPatrick Williams * @return vector of "key=value" strings 42*a06b4c6bSPatrick Williams */ 43*a06b4c6bSPatrick Williams auto combine(const std::map<std::string, std::string>& data) 44*a06b4c6bSPatrick Williams -> std::vector<std::string>; 45*a06b4c6bSPatrick Williams } // namespace additional_data 46*a06b4c6bSPatrick Williams 47f61f2921SMatt Spinler } // namespace phosphor::logging::util 48