From f756e60532bf53a9768a9ae4c4d3510b119aa719 Mon Sep 17 00:00:00 2001 From: cpg Date: Fri, 11 Aug 2000 21:53:56 +0000 Subject: [PATCH] initial check-in of file positioning stdio functions git-svn-id: svn://svn.cc65.org/cc65/trunk@275 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/common/fgetpos.c | 19 +++++++++++++++++++ libsrc/common/fseek.c | 28 ++++++++++++++++++++++++++++ libsrc/common/fsetpos.c | 15 +++++++++++++++ libsrc/common/ftell.c | 27 +++++++++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 libsrc/common/fgetpos.c create mode 100644 libsrc/common/fseek.c create mode 100644 libsrc/common/fsetpos.c create mode 100644 libsrc/common/ftell.c diff --git a/libsrc/common/fgetpos.c b/libsrc/common/fgetpos.c new file mode 100644 index 000000000..ae4b8c170 --- /dev/null +++ b/libsrc/common/fgetpos.c @@ -0,0 +1,19 @@ +/* + * fgetpos.c + * + * Christian Groessler, 07-Aug-2000 + */ + + +#include + + +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 index 000000000..b54221f89 --- /dev/null +++ b/libsrc/common/fseek.c @@ -0,0 +1,28 @@ +/* + * fseek.c + * + * Christian Groessler, 07-Aug-2000 + */ + + +#include +#include +#include +#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 index 000000000..a04185a42 --- /dev/null +++ b/libsrc/common/fsetpos.c @@ -0,0 +1,15 @@ +/* + * fsetpos.c + * + * Christian Groessler, 07-Aug-2000 + */ + + +#include + + +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 index 000000000..d345a74f4 --- /dev/null +++ b/libsrc/common/ftell.c @@ -0,0 +1,27 @@ +/* + * ftell.c + * + * Christian Groessler, 07-Aug-2000 + */ + + +#include +#include +#include +#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() */ +} +