mirror of
https://github.com/fluencelabs/musl
synced 2025-05-21 19:51:31 +00:00
this header evolved to facilitate the extremely lazy practice of omitting explicit includes of the necessary headers in individual stdio source files; not only was this sloppy, but it also increased build time. now, stdio_impl.h is only including the headers it needs for its own use; any further headers needed by source files are included directly where needed.
36 lines
536 B
C
36 lines
536 B
C
#include "stdio_impl.h"
|
|
#include <limits.h>
|
|
#include <errno.h>
|
|
|
|
off_t __ftello_unlocked(FILE *f)
|
|
{
|
|
off_t pos = f->seek(f, 0, SEEK_CUR);
|
|
if (pos < 0) return pos;
|
|
|
|
/* Adjust for data in buffer. */
|
|
return pos - (f->rend - f->rpos) + (f->wpos - f->wbase);
|
|
}
|
|
|
|
off_t __ftello(FILE *f)
|
|
{
|
|
off_t pos;
|
|
FLOCK(f);
|
|
pos = __ftello_unlocked(f);
|
|
FUNLOCK(f);
|
|
return pos;
|
|
}
|
|
|
|
long ftell(FILE *f)
|
|
{
|
|
off_t pos = __ftello(f);
|
|
if (pos > LONG_MAX) {
|
|
errno = EOVERFLOW;
|
|
return -1;
|
|
}
|
|
return pos;
|
|
}
|
|
|
|
weak_alias(__ftello, ftello);
|
|
|
|
LFS64(ftello);
|