summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fileio.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/fileio.c b/fileio.c
index 3925d7566..912e72be6 100644
--- a/fileio.c
+++ b/fileio.c
@@ -15,11 +15,11 @@
#define FIO_BUFFER_SIZE 512
typedef struct {
- byte *buffer, *buffer_end;
- uint32 pos;
- FILE *cur_fh;
- FILE *handles[64];
- byte buffer_start[512];
+ byte *buffer, *buffer_end; ///< position pointer in local buffer and last valid byte of buffer
+ uint32 pos; ///< current (system) position in file
+ FILE *cur_fh; ///< current file handle
+ FILE *handles[64]; ///< array of file handles we can have open
+ byte buffer_start[FIO_BUFFER_SIZE]; ///< local buffer when read from file
} Fio;
static Fio _fio;
@@ -34,7 +34,8 @@ void FioSeekTo(uint32 pos, int mode)
{
if (mode == SEEK_CUR) pos += FioGetPos();
_fio.buffer = _fio.buffer_end = _fio.buffer_start + FIO_BUFFER_SIZE;
- fseek(_fio.cur_fh, (_fio.pos=pos), SEEK_SET);
+ _fio.pos = pos;
+ fseek(_fio.cur_fh, _fio.pos, SEEK_SET);
}
// Seek to a file and a position
@@ -43,7 +44,7 @@ void FioSeekToFile(uint32 pos)
FILE *f = _fio.handles[pos >> 24];
assert(f != NULL);
_fio.cur_fh = f;
- FioSeekTo(pos & 0xFFFFFF, SEEK_SET);
+ FioSeekTo(GB(pos, 0, 24), SEEK_SET);
}
byte FioReadByte(void)