|
57 | 57 | #endif
|
58 | 58 |
|
59 | 59 | #if defined(MICROPY_UNIX_COVERAGE)
|
| 60 | +#include "py/objstr.h" |
| 61 | +typedef int os_getenv_err_t; |
60 | 62 | mp_obj_t common_hal_os_getenv(const char *key, mp_obj_t default_);
|
| 63 | +os_getenv_err_t common_hal_os_getenv_str(const char *key, char *value, size_t value_len); |
| 64 | +os_getenv_err_t common_hal_os_getenv_int(const char *key, mp_int_t *value); |
61 | 65 | #endif
|
62 | 66 |
|
63 | 67 | STATIC mp_obj_t mod_os_urandom(mp_obj_t num) {
|
@@ -212,6 +216,28 @@ STATIC mp_obj_t mod_os_getenv(mp_obj_t var_in) {
|
212 | 216 | }
|
213 | 217 | MP_DEFINE_CONST_FUN_OBJ_1(mod_os_getenv_obj, mod_os_getenv);
|
214 | 218 |
|
| 219 | +#if defined(MICROPY_UNIX_COVERAGE) |
| 220 | +STATIC mp_obj_t mod_os_getenv_int(mp_obj_t var_in) { |
| 221 | + mp_int_t value; |
| 222 | + os_getenv_err_t result = common_hal_os_getenv_int(mp_obj_str_get_str(var_in), &value); |
| 223 | + if (result == 0) { |
| 224 | + return mp_obj_new_int(value); |
| 225 | + } |
| 226 | + return mp_const_none; |
| 227 | +} |
| 228 | +MP_DEFINE_CONST_FUN_OBJ_1(mod_os_getenv_int_obj, mod_os_getenv_int); |
| 229 | + |
| 230 | +STATIC mp_obj_t mod_os_getenv_str(mp_obj_t var_in) { |
| 231 | + char buf[4096]; |
| 232 | + os_getenv_err_t result = common_hal_os_getenv_str(mp_obj_str_get_str(var_in), buf, sizeof(buf)); |
| 233 | + if (result == 0) { |
| 234 | + return mp_obj_new_str_copy(&mp_type_str, (byte *)buf, strlen(buf)); |
| 235 | + } |
| 236 | + return mp_const_none; |
| 237 | +} |
| 238 | +MP_DEFINE_CONST_FUN_OBJ_1(mod_os_getenv_str_obj, mod_os_getenv_str); |
| 239 | +#endif |
| 240 | + |
215 | 241 | STATIC mp_obj_t mod_os_putenv(mp_obj_t key_in, mp_obj_t value_in) {
|
216 | 242 | const char *key = mp_obj_str_get_str(key_in);
|
217 | 243 | const char *value = mp_obj_str_get_str(value_in);
|
@@ -351,6 +377,10 @@ STATIC const mp_rom_map_elem_t mp_module_os_globals_table[] = {
|
351 | 377 | { MP_ROM_QSTR(MP_QSTR_rename), MP_ROM_PTR(&mod_os_rename_obj) },
|
352 | 378 | { MP_ROM_QSTR(MP_QSTR_rmdir), MP_ROM_PTR(&mod_os_rmdir_obj) },
|
353 | 379 | { MP_ROM_QSTR(MP_QSTR_getenv), MP_ROM_PTR(&mod_os_getenv_obj) },
|
| 380 | + #if defined(MICROPY_UNIX_COVERAGE) |
| 381 | + { MP_ROM_QSTR(MP_QSTR_getenv_int), MP_ROM_PTR(&mod_os_getenv_int_obj) }, |
| 382 | + { MP_ROM_QSTR(MP_QSTR_getenv_str), MP_ROM_PTR(&mod_os_getenv_str_obj) }, |
| 383 | + #endif |
354 | 384 | { MP_ROM_QSTR(MP_QSTR_putenv), MP_ROM_PTR(&mod_os_putenv_obj) },
|
355 | 385 | { MP_ROM_QSTR(MP_QSTR_unsetenv), MP_ROM_PTR(&mod_os_unsetenv_obj) },
|
356 | 386 | { MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mod_os_mkdir_obj) },
|
|
0 commit comments