diff options
author | Damien George <damien.p.george@gmail.com> | 2016-11-16 16:25:06 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-11-16 18:13:51 +1100 |
commit | e5ef15a9d7bead2a60009caedbc128a8906c7ecd (patch) | |
tree | 6228f2f42be931bbb7d88f353d9c673be251afd8 /py | |
parent | 511c083811ca538753dfccc7c908048b2c23bea4 (diff) | |
download | micropython-e5ef15a9d7bead2a60009caedbc128a8906c7ecd.tar.gz micropython-e5ef15a9d7bead2a60009caedbc128a8906c7ecd.zip |
py/lexer: Provide generic mp_lexer_new_from_file based on mp_reader.
If a port defines MICROPY_READER_POSIX or MICROPY_READER_FATFS then
lexer.c now provides an implementation of mp_lexer_new_from_file using
the mp_reader_new_file function.
Diffstat (limited to 'py')
-rw-r--r-- | py/lexer.c | 13 | ||||
-rw-r--r-- | py/lexerunix.c | 8 | ||||
-rw-r--r-- | py/py.mk | 1 |
3 files changed, 13 insertions, 9 deletions
diff --git a/py/lexer.c b/py/lexer.c index f1be778053..d3e61b3b48 100644 --- a/py/lexer.c +++ b/py/lexer.c @@ -759,6 +759,19 @@ mp_lexer_t *mp_lexer_new_from_str_len(qstr src_name, const char *str, mp_uint_t return mp_lexer_new(src_name, reader.data, (mp_lexer_stream_next_byte_t)reader.readbyte, (mp_lexer_stream_close_t)reader.close); } +#if MICROPY_READER_POSIX || MICROPY_READER_FATFS + +mp_lexer_t *mp_lexer_new_from_file(const char *filename) { + mp_reader_t reader; + int ret = mp_reader_new_file(&reader, filename); + if (ret != 0) { + return NULL; + } + return mp_lexer_new(qstr_from_str(filename), reader.data, (mp_lexer_stream_next_byte_t)reader.readbyte, (mp_lexer_stream_close_t)reader.close); +} + +#endif + void mp_lexer_free(mp_lexer_t *lex) { if (lex) { if (lex->stream_close) { diff --git a/py/lexerunix.c b/py/lexerunix.c index e8f8994a6c..9e3755e761 100644 --- a/py/lexerunix.c +++ b/py/lexerunix.c @@ -85,12 +85,4 @@ mp_lexer_t *mp_lexer_new_from_fd(qstr filename, int fd, bool close_fd) { return mp_lexer_new(filename, fb, (mp_lexer_stream_next_byte_t)file_buf_next_byte, (mp_lexer_stream_close_t)file_buf_close); } -mp_lexer_t *mp_lexer_new_from_file(const char *filename) { - int fd = open(filename, O_RDONLY); - if (fd < 0) { - return NULL; - } - return mp_lexer_new_from_fd(qstr_from_str(filename), fd, true); -} - #endif // MICROPY_HELPER_LEXER_UNIX @@ -229,7 +229,6 @@ PY_O_BASENAME = \ ../extmod/vfs_fat_diskio.o \ ../extmod/vfs_fat_file.o \ ../extmod/vfs_fat_reader.o \ - ../extmod/vfs_fat_lexer.o \ ../extmod/vfs_fat_misc.o \ ../extmod/utime_mphal.o \ ../extmod/uos_dupterm.o \ |