diff options
author | Damien George <damien.p.george@gmail.com> | 2014-11-16 23:56:37 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-11-16 23:56:37 +0000 |
commit | 5694cc5490235a9091fe3e2c5563471565e3da97 (patch) | |
tree | 3f867d354a06935acf32d47df1fd8fbaf1285168 | |
parent | 91386eee2613cbaf736d746cfef28674cce82c01 (diff) | |
download | micropython-5694cc5490235a9091fe3e2c5563471565e3da97.tar.gz micropython-5694cc5490235a9091fe3e2c5563471565e3da97.zip |
py: Make stream seek correctly check for ioctl fn; add seek for textio.
-rw-r--r-- | py/stream.c | 2 | ||||
-rw-r--r-- | stmhal/file.c | 1 | ||||
-rw-r--r-- | tests/io/file_seek.py | 8 | ||||
-rw-r--r-- | unix/file.c | 1 |
4 files changed, 11 insertions, 1 deletions
diff --git a/py/stream.c b/py/stream.c index 1361d6c722..810e9b3498 100644 --- a/py/stream.c +++ b/py/stream.c @@ -382,7 +382,7 @@ mp_obj_t mp_stream_unbuffered_iter(mp_obj_t self) { STATIC mp_obj_t stream_seek(mp_uint_t n_args, const mp_obj_t *args) { struct _mp_obj_base_t *o = (struct _mp_obj_base_t *)args[0]; - if (o->type->stream_p == NULL || o->type->stream_p->read == NULL) { + if (o->type->stream_p == NULL || o->type->stream_p->ioctl == NULL) { // CPython: io.UnsupportedOperation, OSError subclass nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, "Operation not supported")); } diff --git a/stmhal/file.c b/stmhal/file.c index 8e42bda578..c4f4dace0d 100644 --- a/stmhal/file.c +++ b/stmhal/file.c @@ -260,6 +260,7 @@ const mp_obj_type_t mp_type_fileio = { STATIC const mp_stream_p_t textio_stream_p = { .read = file_obj_read, .write = file_obj_write, + .ioctl = file_obj_ioctl, .is_text = true, }; diff --git a/tests/io/file_seek.py b/tests/io/file_seek.py index 2ced3576d3..922b169280 100644 --- a/tests/io/file_seek.py +++ b/tests/io/file_seek.py @@ -10,3 +10,11 @@ print(f.read(20)) print(f.seek(0, 0)) print(f.read(5)) + +f.close() + +# test text mode +f = open("io/data/file1", "rt") +print(f.seek(6)) +print(f.read(5)) +f.close() diff --git a/unix/file.c b/unix/file.c index b2746e078a..4a11d24bde 100644 --- a/unix/file.c +++ b/unix/file.c @@ -240,6 +240,7 @@ const mp_obj_type_t mp_type_fileio = { STATIC const mp_stream_p_t textio_stream_p = { .read = fdfile_read, .write = fdfile_write, + .ioctl = fdfile_ioctl, .is_text = true, }; |