diff options
Diffstat (limited to 'py/frozenmod.c')
-rw-r--r-- | py/frozenmod.c | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/py/frozenmod.c b/py/frozenmod.c index 0fabb06a98..660167eed4 100644 --- a/py/frozenmod.c +++ b/py/frozenmod.c @@ -43,24 +43,6 @@ extern const char mp_frozen_str_names[]; extern const uint32_t mp_frozen_str_sizes[]; extern const char mp_frozen_str_content[]; -mp_import_stat_t mp_frozen_stat(const char *str) { - size_t len = strlen(str); - const char *name = mp_frozen_str_names; - - for (int i = 0; *name != 0; i++) { - size_t l = strlen(name); - if (l >= len && !memcmp(str, name, len)) { - if (name[len] == 0) { - return MP_IMPORT_STAT_FILE; - } else if (name[len] == '/') { - return MP_IMPORT_STAT_DIR; - } - } - name += l + 1; - } - return MP_IMPORT_STAT_NO_EXIST; -} - STATIC mp_lexer_t *mp_find_frozen_str(const char *str, size_t len) { const char *name = mp_frozen_str_names; @@ -103,6 +85,43 @@ STATIC const mp_raw_code_t *mp_find_frozen_mpy(const char *str, size_t len) { #if MICROPY_MODULE_FROZEN +STATIC mp_import_stat_t mp_frozen_stat_helper(const char *name, const char *str) { + size_t len = strlen(str); + + for (int i = 0; *name != 0; i++) { + size_t l = strlen(name); + if (l >= len && !memcmp(str, name, len)) { + if (name[len] == 0) { + return MP_IMPORT_STAT_FILE; + } else if (name[len] == '/') { + return MP_IMPORT_STAT_DIR; + } + } + name += l + 1; + } + return MP_IMPORT_STAT_NO_EXIST; +} + +mp_import_stat_t mp_frozen_stat(const char *str) { + mp_import_stat_t stat; + + #if MICROPY_MODULE_FROZEN_STR + stat = mp_frozen_stat_helper(mp_frozen_str_names, str); + if (stat != MP_IMPORT_STAT_NO_EXIST) { + return stat; + } + #endif + + #if MICROPY_MODULE_FROZEN_MPY + stat = mp_frozen_stat_helper(mp_frozen_mpy_names, str); + if (stat != MP_IMPORT_STAT_NO_EXIST) { + return stat; + } + #endif + + return MP_IMPORT_STAT_NO_EXIST; +} + int mp_find_frozen_module(const char *str, size_t len, void **data) { #if MICROPY_MODULE_FROZEN_STR mp_lexer_t *lex = mp_find_frozen_str(str, len); |