Home
       ftell.c - scc - simple c99 compiler
  HTML git clone git://git.simple-cc.org/scc
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
       ftell.c (426B)
       ---
            1 #include <stdio.h>
            2 
            3 #include "../syscall.h"
            4 
            5 #undef ftell
            6 
            7 long
            8 ftell(FILE *fp)
            9 {
           10         long off;
           11         unsigned char *p;
           12 
           13         if (fp->flags & _IOERR)
           14                 return EOF;
           15 
           16         if ((off = _lseek(fp->fd, 0, SEEK_CUR)) < 0) {
           17                 fp->flags |= _IOERR;
           18                 return EOF;
           19         }
           20 
           21         if (fp->flags & _IOREAD)
           22                 return off - (fp->wp - fp->rp);
           23 
           24         if (fp->flags & _IOWRITE) {
           25                 p = (fp->flags & _IOLBF) ? fp->lp : fp->wp;
           26                 return off + (p - fp->buf);
           27         }
           28         return off;
           29 }