From 1b71d3fe425c99d95cc8614588a99cb1f7fd3eda Mon Sep 17 00:00:00 2001 From: uz Date: Thu, 3 Jun 2010 20:43:30 +0000 Subject: [PATCH] Rewrote the code to make it somewhat shorter. git-svn-id: svn://svn.cc65.org/cc65/trunk@4693 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/common/fseek.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/libsrc/common/fseek.c b/libsrc/common/fseek.c index 0fa1a525d..0616fc101 100644 --- a/libsrc/common/fseek.c +++ b/libsrc/common/fseek.c @@ -26,7 +26,7 @@ int __fastcall__ fseek (register FILE* f, long offset, int whence) /* Is the file open? */ if ((f->f_flags & _FOPEN) == 0) { - _errno = EINVAL; /* File not open */ + _seterrno (EINVAL); /* File not open */ return -1; } @@ -40,21 +40,18 @@ int __fastcall__ fseek (register FILE* f, long offset, int whence) /* Do the seek */ res = lseek(f->f_fd, offset, whence); - /* If we had an error, set the error indicator on the stream, and - * return -1. We will check for < 0 here, because that saves some code, - * and we don't have files with 2 gigabytes in size anyway:-) + /* If the seek was successful. Discard any effects of the ungetc function, + * and clear the end-of-file indicator. Otherwise set the error indicator + * on the stream, and return -1. We will check for >= 0 here, because that + * saves some code, and we don't have files with 2 gigabytes in size + * anyway:-) */ - if (res < 0) { + if (res >= 0) { + f->f_flags &= ~(_FEOF | _FPUSHBACK); + return 0; + } else { f->f_flags |= _FERROR; return -1; } - - /* The seek was successful. Discard any effects of the ungetc function, - * and clear the end-of-file indicator. - */ - f->f_flags &= ~(_FEOF | _FPUSHBACK); - - /* Done */ - return 0; } -- 2.39.5