xref: /rockchip-linux_mpp/osal/linux/os_env.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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