Use bitfield `flags` flags in file instead of `int` variables `mode`, `error`, `eof`. And rewrite weird logic opening/close files Reviewed-on: #691 Reviewed-by: Ivan B <1+dunkaist@noreply.localhost> Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com> Co-authored-by: Egor00f <y.yarin@inbox.ru>
20 lines
506 B
C
20 lines
506 B
C
#include <stdio.h>
|
|
#include <sys/ksys.h>
|
|
|
|
int fseek(FILE* stream, long int offset, int whence)
|
|
{
|
|
if (whence == SEEK_SET) {
|
|
stream->position = offset;
|
|
} else if (whence == SEEK_CUR) {
|
|
stream->position += offset;
|
|
} else if (whence == SEEK_END) {
|
|
ksys_bdfe_t info;
|
|
if (_ksys_file_get_info(stream->name, &info)) {
|
|
return -1;
|
|
}
|
|
stream->position = info.size + offset;
|
|
}
|
|
stream->flags.eof = false;
|
|
return 0;
|
|
}
|