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