newlib-cygwin/winsup/mingw/mingwex/fseeko64.c

28 lines
562 B
C

#include <stdio.h>
#include <io.h>
#include <errno.h>
int __cdecl
fseeko64 (FILE* stream, off64_t offset, int whence)
{
fpos_t pos;
if (whence == SEEK_CUR)
{
/* If stream is invalid, fgetpos sets errno. */
if (fgetpos (stream, &pos))
return (-1);
pos += (fpos_t) offset;
}
else if (whence == SEEK_END)
pos = (fpos_t) (_filelengthi64 (_fileno (stream)) + offset);
else if (whence == SEEK_SET)
pos = (fpos_t) offset;
else
{
errno = EINVAL;
return (-1);
}
return fsetpos (stream, &pos);
}