X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fstdio%2Fftell.c;h=1a2afbbce3a62ef87f90c7093d11bd8f5369da84;hb=7b384c42b73ca1a1e150b3f255990ec53cedec60;hp=82371e37b38316d8fdbdb5bf9bf69f8771f003e0;hpb=c6d441e3a246370d9c459396ec22b096db93850e;p=musl diff --git a/src/stdio/ftell.c b/src/stdio/ftell.c index 82371e37..1a2afbbc 100644 --- a/src/stdio/ftell.c +++ b/src/stdio/ftell.c @@ -4,11 +4,17 @@ off_t __ftello_unlocked(FILE *f) { - off_t pos = f->seek(f, 0, SEEK_CUR); + off_t pos = f->seek(f, 0, + (f->flags & F_APP) && f->wpos != f->wbase + ? SEEK_END : SEEK_CUR); if (pos < 0) return pos; /* Adjust for data in buffer. */ - return pos - (f->rend - f->rpos) + (f->wpos - f->wbase); + if (f->rend) + pos += f->rpos - f->rend; + else if (f->wbase) + pos += f->wpos - f->wbase; + return pos; } off_t __ftello(FILE *f) @@ -32,4 +38,4 @@ long ftell(FILE *f) weak_alias(__ftello, ftello); -LFS64(ftello); +weak_alias(ftello, ftello64);