X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Femul%2Fkfile_posix.c;h=1f09aaff7062dd461856aee0ecaa6a7e21ed70cf;hb=64b8f4a437a5afe1eba7f50e6b4c7ad8f69eb312;hp=593571d4bfb8494c45540f35684d69a6052fde6d;hpb=33ecbdb14c46beec78b84ae652b7956f3319397e;p=bertos.git diff --git a/bertos/emul/kfile_posix.c b/bertos/emul/kfile_posix.c index 593571d4..1f09aaff 100644 --- a/bertos/emul/kfile_posix.c +++ b/bertos/emul/kfile_posix.c @@ -37,6 +37,7 @@ */ #include +#include static size_t kfile_posix_read(struct KFile *_fd, void *buf, size_t size) { @@ -67,9 +68,13 @@ static kfile_off_t kfile_posix_seek(struct KFile *_fd, kfile_off_t offset, KSeek break; default: ASSERT(0); + return EOF; } + int err = fseek(fd->fp, offset, std_whence); + if (err) + return err; - return fseek(fd->fp, offset, std_whence); + return ftell(fd->fp); } static int kfile_posix_close(struct KFile *_fd) @@ -86,7 +91,8 @@ static int kfile_posix_flush(struct KFile *_fd) FILE *kfile_posix_init(KFilePosix *file, const char *filename, const char *mode) { - file->fd._type = KFT_KFILEPOSIX; + memset(file, 0, sizeof(*file)); + DB(file->fd._type = KFT_KFILEPOSIX); file->fd.read = kfile_posix_read; file->fd.write = kfile_posix_write; file->fd.close = kfile_posix_close;