blob: e4002367df16373c562c89c47c56f1dc5fe9dcec [file] [log] [blame]
Roman Stratiienkobde95662022-12-10 20:27:58 +02001/*
2 * Copyright (C) 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
Roman Stratiienkod518a052021-02-25 19:15:14 +020018
19#ifdef ANDROID
20
21#include <cutils/properties.h>
22
23#else
24
25#include <cstdio>
26#include <cstdlib>
27#include <cstring>
28
29// NOLINTNEXTLINE(readability-identifier-naming)
30constexpr int PROPERTY_VALUE_MAX = 92;
31
Roman Stratiienko5532b922021-03-04 15:22:09 +020032// NOLINTNEXTLINE(readability-identifier-naming)
Roman Stratiienkod518a052021-02-25 19:15:14 +020033auto inline property_get(const char *name, char *value,
34 const char *default_value) -> int {
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020035 // NOLINTNEXTLINE (concurrency-mt-unsafe)
Roman Stratiienkod518a052021-02-25 19:15:14 +020036 char *prop = std::getenv(name);
Roman Stratiienko0a90b272021-08-04 22:43:06 +030037 snprintf(value, PROPERTY_VALUE_MAX, "%s",
38 (prop == nullptr) ? default_value : prop);
Roman Stratiienkod26619b2021-08-04 19:55:37 +030039 return static_cast<int>(strlen(value));
Roman Stratiienkod518a052021-02-25 19:15:14 +020040}
41
42#endif