summaryrefslogtreecommitdiff
path: root/extmod/vfs_reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'extmod/vfs_reader.c')
-rw-r--r--extmod/vfs_reader.c29
1 files changed, 9 insertions, 20 deletions
diff --git a/extmod/vfs_reader.c b/extmod/vfs_reader.c
index 9509582d2..891098aa1 100644
--- a/extmod/vfs_reader.c
+++ b/extmod/vfs_reader.c
@@ -27,7 +27,7 @@
#include <stdio.h>
#include <string.h>
-#include "py/nlr.h"
+#include "py/runtime.h"
#include "py/stream.h"
#include "py/reader.h"
#include "extmod/vfs.h"
@@ -69,30 +69,19 @@ STATIC void mp_reader_vfs_close(void *data) {
m_del_obj(mp_reader_vfs_t, reader);
}
-int mp_reader_new_file(mp_reader_t *reader, const char *filename) {
- mp_reader_vfs_t *rf = m_new_obj_maybe(mp_reader_vfs_t);
- if (rf == NULL) {
- return MP_ENOMEM;
- }
- // TODO we really should just let this function raise a uPy exception
- nlr_buf_t nlr;
- if (nlr_push(&nlr) == 0) {
- mp_obj_t arg = mp_obj_new_str(filename, strlen(filename), false);
- rf->file = mp_vfs_open(1, &arg, (mp_map_t*)&mp_const_empty_map);
- int errcode;
- rf->len = mp_stream_rw(rf->file, rf->buf, sizeof(rf->buf), &errcode, MP_STREAM_RW_READ | MP_STREAM_RW_ONCE);
- nlr_pop();
- if (errcode != 0) {
- return errcode;
- }
- } else {
- return MP_ENOENT; // assume error was "file not found"
+void mp_reader_new_file(mp_reader_t *reader, const char *filename) {
+ mp_reader_vfs_t *rf = m_new_obj(mp_reader_vfs_t);
+ mp_obj_t arg = mp_obj_new_str(filename, strlen(filename), false);
+ rf->file = mp_vfs_open(1, &arg, (mp_map_t*)&mp_const_empty_map);
+ int errcode;
+ rf->len = mp_stream_rw(rf->file, rf->buf, sizeof(rf->buf), &errcode, MP_STREAM_RW_READ | MP_STREAM_RW_ONCE);
+ if (errcode != 0) {
+ mp_raise_OSError(errcode);
}
rf->pos = 0;
reader->data = rf;
reader->readbyte = mp_reader_vfs_readbyte;
reader->close = mp_reader_vfs_close;
- return 0; // success
}
#endif // MICROPY_READER_VFS