summaryrefslogtreecommitdiff
path: root/py/modsys.c
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2022-10-07 02:13:58 +1100
committerDamien George <damien@micropython.org>2022-10-11 18:10:26 +1100
commit0e8dfaf5384c672fc61bc10926688809db2b2ab2 (patch)
treea13818c29b0d0be4f7a5a7ba749892dbeffa95c7 /py/modsys.c
parentc44b3927b8f464e1e01c07b2431e7db251e6d8c0 (diff)
py/modsys: Add support for sys.executable.
Only intended to be used on Unix and other "OS" ports. Matches CPython. This should give the absolute path to the executing binary. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com> Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'py/modsys.c')
-rw-r--r--py/modsys.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/py/modsys.c b/py/modsys.c
index 56e83029c..35af761a0 100644
--- a/py/modsys.c
+++ b/py/modsys.c
@@ -115,6 +115,12 @@ STATIC const mp_rom_obj_tuple_t mp_sys_implementation_obj = {
STATIC const MP_DEFINE_STR_OBJ(mp_sys_platform_obj, MICROPY_PY_SYS_PLATFORM);
#endif
+#ifdef MICROPY_PY_SYS_EXECUTABLE
+// executable - the path to the micropython binary
+// This object is non-const and is populated at startup in main()
+MP_DEFINE_STR_OBJ(mp_sys_executable_obj, "");
+#endif
+
// exit([retval]): raise SystemExit, with optional argument given to the exception
STATIC mp_obj_t mp_sys_exit(size_t n_args, const mp_obj_t *args) {
if (n_args == 0) {
@@ -262,6 +268,10 @@ STATIC const mp_rom_map_elem_t mp_module_sys_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_getsizeof), MP_ROM_PTR(&mp_sys_getsizeof_obj) },
#endif
+ #if MICROPY_PY_SYS_EXECUTABLE
+ { MP_ROM_QSTR(MP_QSTR_executable), MP_ROM_PTR(&mp_sys_executable_obj) },
+ #endif
+
/*
* Extensions to CPython
*/