]> git.sur5r.net Git - cc65/blobdiff - libsrc/common/ftell.c
The spans do now contain the size of a span, no longer the end offset.
[cc65] / libsrc / common / ftell.c
index 5af340929aec672e19e0f07eba0a5fb9cfad9429..9882cfc057a18cb87a2f7f8dc850701c24d979dd 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * ftell.c
  *
- * Christian Groessler, 07-Aug-2000
+ * Christian Groessler, 2000-08-07
+ * Ullrich von Bassewitz, 2004-05-13
  */
 
 
 
 
 
-long __fastcall__ ftell (FILE* f)
+long __fastcall__ ftell (register FILE* f)
 {
     long pos;
 
     /* Is the file open? */
     if ((f->f_flags & _FOPEN) == 0) {
-        _errno = EINVAL;                /* File not open */
+        _seterrno (EINVAL);                /* File not open */
         return -1L;
     }
 
-    pos = lseek(f->f_fd, 0L, SEEK_CUR);
-    return pos;    /* -1 for error, comes from lseek() */
+    /* Call the low level function */
+    pos = lseek (f->f_fd, 0L, SEEK_CUR);
+
+    /* If we didn't have an error, correct the return value in case we have
+     * a pushed back character.
+     */
+    if (pos > 0 && (f->f_flags & _FPUSHBACK)) {
+        --pos;
+    }
+
+    /* -1 for error, comes from lseek() */
+    return pos;
 }