1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2 /*
3 * Copyright (c) 2015 Rockchip Electronics Co., Ltd.
4 */
5
6 #if defined(linux) && !defined(__ANDROID__)
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <errno.h>
10 #include "os_env.h"
11
12 #define ENV_BUF_SIZE_LINUX 1024
13
os_get_env_u32(const char * name,RK_U32 * value,RK_U32 default_value)14 RK_S32 os_get_env_u32(const char *name, RK_U32 *value, RK_U32 default_value)
15 {
16 char *ptr = getenv(name);
17 if (NULL == ptr) {
18 *value = default_value;
19 } else {
20 char *endptr;
21 int base = (ptr[0] == '0' && ptr[1] == 'x') ? (16) : (10);
22 errno = 0;
23 *value = strtoul(ptr, &endptr, base);
24 if (errno || (ptr == endptr)) {
25 errno = 0;
26 *value = default_value;
27 }
28 }
29 return 0;
30 }
31
os_get_env_str(const char * name,const char ** value,const char * default_value)32 RK_S32 os_get_env_str(const char *name, const char **value, const char *default_value)
33 {
34 *value = getenv(name);
35 if (NULL == *value) {
36 *value = default_value;
37 }
38 return 0;
39 }
40
os_set_env_u32(const char * name,RK_U32 value)41 RK_S32 os_set_env_u32(const char *name, RK_U32 value)
42 {
43 char buf[ENV_BUF_SIZE_LINUX];
44 snprintf(buf, sizeof(buf) - 1, "%u", value);
45 return setenv(name, buf, 1);
46 }
47
os_set_env_str(const char * name,char * value)48 RK_S32 os_set_env_str(const char *name, char *value)
49 {
50 return setenv(name, value, 1);
51 }
52
53 #endif
54