From d4e7e06d7f8bdf3e35cac52cc1f75bdb53981783 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 2 Apr 2014 20:19:32 +0300 Subject: [PATCH 1/5] unix: Properly recognize and report when script on cmdline not found. Previosuly just silently exited. --- unix/main.c | 17 ++++++++++++----- 1 file 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 #include #include +#include #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]))); } From a55a5469c3186e85a9153139ef4f228a81c9b926 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 2 Apr 2014 20:29:18 +0300 Subject: [PATCH 2/5] unix: Support #if-able impl-specific cmdline options. For example, we still build w/o GC enabled, so cannot really set heap size. --- unix/main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/unix/main.c b/unix/main.c index b5f7a82f18..029a8effaf 100644 --- a/unix/main.c +++ b/unix/main.c @@ -218,8 +218,19 @@ int usage(void) { "usage: py [-X ] [-c ] []\n" "\n" "Implementation specific options:\n" +); + int impl_opts_cnt = 0; +#if MICROPY_ENABLE_GC + printf( " heapsize= -- set the heap size for the GC\n" ); + impl_opts_cnt++; +#endif + + if (impl_opts_cnt == 0) { + printf(" (none)\n"); + } + return 1; } From d440dc05135bc93a4e95d07f4d7cd7bf2710408f Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 2 Apr 2014 20:31:18 +0300 Subject: [PATCH 3/5] unix: Use argv[0] for command name in usage. --- unix/main.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/unix/main.c b/unix/main.c index 029a8effaf..228c4746a5 100644 --- a/unix/main.c +++ b/unix/main.c @@ -213,11 +213,11 @@ mp_obj_t test_obj_new(int value) { return o; } -int usage(void) { +int usage(char **argv) { printf( -"usage: py [-X ] [-c ] []\n" +"usage: %s [-X ] [-c ] []\n" "\n" -"Implementation specific options:\n" +"Implementation specific options:\n", argv[0] ); int impl_opts_cnt = 0; #if MICROPY_ENABLE_GC @@ -261,7 +261,7 @@ void pre_process_options(int argc, char **argv) { if (argv[a][0] == '-') { if (strcmp(argv[a], "-X") == 0) { if (a + 1 >= argc) { - exit(usage()); + exit(usage(argv)); } if (0) { #if MICROPY_ENABLE_GC @@ -269,7 +269,7 @@ void pre_process_options(int argc, char **argv) { heap_size = strtol(argv[a + 1] + sizeof("heapsize=") - 1, NULL, 0); #endif } else { - exit(usage()); + exit(usage(argv)); } a++; } @@ -370,7 +370,7 @@ int main(int argc, char **argv) { if (argv[a][0] == '-') { if (strcmp(argv[a], "-c") == 0) { if (a + 1 >= argc) { - return usage(); + return usage(argv); } do_str(argv[a + 1]); executed = true; @@ -378,7 +378,7 @@ int main(int argc, char **argv) { } else if (strcmp(argv[a], "-X") == 0) { a += 1; } else { - return usage(); + return usage(argv); } } else { char *basedir = realpath(argv[a], NULL); From e807fa8d60483da05a3f618efb224020c9f0a86b Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 2 Apr 2014 20:36:32 +0300 Subject: [PATCH 4/5] gc: Uses uint defined in misc.h. --- py/gc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/py/gc.c b/py/gc.c index 3a3fdb00a5..c319e9ffbf 100644 --- a/py/gc.c +++ b/py/gc.c @@ -2,6 +2,7 @@ #include #include "mpconfig.h" +#include "misc.h" #include "gc.h" #if MICROPY_ENABLE_GC From ad1bac63f714550bc6e2b0a718ee155288254b7a Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 2 Apr 2014 20:41:34 +0300 Subject: [PATCH 5/5] tests/string-format: Add test for formatting ints with float format. Fail currently. --- tests/basics/string-format.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/basics/string-format.py b/tests/basics/string-format.py index 290030a9e3..8049c6f73b 100644 --- a/tests/basics/string-format.py +++ b/tests/basics/string-format.py @@ -58,6 +58,9 @@ test("{:10.4f}", 123.456) test("{:10.4f}", -123.456) test("{:10.4g}", 123.456) test("{:10.4g}", -123.456) +test("{:e}", 100) +test("{:f}", 200) +test("{:g}", 300) test("{:10.4E}", 123.456) test("{:10.4E}", -123.456)