LibC: implement fgetpos and fsetpos

They're just "front ends" for ftell and fseek, but they do their
job.

Fixes #913
This commit is contained in:
Paweł Cholewa 2019-12-27 22:50:14 +01:00 committed by Andreas Kling
parent 2cbc3c6ee5
commit b5c3bc6a71
Notes: sideshowbarker 2024-07-19 10:36:02 +09:00
2 changed files with 21 additions and 1 deletions

View file

@ -327,6 +327,26 @@ long ftell(FILE* stream)
return lseek(stream->fd, 0, SEEK_CUR);
}
int fgetpos(FILE* stream, fpos_t* pos)
{
assert(stream);
assert(pos);
long val = ftell(stream);
if (val == -1L)
return 1;
*pos = val;
return 0;
}
int fsetpos(FILE* stream, const fpos_t* pos)
{
assert(stream);
assert(pos);
return fseek(stream, (long) *pos, SEEK_SET);
}
void rewind(FILE* stream)
{
ASSERT(stream);

View file

@ -45,7 +45,7 @@ extern FILE* stdin;
extern FILE* stdout;
extern FILE* stderr;
typedef size_t fpos_t;
typedef long fpos_t;
int fseek(FILE*, long offset, int whence);
int fgetpos(FILE*, fpos_t*);