diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-12-22 00:17:01 +0200 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-12-23 12:56:24 +0000 |
commit | 9c658b6afc8377515945b91d413aed5bc0ecb391 (patch) | |
tree | b4cad52b4aad6cb968a3c5c66e488240495b0f3d /unix/modos.c | |
parent | a37656c1325a0e5afbd469070013aa2ee5184b65 (diff) |
unix, windows: Add _os.system() call.
system() is the basic function to support automation of tasks, so have it
available builtin, for example, for bootstrapping rest of micropython
environment.
Diffstat (limited to 'unix/modos.c')
-rw-r--r-- | unix/modos.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/unix/modos.c b/unix/modos.c index b9a2810ba..6efc7bc53 100644 --- a/unix/modos.c +++ b/unix/modos.c @@ -29,6 +29,7 @@ #include <sys/stat.h> #include <unistd.h> #include <errno.h> +#include <stdlib.h> #include "mpconfig.h" #include "misc.h" @@ -77,9 +78,21 @@ STATIC mp_obj_t mod_os_unlink(mp_obj_t path_in) { } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_os_unlink_obj, mod_os_unlink); +STATIC mp_obj_t mod_os_system(mp_obj_t cmd_in) { + const char *cmd = mp_obj_str_get_str(cmd_in); + + int r = system(cmd); + + RAISE_ERRNO(r, errno); + + return MP_OBJ_NEW_SMALL_INT(r); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_os_system_obj, mod_os_system); + STATIC const mp_map_elem_t mp_module_os_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR__os) }, { MP_OBJ_NEW_QSTR(MP_QSTR_stat), (mp_obj_t)&mod_os_stat_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_system), (mp_obj_t)&mod_os_system_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_unlink),(mp_obj_t)&mod_os_unlink_obj}, }; |