diff --git a/libraries/wutdevoptab/devoptab_fs_open.c b/libraries/wutdevoptab/devoptab_fs_open.c index 811ee365..7a60fbe4 100644 --- a/libraries/wutdevoptab/devoptab_fs_open.c +++ b/libraries/wutdevoptab/devoptab_fs_open.c @@ -59,6 +59,7 @@ __wut_fs_open(struct _reent *r, file = (__wut_fs_file_t *)fileStruct; file->fd = fd; file->flags = (flags & (O_ACCMODE|O_APPEND|O_SYNC)); + file->offset = 0; if (flags & O_APPEND) { status = FSGetPosFile(__wut_devoptab_fs_client, &cmd, fd, &file->offset, FS_ERROR_FLAG_ALL); if (status < 0) { diff --git a/libraries/wutdevoptab/devoptab_fs_read.c b/libraries/wutdevoptab/devoptab_fs_read.c index a10ccbb9..1f66a657 100644 --- a/libraries/wutdevoptab/devoptab_fs_read.c +++ b/libraries/wutdevoptab/devoptab_fs_read.c @@ -56,6 +56,7 @@ ssize_t __wut_fs_read(struct _reent *r, void *fd, char *ptr, size_t len) { memcpy(ptr, alignedBuffer, status); } + file->offset += status; bytesRead += status; ptr += status; diff --git a/libraries/wutdevoptab/devoptab_fs_write.c b/libraries/wutdevoptab/devoptab_fs_write.c index 377bbe10..5259c272 100644 --- a/libraries/wutdevoptab/devoptab_fs_write.c +++ b/libraries/wutdevoptab/devoptab_fs_write.c @@ -53,6 +53,7 @@ ssize_t __wut_fs_write(struct _reent *r, void *fd, const char *ptr, size_t len) return -1; } + file->offset += status; bytesWritten += status; ptr += status;