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