summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-11-16 23:56:37 +0000
committerDamien George <damien.p.george@gmail.com>2014-11-16 23:56:37 +0000
commit5694cc5490235a9091fe3e2c5563471565e3da97 (patch)
tree3f867d354a06935acf32d47df1fd8fbaf1285168
parent91386eee2613cbaf736d746cfef28674cce82c01 (diff)
downloadmicropython-5694cc5490235a9091fe3e2c5563471565e3da97.tar.gz
micropython-5694cc5490235a9091fe3e2c5563471565e3da97.zip
py: Make stream seek correctly check for ioctl fn; add seek for textio.
-rw-r--r--py/stream.c2
-rw-r--r--stmhal/file.c1
-rw-r--r--tests/io/file_seek.py8
-rw-r--r--unix/file.c1
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,
};