/* * Copyright (C) 2021 The LineageOS Project * * SPDX-License-Identifier: Apache-2.0 */ #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_ #include #include #include void property_override(std::string prop, std::string value, bool add) { auto pi = (prop_info *) __system_property_find(prop.c_str()); if (pi != nullptr) { __system_property_update(pi, value.c_str(), value.length()); } else if (add) { __system_property_add(prop.c_str(), prop.length(), value.c_str(), value.length()); } } std::vector ro_props_default_source_order = { "odm.", "product.", "system.", "system_ext.", "vendor.", "", }; void set_ro_build_prop(const std::string &prop, const std::string &value, bool product) { std::string prop_name; for (const auto &source : ro_props_default_source_order) { if (product) prop_name = "ro.product." + source + prop; else prop_name = "ro." + source + "build." + prop; property_override(prop_name, value, true); } } #define FIND_AND_REMOVE(s, delimiter, variable_name) \ std::string variable_name = s.substr(0, s.find(delimiter)); \ s.erase(0, s.find(delimiter) + delimiter.length()); const std::string fingerprint_to_description(const std::string &fingerprint) { const std::string delimiter = "/"; const std::string delimiter2 = ":"; std::string build_fingerprint_copy = fingerprint; FIND_AND_REMOVE(build_fingerprint_copy, delimiter, brand) FIND_AND_REMOVE(build_fingerprint_copy, delimiter, product) FIND_AND_REMOVE(build_fingerprint_copy, delimiter2, device) FIND_AND_REMOVE(build_fingerprint_copy, delimiter, platform_version) FIND_AND_REMOVE(build_fingerprint_copy, delimiter, build_id) FIND_AND_REMOVE(build_fingerprint_copy, delimiter2, build_number) FIND_AND_REMOVE(build_fingerprint_copy, delimiter, build_variant) std::string build_version_tags = build_fingerprint_copy; const std::string description = product + "-" + build_variant + " " + platform_version + " " + build_id + " " + build_number + " " + build_version_tags; return description; }