summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/utils/pyexec.c8
-rw-r--r--lib/utils/pyexec.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/utils/pyexec.c b/lib/utils/pyexec.c
index f4e6856e5..946a97a00 100644
--- a/lib/utils/pyexec.c
+++ b/lib/utils/pyexec.c
@@ -541,6 +541,14 @@ int pyexec_file(const char *filename) {
return parse_compile_execute(filename, MP_PARSE_FILE_INPUT, EXEC_FLAG_SOURCE_IS_FILENAME);
}
+int pyexec_file_if_exists(const char *filename) {
+ mp_import_stat_t stat = mp_import_stat(filename);
+ if (stat != MP_IMPORT_STAT_FILE) {
+ return 1; // success (no file is the same as an empty file executing without fail)
+ }
+ return pyexec_file(filename);
+}
+
#if MICROPY_MODULE_FROZEN
int pyexec_frozen_module(const char *name) {
void *frozen_data;
diff --git a/lib/utils/pyexec.h b/lib/utils/pyexec.h
index a0d0b52b1..9eb490be5 100644
--- a/lib/utils/pyexec.h
+++ b/lib/utils/pyexec.h
@@ -46,6 +46,7 @@ extern int pyexec_system_exit;
int pyexec_raw_repl(void);
int pyexec_friendly_repl(void);
int pyexec_file(const char *filename);
+int pyexec_file_if_exists(const char *filename);
int pyexec_frozen_module(const char *name);
void pyexec_event_repl_init(void);
int pyexec_event_repl_process_char(int c);