diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-04-02 20:19:32 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-04-02 20:25:01 +0300 |
commit | d4e7e06d7f8bdf3e35cac52cc1f75bdb53981783 (patch) | |
tree | dc8344c374e230a3e24f1e89db7c23c4712a4150 /unix/main.c | |
parent | 094d450003185e64f14560ba3c107e02621c056c (diff) | |
download | micropython-d4e7e06d7f8bdf3e35cac52cc1f75bdb53981783.tar.gz micropython-d4e7e06d7f8bdf3e35cac52cc1f75bdb53981783.zip |
unix: Properly recognize and report when script on cmdline not found.
Previosuly just silently exited.
Diffstat (limited to 'unix/main.c')
-rw-r--r-- | unix/main.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/unix/main.c b/unix/main.c index 57eaa19976..b5f7a82f18 100644 --- a/unix/main.c +++ b/unix/main.c @@ -6,6 +6,7 @@ #include <stdarg.h> #include <sys/stat.h> #include <sys/types.h> +#include <errno.h> #include "nlr.h" #include "misc.h" @@ -369,13 +370,19 @@ int main(int argc, char **argv) { return usage(); } } else { - // Set base dir of the script as first entry in sys.path char *basedir = realpath(argv[a], NULL); - if (basedir != NULL) { - char *p = strrchr(basedir, '/'); - path_items[0] = MP_OBJ_NEW_QSTR(qstr_from_strn(basedir, p - basedir)); - free(basedir); + if (basedir == NULL) { + fprintf(stderr, "%s: can't open file '%s': [Errno %d] ", argv[0], argv[1], errno); + perror(""); + // CPython exits with 2 in such case + exit(2); } + + // Set base dir of the script as first entry in sys.path + char *p = strrchr(basedir, '/'); + path_items[0] = MP_OBJ_NEW_QSTR(qstr_from_strn(basedir, p - basedir)); + free(basedir); + for (int i = a; i < argc; i++) { mp_obj_list_append(py_argv, MP_OBJ_NEW_QSTR(qstr_from_str(argv[i]))); } |