]> git.sur5r.net Git - cc65/commitdiff
initial check-in of file positioning stdio functions
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 11 Aug 2000 21:53:56 +0000 (21:53 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 11 Aug 2000 21:53:56 +0000 (21:53 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@275 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/fgetpos.c [new file with mode: 0644]
libsrc/common/fseek.c [new file with mode: 0644]
libsrc/common/fsetpos.c [new file with mode: 0644]
libsrc/common/ftell.c [new file with mode: 0644]

diff --git a/libsrc/common/fgetpos.c b/libsrc/common/fgetpos.c
new file mode 100644 (file)
index 0000000..ae4b8c1
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * fgetpos.c
+ *
+ * Christian Groessler, 07-Aug-2000
+ */
+
+
+#include <stdio.h>
+
+
+int fgetpos(FILE* f, fpos_t *pos)
+{
+    *pos = ftell (f);
+
+    if (*pos != -1)
+        return 0;
+    return 1;
+}
+
diff --git a/libsrc/common/fseek.c b/libsrc/common/fseek.c
new file mode 100644 (file)
index 0000000..b54221f
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * fseek.c
+ *
+ * Christian Groessler, 07-Aug-2000
+ */
+
+
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include "_file.h"
+
+
+int fseek(FILE* f, long offset, int whence)
+{
+    long res;
+
+    /* Is the file open? */
+    if ((f->f_flags & _FOPEN) == 0) {
+        _errno = EINVAL;                /* File not open */
+        return 1;
+    }
+
+    res = lseek(f->f_fd, offset, whence);
+    if (res == -1L) return 1;
+    return 0;
+}
+
diff --git a/libsrc/common/fsetpos.c b/libsrc/common/fsetpos.c
new file mode 100644 (file)
index 0000000..a04185a
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * fsetpos.c
+ *
+ * Christian Groessler, 07-Aug-2000
+ */
+
+
+#include <stdio.h>
+
+
+int fsetpos(FILE* f, const fpos_t *pos)
+{
+    return fseek (f, (fpos_t)*pos, SEEK_SET);
+}
+
diff --git a/libsrc/common/ftell.c b/libsrc/common/ftell.c
new file mode 100644 (file)
index 0000000..d345a74
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * ftell.c
+ *
+ * Christian Groessler, 07-Aug-2000
+ */
+
+
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include "_file.h"
+
+
+long ftell(FILE* f)
+{
+    long pos;
+
+    /* Is the file open? */
+    if ((f->f_flags & _FOPEN) == 0) {
+        _errno = EINVAL;                /* File not open */
+        return -1L;
+    }
+
+    pos = lseek(f->f_fd, 0L, SEEK_CUR);
+    return pos;    /* -1 for error, comes from lseek() */
+}
+