extmod/vfs_fat_file: Implement SEEK_CUR for non-zero offset.

CPython doesn't allow SEEK_CUR with non-zero offset for files in text mode,
and uPy inherited this behaviour for both text and binary files.  It makes
sense to provide full support for SEEK_CUR of binary-mode files in uPy, and
to do this in a minimal way means also allowing to use SEEK_CUR with
non-zero offsets on text-mode files.  That seems to be a fair compromise.
pull/3572/merge
Ayke van Laethem 2017-12-19 23:47:07 +01:00 zatwierdzone przez Damien George
rodzic df952633ef
commit 7642785881
3 zmienionych plików z 4 dodań i 10 usunięć

Wyświetl plik

@ -134,11 +134,7 @@ STATIC mp_uint_t file_obj_ioctl(mp_obj_t o_in, mp_uint_t request, uintptr_t arg,
break; break;
case 1: // SEEK_CUR case 1: // SEEK_CUR
if (s->offset != 0) { f_lseek(&self->fp, f_tell(&self->fp) + s->offset);
*errcode = MP_EOPNOTSUPP;
return MP_STREAM_ERROR;
}
// no-operation
break; break;
case 2: // SEEK_END case 2: // SEEK_END

Wyświetl plik

@ -91,10 +91,8 @@ with open("foo_file.txt") as f2:
f2.seek(0, 1) # SEEK_CUR f2.seek(0, 1) # SEEK_CUR
print(f2.read(1)) print(f2.read(1))
try: f2.seek(2, 1) # SEEK_CUR
f2.seek(1, 1) # SEEK_END print(f2.read(1))
except OSError as e:
print(e.args[0] == uerrno.EOPNOTSUPP)
f2.seek(-2, 2) # SEEK_END f2.seek(-2, 2) # SEEK_END
print(f2.read(1)) print(f2.read(1))

Wyświetl plik

@ -7,7 +7,7 @@ hello!world!
12 12
h h
e e
True o
d d
True True
[('foo_dir', 16384, 0)] [('foo_dir', 16384, 0)]